From 6cfe7b4094c1babbedfd6332e9f759c091beaae6 Mon Sep 17 00:00:00 2001
From: vince <757871790@qq.com>
Date: 星期三, 15 十一月 2023 13:01:18 +0800
Subject: [PATCH] 增加授权

---
 src/main/java/com/fzzy/web/HomeController.java                          |   10 +
 src/main/java/com/fzzy/web/ServerInfoAction.java                        |   55 +++++++++++
 src/main/java/com/fzzy/conf/WebMvcConfig.java                           |   19 +++
 src/main/java/com/fzzy/gateway/hx2023/controller/GatewayController.java |    3 
 src/main/resources/dorado-home/context.xml                              |    2 
 pom.xml                                                                 |   20 +++
 src/main/java/com/fzzy/conf/LicenseHandlerAdepter.java                  |   51 ++++++++++
 src/main/resources/application-devGatewayCommon.yml                     |   84 ++++++++++++++++
 src/main/resources/templates/no-license.html                            |   20 ++++
 9 files changed, 259 insertions(+), 5 deletions(-)

diff --git a/pom.xml b/pom.xml
index 07b8061..5deaec3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -293,8 +293,19 @@
 			<scope>system</scope>
 			<systemPath>${project.basedir}/src/main/resources/lib/SM2Crypto-1.0.jar</systemPath>
 		</dependency>
-
-
+		<!--        license 寮曞叆-->
+		<dependency>
+			<groupId>com.ld.license</groupId>
+			<artifactId>license-cli</artifactId>
+			<version>3.0.0-RELEASE</version>
+			<scope>system</scope>
+			<systemPath>${project.basedir}/src/main/resources/lib/license-cli-3.0.0-RELEASE.jar</systemPath>
+		</dependency>
+		<dependency>
+			<groupId>de.schlichtherle.truelicense</groupId>
+			<artifactId>truelicense-core</artifactId>
+			<version>1.33</version>
+		</dependency>
 		<!--骞夸笢鐪佸钩鍙板鎺� -->
 		<dependency>
 			<groupId>org.apache.cxf</groupId>
@@ -326,6 +337,11 @@
 			<artifactId>cxf-rt-ws-policy</artifactId>
 			<version>3.2.2</version>
 		</dependency>
+		<dependency>
+			<groupId>org.apache.commons</groupId>
+			<artifactId>commons-lang3</artifactId>
+			<version>3.9</version>
+		</dependency>
 
 		<!-- <dependency> -->
 		<!-- <groupId>org.apache.cxf</groupId> -->
diff --git a/src/main/java/com/fzzy/conf/LicenseHandlerAdepter.java b/src/main/java/com/fzzy/conf/LicenseHandlerAdepter.java
new file mode 100644
index 0000000..8bf14a0
--- /dev/null
+++ b/src/main/java/com/fzzy/conf/LicenseHandlerAdepter.java
@@ -0,0 +1,51 @@
+package com.fzzy.conf;
+
+import com.ld.license.LicenseVerify;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @author vince
+ *  楠岃瘉绯荤粺鎺堟潈 鍦╓ebMvcConfig涓厤缃叾鎷︽埅鐨勮矾寰�
+ * @date 2019/4/26 0026
+ **/
+@Slf4j
+public class LicenseHandlerAdepter implements HandlerInterceptor {
+
+    @Override
+    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
+            throws Exception {
+    }
+
+    @Override
+    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
+            throws Exception {
+    }
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {
+        try{
+            LicenseVerify licenseVerify = new LicenseVerify();
+            //鏍¢獙璇佷功鏄惁鏈夋晥
+            boolean verifyResult = licenseVerify.verify();
+
+            if(verifyResult){
+                return true;
+            }else{
+                response.setCharacterEncoding("utf-8");
+                response.sendRedirect("no-license");
+                log.error("璇佷功楠岃瘉澶辫触!鎷掔粷璁块棶");
+                return false;
+            }
+        }catch (Exception e){
+            log.error("璇佷功楠岃瘉澶辫触:" + e.getMessage(),e);
+            response.sendRedirect("./no-license");
+            return false;
+        }
+
+    }
+}
diff --git a/src/main/java/com/fzzy/conf/WebMvcConfig.java b/src/main/java/com/fzzy/conf/WebMvcConfig.java
index d417ba8..d0acfc7 100644
--- a/src/main/java/com/fzzy/conf/WebMvcConfig.java
+++ b/src/main/java/com/fzzy/conf/WebMvcConfig.java
@@ -54,4 +54,23 @@
                 .allowedHeaders("*")
                 .maxAge(3600);
     }
+    /**
+     * 鎷︽埅鍣ㄩ厤缃�
+     * license 璇锋眰鎷︽埅
+     *
+     * 璋冩暣鎷︽埅鐧婚檰椤甸潰锛屽叾浠栭〉闈笉鍦ㄦ嫤鎴�
+     *
+     * @param registry
+     */
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+//        registry.addInterceptor(new LicenseHandlerAdepter())
+//                .addPathPatterns("/index")
+//                .addPathPatterns("/index-gateway")
+//                .addPathPatterns("/databoard/*");
+
+        registry.addInterceptor(new LicenseHandlerAdepter())
+                .addPathPatterns("/home");
+
+    }
 }
diff --git a/src/main/java/com/fzzy/gateway/hx2023/controller/GatewayController.java b/src/main/java/com/fzzy/gateway/hx2023/controller/GatewayController.java
index 20cdbc2..9919675 100644
--- a/src/main/java/com/fzzy/gateway/hx2023/controller/GatewayController.java
+++ b/src/main/java/com/fzzy/gateway/hx2023/controller/GatewayController.java
@@ -13,6 +13,7 @@
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.UUID;
 
 /**
  *
@@ -71,7 +72,7 @@
         }
 
 
-        String token = "fzzy-" + gatewayId;
+        String token = "fzzy-" + UUID.randomUUID();
 
         log.debug("============閴存潈==========={}--{}--{}", data.getUsername(), data.getPassword(), token);
 
diff --git a/src/main/java/com/fzzy/web/HomeController.java b/src/main/java/com/fzzy/web/HomeController.java
index eaeda78..da762f6 100644
--- a/src/main/java/com/fzzy/web/HomeController.java
+++ b/src/main/java/com/fzzy/web/HomeController.java
@@ -60,5 +60,13 @@
         view.setViewName("home/home-whjl");
         return view;
     }
-
+    /**
+     * 娌℃湁鎺堟潈椤甸潰
+     *
+     * @return
+     */
+    @RequestMapping("/no-license")
+    public String noLicense() {
+        return "no-license";
+    }
 }
diff --git a/src/main/java/com/fzzy/web/ServerInfoAction.java b/src/main/java/com/fzzy/web/ServerInfoAction.java
new file mode 100644
index 0000000..eff89d9
--- /dev/null
+++ b/src/main/java/com/fzzy/web/ServerInfoAction.java
@@ -0,0 +1,55 @@
+package com.fzzy.web;
+
+import com.alibaba.fastjson.JSON;
+import com.ld.license.LicenseCheckModel;
+import com.ld.license.utils.AbstractServerInfos;
+import com.ld.license.utils.LinuxServerInfos;
+import com.ld.license.utils.WindowsServerInfos;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+/**
+ * 娴嬭瘯Action鎺ュ彛锛屾敮鎸佸尶鍚嶈闂�
+ * 鏂逛綅璺緞锛歨ttp://127.0.0.1:8080/igds/serverInfo.action?osName=windows
+ */
+@Controller
+@RequestMapping
+public class ServerInfoAction  {
+
+    @RequestMapping("/serverInfo")
+    public @ResponseBody  String serverInfo(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        String osName = request.getParameter("osName");
+        // 鎿嶄綔绯荤粺绫诲瀷
+        if (StringUtils.isEmpty(osName)) {
+            osName = "windows";
+        }
+        osName = osName.toLowerCase();
+
+        AbstractServerInfos abstractServerInfos = null;
+
+        // 鏍规嵁涓嶅悓鎿嶄綔绯荤粺绫诲瀷閫夋嫨涓嶅悓鐨勬暟鎹幏鍙栨柟娉�
+        if (osName.startsWith("windows")) {
+            abstractServerInfos = new WindowsServerInfos();
+        } else if (osName.startsWith("linux")) {
+            abstractServerInfos = new LinuxServerInfos();
+        } else {// 鍏朵粬鏈嶅姟鍣ㄧ被鍨�
+            abstractServerInfos = new LinuxServerInfos();
+        }
+        LicenseCheckModel data = abstractServerInfos.getServerInfos();
+        response.setCharacterEncoding("UTF-8");
+        response.setContentType("application/json;charset=UTF8");
+//        PrintWriter writer = response.getWriter();
+//        writer.write(JSON.toJSONString(data));
+//        writer.close();
+
+        return JSON.toJSONString(data);
+    }
+
+}
diff --git a/src/main/resources/application-devGatewayCommon.yml b/src/main/resources/application-devGatewayCommon.yml
new file mode 100644
index 0000000..45596de
--- /dev/null
+++ b/src/main/resources/application-devGatewayCommon.yml
@@ -0,0 +1,84 @@
+server:
+  port: 8090
+
+spring:
+  datasource:
+    #涓绘暟鎹簮
+    primary:
+      url: jdbc:mysql://127.0.0.1:3306/igds_api?useUnicode=true&useSSL=false&characterEncoding=utf-8
+      username: root
+      password: Abc123..
+      driver-class-name: com.mysql.jdbc.Driver
+    #娆℃暟鎹簮
+    secondary:
+      url: jdbc:mysql://127.0.0.1:3306/igdsv4?useUnicode=true&useSSL=false&characterEncoding=utf-8
+
+      username: root
+      password: Abc123..
+      driver-class-name: com.mysql.jdbc.Driver
+  jpa:
+    #涓籮pa閰嶇疆
+    primary:
+      show-sql: true
+      properties:
+        hibernate:
+          hbm2ddl:
+            auto: update
+          dialect: org.hibernate.dialect.MySQL5InnoDBDialect
+    #娆pa閰嶇疆
+    secondary:
+      show-sql: true
+      properties:
+        hibernate:
+          hbm2ddl:
+            auto: none
+          dialect: org.hibernate.dialect.MySQL5InnoDBDialect
+  # Redis鐩稿叧閰嶇疆
+  redis:
+    database: 5
+    host: 127.0.0.1
+    port: 6379
+    password:
+    # 杩炴帴姹犳渶澶ц繛鎺ユ暟锛堜娇鐢ㄨ礋鍊艰〃绀烘病鏈夐檺鍒讹級
+    pool:
+      max-active: 200
+      max-wait: -1
+      max-idle: 10
+      min-idle: 0
+      timeout: 6000
+  kafka:
+    bootstrap-servers: 103.203.217.16:9092
+    producer:
+      retries: 0
+      acks: 1
+      batch-size: 16384
+      buffer-memory: 33554432
+      key-serializer: org.apache.kafka.common.serialization.StringSerializer
+      value-serializer: org.apache.kafka.common.serialization.StringSerializer
+    properties:
+      security.protocol: SASL_PLAINTEXT
+      sasl.mechanism: PLAIN
+      sasl.username: sc001
+      sasl.password: wCV0ISwmoKwbx1lpBKMW
+      sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username='sc001' password='wCV0ISwmoKwbx1lpBKMW';
+    consumer:
+      group-id: fzzygroup
+      enable-auto-commit: true
+      auto-commit-interval: 100
+      auto-offset-reset: latest
+      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
+      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
+
+  mqtt:
+    host: tcp://127.0.0.1:1883
+    username: admin
+    password: admin123321
+    client-inId: fzzy_client_id_in_igds_api
+    client-outId: fzzy_client_id_out_igds_api
+    completionTimeout: 3000
+    keep-alive-interval: 2
+    max-connect-times: 5
+    qos: 0
+    isOpen: false
+    default-topic: mqtt/+/test1
+    topics: /device-message-sender/#
diff --git a/src/main/resources/dorado-home/context.xml b/src/main/resources/dorado-home/context.xml
index a3067c1..886bf6f 100644
--- a/src/main/resources/dorado-home/context.xml
+++ b/src/main/resources/dorado-home/context.xml
@@ -11,7 +11,7 @@
 http://www.bstek.com/dorado/schema
 http://www.bstek.com/dorado/schema/spring-dorado-7.0.xsd">
 
-    <context:component-scan base-package="com.fzzy"/>
+    <context:component-scan base-package="com.fzzy,com.ld"/>
 
     <bean parent="dorado.dataConfigLoader">
         <property name="configLocation" value="${model.root}/*.model.xml"/>
diff --git a/src/main/resources/templates/no-license.html b/src/main/resources/templates/no-license.html
new file mode 100644
index 0000000..c4fe89d
--- /dev/null
+++ b/src/main/resources/templates/no-license.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="zh-cn">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <title>鏅鸿兘绮簱绠$悊绯荤粺-寮傚父璇存槑</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+</head>
+<body>
+
+<div style="margin: 20px; text-align: center;">
+
+    <img src="../static/images/big-icon-sys.png" />
+
+    <h1>鎶辨瓑锛岀郴缁熸巿鏉冨埌鏈熸垨鑰呭け鏁堬紝璇疯仈绯昏蒋浠跺巶鍟嗛噸鏂版巿鏉�.閭锛歷ince.xu@foxmail.com</h1>
+
+</div>
+
+</body>
+</html>

--
Gitblit v1.9.3