Selaa lähdekoodia

feat: minio配置https

weijianghai 2 vuotta sitten
vanhempi
commit
06a14cbb0e

+ 54 - 0
src/main/java/com/nokia/config/HttpClientConfig.java

@@ -0,0 +1,54 @@
+package com.nokia.config;
+
+import okhttp3.OkHttpClient;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.net.ssl.*;
+import java.security.*;
+import java.security.cert.X509Certificate;
+
+/**
+ * OKHttpClient配置
+ */
+@Configuration
+public class HttpClientConfig {
+    @Bean
+    public OkHttpClient myHttpClient() throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException {
+        return new OkHttpClient.Builder()
+                .hostnameVerifier((hostname, session) -> true)
+                .retryOnConnectionFailure(true)
+                .sslSocketFactory(getSslSocketFactory(), getX509TrustManager())
+                .build();
+    }
+
+    private SSLSocketFactory getSslSocketFactory() throws KeyManagementException, NoSuchAlgorithmException {
+        SSLContext sslContext = SSLContext.getInstance("SSL");
+        sslContext.init(null, new TrustManager[]{
+                new X509TrustManager() {
+                    @Override
+                    public void checkClientTrusted(X509Certificate[] chain, String authType) {
+                        // 不检查证书
+                    }
+
+                    @Override
+                    public void checkServerTrusted(X509Certificate[] chain, String authType) {
+                        // 不检查证书
+                    }
+
+                    @Override
+                    public X509Certificate[] getAcceptedIssuers() {
+                        return new X509Certificate[]{};
+                    }
+                }
+        }, new SecureRandom());
+        return sslContext.getSocketFactory();
+    }
+
+    private X509TrustManager getX509TrustManager() throws NoSuchAlgorithmException, KeyStoreException {
+        TrustManagerFactory factory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+        factory.init((KeyStore) null);
+        TrustManager[] managers = factory.getTrustManagers();
+        return (X509TrustManager) managers[0];
+    }
+}

+ 7 - 2
src/main/java/com/nokia/config/MinioConfig.java

@@ -2,6 +2,7 @@ package com.nokia.config;
 
 import io.minio.MinioClient;
 import lombok.Data;
+import okhttp3.OkHttpClient;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -36,7 +37,11 @@ public class MinioConfig {
     private Integer expiry;
 
     @Bean
-    public MinioClient minioClient() {
-        return MinioClient.builder().endpoint(endpoint).credentials(accessKey, secretKey).build();
+    public MinioClient minioClient(OkHttpClient myHttpClient) {
+        return MinioClient.builder()
+                .endpoint(endpoint)
+                .credentials(accessKey, secretKey)
+                .httpClient(myHttpClient)
+                .build();
     }
 }

+ 8 - 2
src/main/java/com/nokia/service/LogService.java

@@ -1,6 +1,7 @@
 package com.nokia.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.ImmutableMap;
 import com.nokia.common.R;
 import com.nokia.common.exception.MyRuntimeException;
 import com.nokia.dao.OperationLogDao;
@@ -23,9 +24,14 @@ import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.temporal.TemporalAdjusters;
 import java.util.List;
+import java.util.Map;
 
 @Service
 public class LogService {
+    /**
+     * 临时文件标签,1天后自动删除
+     */
+    private static final Map<String, String> TAGS = ImmutableMap.of("tmp", "1");
     private final OperationLogDao operationLogDao;
     private final VerificationLogDao verificationLogDao;
     private final UserService userService;
@@ -80,7 +86,7 @@ public class LogService {
             byte[] bytes = os.toByteArray();
             long objectSize = bytes.length;
             // 保存文件
-            fileService.putObject(object, new ByteArrayInputStream(bytes), objectSize);
+            fileService.putObject(object, new ByteArrayInputStream(bytes), objectSize, TAGS);
             // 生成下载链接
             String url = fileService.getDownloadUrl(object);
             // 记录操作日志
@@ -142,7 +148,7 @@ public class LogService {
             byte[] bytes = os.toByteArray();
             long objectSize = bytes.length;
             // 保存文件
-            fileService.putObject(object, new ByteArrayInputStream(bytes), objectSize);
+            fileService.putObject(object, new ByteArrayInputStream(bytes), objectSize, TAGS);
             // 生成下载链接
             String url = fileService.getDownloadUrl(object);
             // 记录操作日志

+ 13 - 1
src/main/java/com/nokia/service/file/FileService.java

@@ -54,7 +54,19 @@ public interface FileService {
      * @param object     对象名称
      * @param stream     流
      * @param objectSize 对象大小
+     * @param tags       标签
      * @return {@link Map}<{@link String}, {@link Object}>
      */
-    Map<String, Object> putObject(String object, InputStream stream, long objectSize);
+    Map<String, Object> putObject(String object, InputStream stream, long objectSize, Map<String, String> tags);
+    /**
+     * 从流中上传数据到对象
+     *
+     * @param object     对象名称
+     * @param stream     流
+     * @param objectSize 对象大小
+     * @return {@link Map}<{@link String}, {@link Object}>
+     */
+    default Map<String, Object> putObject(String object, InputStream stream, long objectSize) {
+        return putObject(object, stream, objectSize, null);
+    }
 }

+ 2 - 1
src/main/java/com/nokia/service/file/MinioServiceImpl.java

@@ -77,12 +77,13 @@ public class MinioServiceImpl implements FileService {
      * @return {@link Map}<{@link String}, {@link Object}>
      */
     @Override
-    public Map<String, Object> putObject(String object, InputStream stream, long objectSize) {
+    public Map<String, Object> putObject(String object, InputStream stream, long objectSize, Map<String, String> tags) {
         try {
             ObjectWriteResponse response = minioClient.putObject(PutObjectArgs.builder()
                     .bucket(minioConfig.getBucket())
                     .object(object)
                     .stream(stream, objectSize, -1)
+                    .tags(tags)
                     .build());
             Map<String, Object> map = new HashMap<>();
             map.put("object", response.object());

+ 1 - 1
src/main/resources/application-test.properties

@@ -18,7 +18,7 @@ spring.redis.database=10
 spring.redis.password=Richr00t
 redis.timeoutSeconds=600
 # minio配置
-minio.endpoint=http://192.168.50.3:19000
+minio.endpoint=https://192.168.50.3:29000
 minio.bucket=acl-tousu-test
 minio.accessKey=QBZSEFMteKaz69Sh
 minio.secretKey=6hNzjymqo3PCX7oQRQ8ESGePzK3b52Dc