TRX 1 year ago
parent
commit
a36137956d

+ 15 - 0
src/main/java/com/zswl/dataservice/dao/docker/AkSkConfigTimeDao.java

@@ -0,0 +1,15 @@
+package com.zswl.dataservice.dao.docker;
+
+import com.zswl.dataservice.dao.MongoDao;
+import com.zswl.dataservice.domain.docker.AkSkConfig;
+import com.zswl.dataservice.domain.docker.DockerMetaLastTime;
+
+/**
+ * @author TRX
+ * @date 2024/3/21
+ */
+public interface AkSkConfigTimeDao extends MongoDao<AkSkConfig> {
+
+    AkSkConfig findTopByAk(String ak);
+
+}

+ 20 - 0
src/main/java/com/zswl/dataservice/domain/docker/AkSkConfig.java

@@ -0,0 +1,20 @@
+package com.zswl.dataservice.domain.docker;
+
+import com.zswl.dataservice.domain.base.SuperEntity;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * @author TRX
+ * @date 2024/7/30
+ */
+@Data
+@Document
+@NoArgsConstructor
+@AllArgsConstructor
+public class AkSkConfig extends SuperEntity {
+    private String ak;
+    private String sk;
+}

+ 2 - 0
src/main/java/com/zswl/dataservice/model/docker/DockerMetaLastTimeModel.java

@@ -15,4 +15,6 @@ import lombok.NoArgsConstructor;
 public class DockerMetaLastTimeModel {
     @JsonProperty("UpdateTime")
     private Long updateTime = 0L;
+    @JsonProperty("Code")
+    private String code = "";
 }

+ 3 - 3
src/main/java/com/zswl/dataservice/service/artemis/ArtemisListenerService.java

@@ -40,14 +40,14 @@ public class ArtemisListenerService {
     @JmsListener(destination = "/v1/gateway/#", containerFactory = MQConstant.TopicListenerContainerFactory)
     @JmsListener(destination = ".v1.gateway.#", containerFactory = MQConstant.TopicListenerContainerFactory)
     public void receiveGateWayMessage(Message message) {
-        operationMessageService.handlerGateWayMessage(message);
+//        operationMessageService.handlerGateWayMessage(message);
     }
 
     // 设备来的消息
     @JmsListener(destination = "/v1/device/#", containerFactory = MQConstant.TopicListenerContainerFactory)
     @JmsListener(destination = ".v1.device.#", containerFactory = MQConstant.TopicListenerContainerFactory)
     public void receiveDeviceMessage(Message message) {
-        operationMessageService.handlerGateWayMessage(message);
+//        operationMessageService.handlerGateWayMessage(message);
     }
 
     // 终端连接的消息
@@ -64,7 +64,7 @@ public class ArtemisListenerService {
             String clientId = message.getStringProperty("_AMQ_LVQ_NAME");
             log.info("receiveMessage {} 消息监听clientId: {}", messageId, clientId);
             log.info("Topic: {}", topicName);
-            Enumeration enumeration =message.getPropertyNames();
+            Enumeration enumeration = message.getPropertyNames();
             if (message instanceof ActiveMQBuffer) {
                 log.info("---------------------");
             }

+ 51 - 2
src/main/java/com/zswl/dataservice/service/docker/DockerMetaService.java

@@ -2,6 +2,7 @@ package com.zswl.dataservice.service.docker;
 
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
+import com.zswl.dataservice.dao.docker.AkSkConfigTimeDao;
 import com.zswl.dataservice.dao.docker.DockerMetaDao;
 import com.zswl.dataservice.dao.docker.DockerMetaLastTimeDao;
 import com.zswl.dataservice.dataConfig.ResultMessage;
@@ -11,9 +12,11 @@ import com.zswl.dataservice.model.docker.*;
 import com.zswl.dataservice.model.mqtt.DeviceInfoModel;
 import com.zswl.dataservice.model.mqtt.DeviceInfoSearchParam;
 import com.zswl.dataservice.service.base.SuperService;
+import com.zswl.dataservice.utils.SecurityUtil;
 import com.zswl.dataservice.utils.bean.BeanUtils;
 import com.zswl.dataservice.utils.page.PageEntityUtil;
 import com.zswl.dataservice.utils.result.ResultContent;
+import jakarta.servlet.http.HttpServletRequest;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -23,8 +26,8 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 
-import java.util.ArrayList;
-import java.util.List;
+import javax.crypto.Mac;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -41,6 +44,12 @@ public class DockerMetaService extends SuperService {
     @Autowired
     private DockerMetaLastTimeDao dockerMetaLastTimeDao;
 
+    @Autowired
+    HttpServletRequest request;
+
+    @Autowired
+    private AkSkConfigTimeDao akSkConfigTimeDao;
+
     /**
      * 添加docker元数据
      *
@@ -127,9 +136,44 @@ public class DockerMetaService extends SuperService {
         return ResultContent.buildSuccess();
     }
 
+    /**
+     * 验证签名
+     *
+     * @return
+     */
+    public boolean verifySign() {
+        boolean b = false;
+        String ak = request.getHeader("db-ak");
+        AkSkConfig akSkConfig = akSkConfigTimeDao.findTopByAk(ak);
+        if (ObjectUtils.isNotEmpty(akSkConfig)) {
+            String sk = akSkConfig.getSk();
+            if (StringUtils.isNotEmpty(sk)) {
+                String dbSign = request.getHeader("db-sign");
+                String time = request.getHeader("db-time");
+                String input = String.format("%s%s%s", ak, time, sk);
+                String sign = SecurityUtil.getMD5Str(input).toLowerCase();
+                if (StringUtils.isNotEmpty(dbSign) && dbSign.equals(sign)) {
+                    b = true;
+                }
+            }
+        } else {
+            akSkConfig = new AkSkConfig();
+            akSkConfig.setAk(ak);
+            akSkConfig.setSk("");
+            akSkConfigTimeDao.save(akSkConfig);
+        }
+        return b;
+    }
+
     public DockerMetaLastTimeModel getVersion() {
         DockerMetaLastTimeModel model = new DockerMetaLastTimeModel();
         String groupCode = getHeader("groupCode");
+        boolean b = verifySign();
+        if (!b) {
+            model.setUpdateTime(0L);
+            model.setCode("1000");
+            return model;
+        }
         DockerMetaLastTime lastTime = dockerMetaLastTimeDao.findTopByGroupCode(groupCode);
         if (ObjectUtils.isNotEmpty(lastTime)) {
             model.setUpdateTime(lastTime.getLastTime());
@@ -139,6 +183,11 @@ public class DockerMetaService extends SuperService {
 
     public List<JSONObject> getList() {
         List<JSONObject> list = new ArrayList<>();
+        boolean b = verifySign();
+        if (!b) {
+            return list;
+        }
+
         String groupCode = getHeader("groupCode");
         if (StringUtils.isNotEmpty(groupCode)) {
             List<DockerMeta> datas = dockerMetaDao.findByGroupCodeOrderByUpdateTimeDesc(groupCode);