AliOssConfig.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386
  1. package com.tzld.piaoquan.api.config;
  2. import com.aliyun.oss.ClientConfiguration;
  3. import com.aliyun.oss.OSSClient;
  4. import com.aliyuncs.DefaultAcsClient;
  5. import com.aliyuncs.IAcsClient;
  6. import com.aliyuncs.profile.DefaultProfile;
  7. import com.tzld.piaoquan.api.util.AliOssFileTool;
  8. import com.tzld.piaoquan.api.util.PropertiesUtils;
  9. import com.tzld.piaoquan.api.model.vo.PolicyDetailVO;
  10. import org.apache.commons.lang.StringUtils;
  11. import org.apache.log4j.Logger;
  12. import org.springframework.beans.factory.annotation.Value;
  13. import org.springframework.context.annotation.Configuration;
  14. import javax.annotation.PostConstruct;
  15. import java.util.ArrayList;
  16. import java.util.HashMap;
  17. import java.util.List;
  18. /**
  19. * @author zhaoyuchun
  20. */
  21. @Configuration
  22. public class AliOssConfig {
  23. /** 图片服务域名 **/
  24. // public String picEndPoint;
  25. /** 对象存储域名 **/
  26. private static String ossEndPoint;
  27. /** 阿里云accesskeyId **/
  28. private static String accessKeyId;
  29. /** 过期时间,单位秒 **/
  30. private static long expiration;
  31. /** 阿里云accessKeySecret **/
  32. private static String accessKeySecret;
  33. /** 文件系统配置文件地址 **/
  34. public String configPath;
  35. private static Boolean needPress;
  36. private static String projectName;
  37. private static String videoEndPoint;
  38. private static String internalEndPoint;
  39. private static OSSClient ossClient;
  40. private static OSSClient priClient;
  41. private static OSSClient videoClient;
  42. private static OSSClient internalOssClient;
  43. private static String snapshotLocation;
  44. private static OSSClient ossReadOnlyClient;
  45. private static IAcsClient mAcsClient;
  46. private static DefaultAcsClient defaultAcsClient;
  47. public static final String PIPELINEID = "abe6a0b9b9334858913eb416974485d2";
  48. public static final String MTS_REGION = "cn-hangzhou";
  49. public static final String OSS_REGION = "oss-cn-hangzhou";
  50. private static PolicyDetailVO policyDetail;
  51. static {
  52. policyDetail = new PolicyDetailVO();
  53. policyDetail.setVersion("1");
  54. List<PolicyDetailVO.PolicyVO> statement = new ArrayList<PolicyDetailVO.PolicyVO>();
  55. PolicyDetailVO.PolicyVO policy = new PolicyDetailVO.PolicyVO();
  56. List<String> action = new ArrayList<String>();
  57. List<String> resource = new ArrayList<String>();
  58. action.add("oss:PutObject");
  59. action.add("oss:AbortMultipartUpload");
  60. action.add("oss:ListParts");
  61. action.add("oss:AbortMultipartUpload");
  62. action.add("oss:ListObjects");
  63. resource.add("*");
  64. policy.setEffect("Allow");
  65. policy.setAction(action);
  66. policy.setResource(resource);
  67. statement.add(policy);
  68. policyDetail.setStatement(statement);
  69. }
  70. public static OSSClient getVideoClient() {
  71. return videoClient;
  72. }
  73. public void setVideoClient(OSSClient videoClient) {
  74. AliOssConfig.videoClient = videoClient;
  75. }
  76. public static String cdnDomain;
  77. public static String imgDomain;
  78. public static String videoDomain;
  79. public static String uploadDomain;
  80. public static String lvvideoDomain;
  81. public static String pubBucket;
  82. public static String priBucket;
  83. public static String priEndPoint;
  84. public static HashMap<String, String> bucketes = new HashMap<String, String>();
  85. private static Logger logger = Logger.getLogger(AliOssFileTool.class);
  86. public static String SUFFIX = "https://";
  87. private String tmpStr;
  88. @PostConstruct
  89. public void init() throws Exception {
  90. logger.info("初始化oss参数");
  91. try {
  92. setOssEndPoint(ossEndPoint);
  93. setProjectName(projectName);
  94. setExpiration(Long.valueOf(expiration));
  95. setVideoEndPoint(videoEndPoint);
  96. setAccessKeyId(accessKeyId);
  97. setAccessKeySecret(accessKeySecret);
  98. setCdnDomain(cdnDomain);
  99. setImgDomain(imgDomain);
  100. setVideoDomain(videoDomain);
  101. setUploadDomain(uploadDomain);
  102. setInternalEndPoint(internalEndPoint);
  103. setPubBucket(pubBucket);
  104. try{
  105. String[] buckets = pubBucket.split(",");
  106. for (String bucket : buckets) {
  107. String[] bucketParms = bucket.split(":");
  108. String bucketKey = bucketParms[0];
  109. String bucketName = bucketParms[1];
  110. AliOssConfig.bucketes.put(bucketKey, bucketName);
  111. }
  112. }catch(Exception e){
  113. e.printStackTrace();
  114. }
  115. setPriBucket(priBucket);
  116. String[] buckets = priBucket.split(",");
  117. for (String bucket : buckets) {
  118. String[] bucketParms = bucket.split(":");
  119. String bucketKey = bucketParms[0];
  120. String bucketName = bucketParms[1];
  121. AliOssConfig.bucketes.put(bucketKey, bucketName);
  122. }
  123. setNeedPress(needPress);
  124. setLvvideoDomain(lvvideoDomain);
  125. setpriEndPoint(priEndPoint);
  126. setSnapshotLocation("");
  127. setOssClient(new OSSClient(SUFFIX + ossEndPoint, accessKeyId, accessKeySecret));
  128. setInternalOssClient(new OSSClient(SUFFIX + internalEndPoint, accessKeyId, accessKeySecret));
  129. setPriClient(new OSSClient(SUFFIX + priEndPoint, accessKeyId, accessKeySecret));
  130. setVideoClient(new OSSClient(SUFFIX + videoEndPoint, accessKeyId, accessKeySecret));
  131. DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
  132. setDefaultAcsClient(new DefaultAcsClient(profile));
  133. } catch (Exception e) {
  134. logger.error("配置文件读取失败");
  135. throw e;
  136. }
  137. }
  138. @Value("${oss.growth.priEndPoint}")
  139. public void setpriEndPoint(String priEndPoint) {
  140. AliOssConfig.priEndPoint = priEndPoint;
  141. }
  142. public static OSSClient getOssReadOnlyClient() {
  143. if (AliOssConfig.ossReadOnlyClient == null) {
  144. ClientConfiguration conf = new ClientConfiguration();
  145. // 设置OSSClient允许打开的最大HTTP连接数,默认为1024个。
  146. conf.setMaxConnections(500);
  147. // 设置Socket层传输数据的超时时间,默认为50000毫秒。
  148. conf.setSocketTimeout(40000);
  149. // 设置建立连接的超时时间,默认为50000毫秒。
  150. conf.setConnectionTimeout(10000);
  151. // 设置从连接池中获取连接的超时时间(单位:毫秒),默认不超时。
  152. conf.setConnectionRequestTimeout(1000);
  153. // 设置连接空闲超时时间。超时则关闭连接,默认为60000毫秒。
  154. conf.setIdleConnectionTime(10000);
  155. // 设置失败请求重试次数,默认为3次。
  156. conf.setMaxErrorRetry(5);
  157. AliOssConfig.ossReadOnlyClient = new OSSClient(SUFFIX + getOssEndPoint(),
  158. PropertiesUtils.getReadOnlyAccessKeyId(),
  159. PropertiesUtils.getReadOnlyAccessKeySecret(),
  160. conf );
  161. }
  162. return AliOssConfig.ossReadOnlyClient;
  163. }
  164. @Value("${oss.growth.internal.endPoint}")
  165. public void setInternalEndPoint(String internalEndPoint) {
  166. AliOssConfig.internalEndPoint = internalEndPoint;
  167. }
  168. public static String getInternalEndPoint() {
  169. return internalEndPoint;
  170. }
  171. public static String getBucket(String key) {
  172. String bucket = AliOssConfig.bucketes.get(key);
  173. if (StringUtils.isEmpty(bucket)) {
  174. logger.error(String.format("bucket key[%s]不存在", key));
  175. }
  176. return bucket;
  177. }
  178. public static String getSnapshotLocation() {
  179. return snapshotLocation;
  180. }
  181. public void setSnapshotLocation(String snapshotLocation ) {
  182. AliOssConfig.snapshotLocation = snapshotLocation;
  183. }
  184. public static String getProjectName() {
  185. return projectName;
  186. }
  187. @Value("${oss.growth.projectName}")
  188. public void setProjectName(String projectName) {
  189. AliOssConfig.projectName = projectName;
  190. }
  191. public static OSSClient getOssClient() {
  192. return ossClient;
  193. }
  194. public void setOssClient(OSSClient ossClient) {
  195. AliOssConfig.ossClient = ossClient;
  196. }
  197. public static OSSClient getInternalOssClient() {
  198. return internalOssClient;
  199. }
  200. public void setInternalOssClient(OSSClient internalOssClient) {
  201. AliOssConfig.internalOssClient = internalOssClient;
  202. }
  203. public static String getOssEndPoint() {
  204. return ossEndPoint;
  205. }
  206. @Value("${oss.growth.ossEndPoint}")
  207. public void setOssEndPoint(String ossEndPoint) {
  208. AliOssConfig.ossEndPoint = ossEndPoint;
  209. }
  210. public static String getAccessKeyId() {
  211. return accessKeyId;
  212. }
  213. @Value("${oss.growth.accessKey}")
  214. public void setAccessKeyId(String accessKeyId) {
  215. AliOssConfig.accessKeyId = accessKeyId;
  216. }
  217. public static String getAccessKeySecret() {
  218. return accessKeySecret;
  219. }
  220. @Value("${oss.growth.secretKey}")
  221. public void setAccessKeySecret(String accessKeySecret) {
  222. AliOssConfig.accessKeySecret = accessKeySecret;
  223. }
  224. public String getConfigPath() {
  225. return configPath;
  226. }
  227. public void setConfigPath(String configPath) {
  228. this.configPath = configPath;
  229. }
  230. public static String getCdnDomain() {
  231. return cdnDomain;
  232. }
  233. @Value("${oss.growth.cdnDomain}")
  234. public void setCdnDomain(String cdnDomain) {
  235. AliOssConfig.cdnDomain = cdnDomain;
  236. }
  237. public static String getImgDomain() {
  238. return imgDomain;
  239. }
  240. @Value("${oss.growth.imgDomain}")
  241. public void setImgDomain(String imgDomain) {
  242. AliOssConfig.imgDomain = imgDomain;
  243. }
  244. @Value("${oss.growth.pubBucket}")
  245. public void setPubBucket(String pubBucket) {
  246. AliOssConfig.pubBucket = pubBucket;
  247. }
  248. @Value("${oss.growth.priBucket}")
  249. public void setPriBucket(String priBucket) {
  250. AliOssConfig.priBucket = priBucket;
  251. }
  252. public static HashMap<String, String> getBucketes() {
  253. return bucketes;
  254. }
  255. public void setBucketes(HashMap<String, String> bucketes) {
  256. AliOssConfig.bucketes = bucketes;
  257. }
  258. public static Boolean getNeedPress() {
  259. return needPress;
  260. }
  261. @Value("${oss.growth.needPress}")
  262. public void setNeedPress(Boolean needPress) {
  263. AliOssConfig.needPress = needPress;
  264. }
  265. public static String getVideoDomain() {
  266. return videoDomain;
  267. }
  268. @Value("${oss.growth.videoDomain}")
  269. public void setVideoDomain(String videoDomain) {
  270. AliOssConfig.videoDomain = videoDomain;
  271. }
  272. public static String getVideoEndPoint() {
  273. return videoEndPoint;
  274. }
  275. @Value("${oss.growth.videoEndPoint}")
  276. public void setVideoEndPoint(String videoEndPoint) {
  277. AliOssConfig.videoEndPoint = videoEndPoint;
  278. }
  279. public static long getExpiration() {
  280. return expiration;
  281. }
  282. @Value("${oss.growth.expiration}")
  283. public void setExpiration(long expiration) {
  284. AliOssConfig.expiration = expiration;
  285. }
  286. public static String getUploadDomain() {
  287. return uploadDomain;
  288. }
  289. @Value("${cdn.upload.domain}")
  290. public void setUploadDomain(String uploadDomain) {
  291. AliOssConfig.uploadDomain = uploadDomain;
  292. }
  293. public static PolicyDetailVO getPolicyDetail() {
  294. return policyDetail;
  295. }
  296. public void setPolicyDetail(PolicyDetailVO policyDetail) {
  297. AliOssConfig.policyDetail = policyDetail;
  298. }
  299. public static OSSClient getPriClient() {
  300. return priClient;
  301. }
  302. public void setPriClient(OSSClient priClient) {
  303. AliOssConfig.priClient = priClient;
  304. }
  305. public static DefaultAcsClient getDefaultAcsClient() {
  306. return defaultAcsClient;
  307. }
  308. public void setDefaultAcsClient(DefaultAcsClient defaultAcsClient) {
  309. AliOssConfig.defaultAcsClient = defaultAcsClient;
  310. }
  311. public static String getLvvideoDomain() {
  312. return lvvideoDomain;
  313. }
  314. @Value("${oss.growth.lvvideoDomain}")
  315. public void setLvvideoDomain(String lvvideoDomain) {
  316. AliOssConfig.lvvideoDomain = lvvideoDomain;
  317. }
  318. public static OSSClient getShangHaiInternalOssClient() {
  319. return new OSSClient(SUFFIX + "oss-cn-shanghai.aliyuncs.com", accessKeyId, accessKeySecret);
  320. }
  321. public static IAcsClient getIAcsClient() {
  322. if (AliOssConfig.mAcsClient == null) {
  323. DefaultProfile profile = DefaultProfile.getProfile(getMpsRegionId(), // 地域ID
  324. getAccessKeyId(), // RAM账号的AccessKey ID
  325. getAccessKeySecret()); // RAM账号Access Key Secret
  326. mAcsClient = new DefaultAcsClient(profile);
  327. }
  328. return AliOssConfig.mAcsClient;
  329. }
  330. public static String getMpsRegionId() {
  331. return PropertiesUtils.getValue("oss.longvideo.transcode.mpsRegionId");
  332. }
  333. }