Răsfoiți Sursa

oss违规检测

xiongzhu 3 ani în urmă
părinte
comite
b753cbfca9

+ 25 - 0
pom.xml

@@ -426,6 +426,31 @@
             <version>2.2.2</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>cdn20180510</artifactId>
+            <version>1.0.9</version>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>tea-openapi</artifactId>
+            <version>0.2.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>tea-console</artifactId>
+            <version>0.0.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>tea-util</artifactId>
+            <version>0.2.13</version>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>tea</artifactId>
+            <version>1.1.14</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 27 - 0
src/main/java/com/izouma/nineth/config/AliyunConfig.java

@@ -0,0 +1,27 @@
+package com.izouma.nineth.config;
+
+import com.aliyun.cdn20180510.Client;
+import com.aliyun.oss.OSSClient;
+import com.aliyun.teaopenapi.models.Config;
+import lombok.AllArgsConstructor;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Component;
+
+@AllArgsConstructor
+@Configuration
+@EnableConfigurationProperties(AliyunProperties.class)
+public class AliyunConfig {
+
+    private AliyunProperties aliyunProperties;
+
+    @Bean
+    public Client cdnClient() throws Exception {
+        Config config = new Config()
+                .setAccessKeyId(aliyunProperties.getAccessKeyId())
+                .setAccessKeySecret(aliyunProperties.getAccessKeySecret());
+        config.endpoint = "cdn.aliyuncs.com";
+        return new Client(config);
+    }
+}

+ 14 - 0
src/main/java/com/izouma/nineth/config/AliyunProperties.java

@@ -0,0 +1,14 @@
+package com.izouma.nineth.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+@Data
+@ConfigurationProperties(prefix = "aliyun")
+public class AliyunProperties {
+    private String accessKeyId;
+    private String accessKeySecret;
+    private String ossBucketName;
+    private String ossEndPoint;
+    private String ossDomain;
+}

+ 6 - 10
src/main/java/com/izouma/nineth/service/storage/AliStorageService.java

@@ -2,6 +2,7 @@ package com.izouma.nineth.service.storage;
 
 import com.aliyun.oss.OSSClient;
 import com.aliyun.oss.model.ObjectMetadata;
+import com.izouma.nineth.config.AliyunProperties;
 import com.izouma.nineth.exception.BusinessException;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
@@ -17,15 +18,9 @@ import java.net.URL;
 @Data
 @Service
 @Slf4j
-@EnableConfigurationProperties
-@ConfigurationProperties(prefix = "aliyun")
 @ConditionalOnProperty(name = "storage.provider", havingValue = "aliyun")
 public class AliStorageService implements StorageService {
-    private String accessKeyId;
-    private String accessKeySecret;
-    private String ossBucketName;
-    private String ossEndPoint;
-    private String ossDomain;
+    private AliyunProperties aliyunProperties;
 
     @Override
     public String uploadFromInputStream(InputStream inputStream, String path) {
@@ -55,16 +50,17 @@ public class AliStorageService implements StorageService {
     }
 
     private String upload(InputStream inputStream, String path) {
-        OSSClient client = new OSSClient(ossEndPoint, accessKeyId, accessKeySecret);
+        OSSClient client = new OSSClient(aliyunProperties.getOssEndPoint(), aliyunProperties.getAccessKeyId(),
+                aliyunProperties.getAccessKeySecret());
         ObjectMetadata metadata = new ObjectMetadata();
-        client.putObject(ossBucketName, path, inputStream, metadata);
+        client.putObject(aliyunProperties.getOssBucketName(), path, inputStream, metadata);
         client.shutdown();
         try {
             inputStream.close();
         } catch (IOException e) {
             e.printStackTrace();
         }
-        return ossDomain + "/" + path;
+        return aliyunProperties.getOssDomain() + "/" + path;
     }
 
 }

+ 16 - 2
src/main/java/com/izouma/nineth/web/OSSAuditController.java

@@ -1,16 +1,30 @@
 package com.izouma.nineth.web;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.aliyun.cdn20180510.Client;
+import com.aliyun.cdn20180510.models.RefreshObjectCachesRequest;
+import com.aliyun.cdn20180510.models.RefreshObjectCachesResponse;
+import com.aliyun.teaopenapi.models.Config;
+import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 @RestController
 @Slf4j
+@AllArgsConstructor
 public class OSSAuditController {
 
+    private Client cdnClient;
+
     @PostMapping("/ossNotify")
-    public String ossNotify(String checksum, String content) {
-        log.info("oss违规检测通知, checksum={}, content={}", checksum, content);
+    public String ossNotify(String checksum, String content) throws Exception {
+        JSONObject jsonObject = JSON.parseObject(content);
+        RefreshObjectCachesRequest refreshObjectCachesRequest = new RefreshObjectCachesRequest();
+        refreshObjectCachesRequest.setObjectPath("cdn.raex.vip/" + jsonObject.getString("object"));
+        RefreshObjectCachesResponse resp = cdnClient.refreshObjectCaches(refreshObjectCachesRequest);
+        log.info(JSON.toJSONString(resp, true));
         return "ok";
     }
 }

+ 24 - 0
src/test/java/com/izouma/nineth/CDNTest.java

@@ -0,0 +1,24 @@
+package com.izouma.nineth;
+
+
+import com.alibaba.fastjson.JSON;
+import com.aliyun.cdn20180510.Client;
+import com.aliyun.cdn20180510.models.RefreshObjectCachesRequest;
+import com.aliyun.cdn20180510.models.RefreshObjectCachesResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+@Slf4j
+public class CDNTest extends ApplicationTests {
+    @Autowired
+    private Client cdnClient;
+
+    @Test
+    public void testCdnRefresh() throws Exception {
+        RefreshObjectCachesRequest refreshObjectCachesRequest = new RefreshObjectCachesRequest();
+        refreshObjectCachesRequest.setObjectPath("cdn.raex.vip/user/avatar/2022-04-27-16-37-09dvFjvMgW.jpg");
+        RefreshObjectCachesResponse resp = cdnClient.refreshObjectCaches(refreshObjectCachesRequest);
+        log.info(JSON.toJSONString(resp, true));
+    }
+}