vince
2023-11-15 6cfe7b4094c1babbedfd6332e9f759c091beaae6
增加授权
已修改5个文件
已添加4个文件
264 ■■■■■ 文件已修改
pom.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/conf/LicenseHandlerAdepter.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/conf/WebMvcConfig.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/gateway/hx2023/controller/GatewayController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/web/HomeController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/web/ServerInfoAction.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-devGatewayCommon.yml 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/dorado-home/context.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/no-license.html 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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> -->
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
 *  éªŒè¯ç³»ç»ŸæŽˆæƒ åœ¨WebMvcConfig中配置其拦截的路径
 * @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;
        }
    }
}
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");
    }
}
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);
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";
    }
}
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接口,支持匿名访问
 * æ–¹ä½è·¯å¾„:http://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);
    }
}
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:
    #主jpa配置
    primary:
      show-sql: true
      properties:
        hibernate:
          hbm2ddl:
            auto: update
          dialect: org.hibernate.dialect.MySQL5InnoDBDialect
    #次jpa配置
    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/#
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"/>
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>抱歉,系统授权到期或者失效,请联系软件厂商重新授权.邮箱:vince.xu@foxmail.com</h1>
</div>
</body>
</html>