From f94adbc2b920a416b68b17e38cd54afcbe66317b Mon Sep 17 00:00:00 2001 From: yiming Date: Mon, 19 Dec 2022 16:49:59 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E9=9C=80=E8=A6=81=E6=8E=88?= =?UTF-8?q?=E6=9D=83=E6=89=8D=E8=83=BD=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../com/leaper/filter/FilterConstance.java | 7 -- .../com/leaper/filter/aspect/LPLicense.java | 69 +++++++++++++++ .../leaper/filter/aspect/LicenseAspect.java | 25 ++++++ .../leaper/filter/aspect/SessionAspect.java | 70 --------------- ...essionHandler.java => LicenseHandler.java} | 10 +-- .../leaper/filter/util/CurrentUserUtil.java | 30 ------- .../java/com/leaper/filter/util/JwtUtil.java | 85 ------------------- modules/pom.xml | 5 ++ web/pom.xml | 11 +-- .../main/java/com/leaper/web/Application.java | 2 +- .../controller/CameraControlController.java | 29 +++++++ .../web/controller/CameraController.java | 4 + .../com/leaper/web/service/LPLicense.java | 69 +++++++++++++++ .../leaper/web/service/ksec/KsecDecoder.java | 32 +++---- 15 files changed, 226 insertions(+), 223 deletions(-) create mode 100644 modules/filter/src/main/java/com/leaper/filter/aspect/LPLicense.java create mode 100644 modules/filter/src/main/java/com/leaper/filter/aspect/LicenseAspect.java delete mode 100644 modules/filter/src/main/java/com/leaper/filter/aspect/SessionAspect.java rename modules/filter/src/main/java/com/leaper/filter/pojo/{SessionHandler.java => LicenseHandler.java} (60%) delete mode 100644 modules/filter/src/main/java/com/leaper/filter/util/CurrentUserUtil.java delete mode 100644 modules/filter/src/main/java/com/leaper/filter/util/JwtUtil.java create mode 100644 web/src/main/java/com/leaper/web/service/LPLicense.java diff --git a/.gitignore b/.gitignore index 6198d43..21e45ac 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ target /modules/modules.iml /modules/filter/filter.iml /modules/common/common.iml +lp.key diff --git a/modules/filter/src/main/java/com/leaper/filter/FilterConstance.java b/modules/filter/src/main/java/com/leaper/filter/FilterConstance.java index 949722c..6b3dad5 100644 --- a/modules/filter/src/main/java/com/leaper/filter/FilterConstance.java +++ b/modules/filter/src/main/java/com/leaper/filter/FilterConstance.java @@ -2,11 +2,4 @@ package com.leaper.filter; public interface FilterConstance { - String HEADER = "token"; - - String JWT_KEY = "zhehekeji"; - - String SESSION_PREFIX = "session:"; - - Long SESSION_EXPIRE = 10800l; } diff --git a/modules/filter/src/main/java/com/leaper/filter/aspect/LPLicense.java b/modules/filter/src/main/java/com/leaper/filter/aspect/LPLicense.java new file mode 100644 index 0000000..9dbb222 --- /dev/null +++ b/modules/filter/src/main/java/com/leaper/filter/aspect/LPLicense.java @@ -0,0 +1,69 @@ +package com.leaper.filter.aspect; + +import com.leaper.common.util.FileUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import java.io.File; +import java.io.IOException; +import java.time.LocalDateTime; +import java.util.Scanner; + +@Slf4j +public class LPLicense { + + private static LocalDateTime lastUpdate = null; + + private static String lic_str = null; + + private static String lic_path = "./lp.lic"; + + private static String key_path = "./lp.key"; + + + public static void createLicKeyIfNotExist(){ + File file = new File(key_path); + if(!file.exists()){ + try { + Process process = Runtime.getRuntime().exec( + new String[] { "wmic", "cpu", "get", "ProcessorId" }); + process.getOutputStream().close(); + Scanner sc = new Scanner(process.getInputStream()); + String property = sc.next(); + String cpu = sc.next(); + FileUtil.save(cpu,key_path); + } catch (IOException e) { + e.printStackTrace(); + log.error("createLicKeyIfNotExist error:{}",e); + } + } + } + + public static String getLic(){ + //每小时读取一次lic文件 + if(lastUpdate == null || LocalDateTime.now().toLocalTime().getHour() != lastUpdate.toLocalTime().getHour()){ + lastUpdate = LocalDateTime.now(); + lic_str = FileUtil.getText(lic_path); + } + return lic_str; + } + + public static boolean checkLic(String pathStr){ + //todo 检测 + return true; + } + + public static boolean checkLic(){ + String licStr = getLic(); + if(StringUtils.isEmpty(licStr)){ + return false; + } + return checkLic(licStr); + } + + public static void main(String[] args) { + + createLicKeyIfNotExist(); + + } +} diff --git a/modules/filter/src/main/java/com/leaper/filter/aspect/LicenseAspect.java b/modules/filter/src/main/java/com/leaper/filter/aspect/LicenseAspect.java new file mode 100644 index 0000000..aa9e817 --- /dev/null +++ b/modules/filter/src/main/java/com/leaper/filter/aspect/LicenseAspect.java @@ -0,0 +1,25 @@ +package com.leaper.filter.aspect; + +import com.leaper.filter.pojo.LicenseHandler; +import com.zhehekeji.core.util.Assert; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.springframework.stereotype.Component; + +@Aspect +@Component +@Slf4j +public class LicenseAspect { + + /** + * leaper..*.controller + * leaper 到controller多级目录 + * + * @param + */ + @Before("execution(public * com.leaper..*.controller.*.*(..))") + public void handler(){ + Assert.isTrue(LPLicense.checkLic(),"未获取授权!!请将C:\\hzleaper_auto_install\\logistics_package\\lp.key发送给授权人员"); + } +} diff --git a/modules/filter/src/main/java/com/leaper/filter/aspect/SessionAspect.java b/modules/filter/src/main/java/com/leaper/filter/aspect/SessionAspect.java deleted file mode 100644 index 6532654..0000000 --- a/modules/filter/src/main/java/com/leaper/filter/aspect/SessionAspect.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.leaper.filter.aspect; - -import com.alibaba.fastjson.JSONObject; -import com.leaper.common.util.HttpUtil; -import com.leaper.filter.FilterConstance; -import com.zhehekeji.core.pojo.HttpStatus; -import com.zhehekeji.core.pojo.Result; -import com.zhehekeji.core.util.Assert; -import com.leaper.filter.pojo.CurrentUser; -import com.leaper.filter.pojo.SessionHandler; -import com.leaper.filter.util.CurrentUserUtil; -import lombok.extern.slf4j.Slf4j; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Before; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import javax.servlet.http.HttpServletRequest; -import java.io.IOException; - -/** - * @Description Session切面 - * @Author wangyiming1031@aliyun.com - * @Date 2019/10/28 19:26 - **/ -@Aspect -@Component -@Slf4j -public class SessionAspect { - - @Value("${zhehe.filter.enable}") - private Boolean enable; - @Value("${userUrl}") - private String userUrl; - - /** - * leaper..*.controller - * leaper 到controller多级目录 - * - * @param sessionHandler - */ - @Before("execution(public * com.leaper..*.controller.*.*(..))&&@annotation(sessionHandler)") - public void handler(SessionHandler sessionHandler){ - if(!enable){ - return; - } - HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - String token = request.getHeader(FilterConstance.HEADER); - CurrentUser currentUser = null; - try { - String res = HttpUtil.token(userUrl+"/api/account/checkToken",token); - Result currentUserResult = JSONObject.parseObject(res,Result.class); - if(currentUserResult != null && currentUserResult.getCode() == 200){ - currentUser = JSONObject.parseObject(JSONObject.toJSONString(currentUserResult.getData()),CurrentUser.class); - } - } catch (IOException e) { - e.printStackTrace(); - } - - if (sessionHandler.login()) { - Assert.isTrue(currentUser != null, HttpStatus.UNAUTHORIZED.getCode(), HttpStatus.UNAUTHORIZED.getReasonPhrase()); - } - if (sessionHandler.auth()) { - //todo 权限检验 - } - CurrentUserUtil.setCurrentUser(currentUser); - } -} diff --git a/modules/filter/src/main/java/com/leaper/filter/pojo/SessionHandler.java b/modules/filter/src/main/java/com/leaper/filter/pojo/LicenseHandler.java similarity index 60% rename from modules/filter/src/main/java/com/leaper/filter/pojo/SessionHandler.java rename to modules/filter/src/main/java/com/leaper/filter/pojo/LicenseHandler.java index e562e44..f495284 100644 --- a/modules/filter/src/main/java/com/leaper/filter/pojo/SessionHandler.java +++ b/modules/filter/src/main/java/com/leaper/filter/pojo/LicenseHandler.java @@ -5,18 +5,10 @@ import java.lang.annotation.*; @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented -public @interface SessionHandler { +public @interface LicenseHandler { String value() default ""; - UserType userType() default UserType.USER; - - /** - * 是否检验登录 - * @return true:检验 false:不检验 - */ - boolean login() default true; - /** * 是否检验权限 * @return true:检验 false:不检验 默认检验 diff --git a/modules/filter/src/main/java/com/leaper/filter/util/CurrentUserUtil.java b/modules/filter/src/main/java/com/leaper/filter/util/CurrentUserUtil.java deleted file mode 100644 index af3aa06..0000000 --- a/modules/filter/src/main/java/com/leaper/filter/util/CurrentUserUtil.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.leaper.filter.util; - -import com.leaper.filter.pojo.CurrentUser; - -/** - * @Description 当前操作人线程 - * @Author wangyiming1031@aliyun.com - * @Date 2019/10/28 19:22 - **/ -public class CurrentUserUtil { - - private static ThreadLocal currentUser = new ThreadLocal<>(); - - /** - * 获取当前操作人 - * - * @return - */ - public static CurrentUser getCurrentUser() { - return currentUser.get(); - } - - public static void setCurrentUser(CurrentUser user) { - currentUser.set(user); - } - - public static void delCurrentUser() { - currentUser.remove(); - } -} diff --git a/modules/filter/src/main/java/com/leaper/filter/util/JwtUtil.java b/modules/filter/src/main/java/com/leaper/filter/util/JwtUtil.java deleted file mode 100644 index f4676fb..0000000 --- a/modules/filter/src/main/java/com/leaper/filter/util/JwtUtil.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.leaper.filter.util; - -import com.alibaba.fastjson.JSONObject; -import com.leaper.filter.FilterConstance; -import com.leaper.filter.pojo.CurrentUser; -import io.jsonwebtoken.Claims; -import io.jsonwebtoken.JwtBuilder; -import io.jsonwebtoken.Jwts; -import io.jsonwebtoken.SignatureAlgorithm; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.Date; - -/** - * @Description JWTUtil - * @Author wangyiming1031@aliyun.com - * @Date 2019/10/28 19:11 - **/ -public class JwtUtil { - - /** - * 生成JWT - * - * @return - */ - private static String createJWT(CurrentUser currentUser) { - String userJson = JSONObject.toJSONString(currentUser); - JwtBuilder builder = Jwts.builder() - .setSubject(userJson) - .setIssuedAt(new Date()) - .signWith(SignatureAlgorithm.HS256, FilterConstance.JWT_KEY); - return builder.compact(); - } - - /** - * 解析JWT - * 抛出异常 则jwt错误 - * @param jwtStr - * @return - */ - public static Claims parseJWT(String jwtStr) { - return Jwts.parser() - .setSigningKey(FilterConstance.JWT_KEY) - .parseClaimsJws(jwtStr) - .getBody(); - } - - /** - * 获取当前操作人 - * - * @param request - * @return - */ - public static CurrentUser getUser(HttpServletRequest request) { - String token = getToken(request); - Claims claims; - try { - claims = parseJWT(token); - } catch (Exception e) { - return null; - } - String json = claims.getSubject(); - CurrentUser userInfo = JSONObject.parseObject(json, CurrentUser.class); - return userInfo; - } - - private static String getToken(HttpServletRequest request) { - return request.getHeader(FilterConstance.HEADER); - } - - /** - * 生成jwt,并将jwt放入返回头 - * 主要考虑的是 返回header 由用户过滤模块维护 - * @param response - * @param currentUser - * @return - */ - public static String createTokenAndHeader(HttpServletResponse response,CurrentUser currentUser){ - String jwt = createJWT(currentUser); - response.setHeader(FilterConstance.HEADER,jwt); - return jwt; - } - -} diff --git a/modules/pom.xml b/modules/pom.xml index c610f69..4e8ee43 100644 --- a/modules/pom.xml +++ b/modules/pom.xml @@ -26,6 +26,11 @@ common ${common.version} + + com.leaper + filter + ${common.version} + org.springframework.boot spring-boot-starter-web diff --git a/web/pom.xml b/web/pom.xml index 568eaf9..3a6a975 100644 --- a/web/pom.xml +++ b/web/pom.xml @@ -43,16 +43,17 @@ common 1.0.0 - - io.netty - netty-all - 4.1.50.Final - com.leaper filter 1.0.0 + + io.netty + netty-all + 4.1.50.Final + + com.alibaba diff --git a/web/src/main/java/com/leaper/web/Application.java b/web/src/main/java/com/leaper/web/Application.java index 8372997..514f1ba 100644 --- a/web/src/main/java/com/leaper/web/Application.java +++ b/web/src/main/java/com/leaper/web/Application.java @@ -4,7 +4,7 @@ import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -@SpringBootApplication(scanBasePackages = {"com.leaper"}) +@SpringBootApplication(scanBasePackages = {"com.leaper","com.zhehekeji.core"}) @MapperScan("com.leaper.**.mapper.**") public class Application { public static void main(String[] args) { diff --git a/web/src/main/java/com/leaper/web/controller/CameraControlController.java b/web/src/main/java/com/leaper/web/controller/CameraControlController.java index 07425ce..00f58b1 100644 --- a/web/src/main/java/com/leaper/web/controller/CameraControlController.java +++ b/web/src/main/java/com/leaper/web/controller/CameraControlController.java @@ -1,5 +1,6 @@ package com.leaper.web.controller; +import com.leaper.filter.pojo.LicenseHandler; import com.leaper.web.lib.CameraConnMap; import com.leaper.web.lib.CameraControlLoginModule; import com.leaper.web.lib.CameraControlModule; @@ -53,6 +54,7 @@ public class CameraControlController { @PostMapping("/up/{id}") @ApiOperation(value = "球机控制向上") + @LicenseHandler public Result up(@PathVariable Integer id) { log.debug("球机控制向上"); checkLogin(id); @@ -62,6 +64,7 @@ public class CameraControlController { @PostMapping("/up/stop/{id}") @ApiOperation(value = "球机控制向上 停止") + @LicenseHandler public Result upStop(@PathVariable Integer id) { log.debug("球机控制向上 停止"); checkLogin(id); @@ -71,6 +74,7 @@ public class CameraControlController { @PostMapping("/down/{id}") @ApiOperation(value = "球机控制向下") + @LicenseHandler public Result down(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlDownStart(id,0,0,1); @@ -80,6 +84,7 @@ public class CameraControlController { @PostMapping("/down/stop/{id}") @ApiOperation(value = "球机控制向下-停止") + @LicenseHandler public Result downStop(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlDownEnd(id,0); @@ -89,6 +94,7 @@ public class CameraControlController { @PostMapping("/left/{id}") @ApiOperation(value = "球机控制向左") + @LicenseHandler public Result left(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlLeftStart(id,0,0,1); @@ -98,6 +104,7 @@ public class CameraControlController { @PostMapping("/left/stop/{id}") @ApiOperation(value = "球机控制左-停止") + @LicenseHandler public Result leftStop(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlLeftEnd(id,0); @@ -108,6 +115,7 @@ public class CameraControlController { @PostMapping("/leftUp/{id}") @ApiOperation(value = "球机控制向左上") + @LicenseHandler public Result leftUp(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlLeftUpStart(id,0,1,1); @@ -117,6 +125,7 @@ public class CameraControlController { @PostMapping("/leftUp/stop/{id}") @ApiOperation(value = "球机控制左上-停止") + @LicenseHandler public Result leftUpStop(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlLeftUpEnd(id,0); @@ -126,6 +135,7 @@ public class CameraControlController { @PostMapping("/leftDown/{id}") @ApiOperation(value = "球机控制向左下") + @LicenseHandler public Result leftDown(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlLeftDownStart(id,0,1,1); @@ -135,6 +145,7 @@ public class CameraControlController { @PostMapping("/leftDown/stop/{id}") @ApiOperation(value = "球机控制左下-停止") + @LicenseHandler public Result leftDownStop(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlLeftDownEnd(id,0); @@ -145,6 +156,7 @@ public class CameraControlController { @PostMapping("/right/{id}") @ApiOperation(value = "球机控制向右") + @LicenseHandler public Result right(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlRightStart(id,0,0,1); @@ -154,6 +166,7 @@ public class CameraControlController { @PostMapping("/right/stop/{id}") @ApiOperation(value = "球机控制右-停止") + @LicenseHandler public Result rightStop(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlRightEnd(id,0); @@ -164,6 +177,7 @@ public class CameraControlController { @PostMapping("/rightUp/{id}") @ApiOperation(value = "球机控制向右上") + @LicenseHandler public Result rightUp(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlRightUpStart(id,0,1,1); @@ -173,6 +187,7 @@ public class CameraControlController { @PostMapping("/rightUp/stop/{id}") @ApiOperation(value = "球机控制右上-停止") + @LicenseHandler public Result rightUpStop(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlRightUpEnd(id,0); @@ -182,6 +197,7 @@ public class CameraControlController { @PostMapping("/rightDown/{id}") @ApiOperation(value = "球机控制向右下") + @LicenseHandler public Result rightDown(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlRightDownStart(id,0,1,1); @@ -191,6 +207,7 @@ public class CameraControlController { @PostMapping("/rightDown/stop/{id}") @ApiOperation(value = "球机控制右下-停止") + @LicenseHandler public Result rightDownStop(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlRightDownEnd(id,0); @@ -200,6 +217,7 @@ public class CameraControlController { @PostMapping("/zoomAdd/start/{id}") @ApiOperation(value = "球机控制 变倍+") + @LicenseHandler public Result ZoomAddStart(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlZoomAddStart(id,0,1); @@ -208,6 +226,7 @@ public class CameraControlController { @PostMapping("/zoomAdd/stop/{id}") @ApiOperation(value = "球机控制 变倍+ 停止") + @LicenseHandler public Result ZoomAddEnd(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlZoomAddEnd(id,0); @@ -216,6 +235,7 @@ public class CameraControlController { @PostMapping("/zoomDec/start/{id}") @ApiOperation(value = "球机控制 变倍-") + @LicenseHandler public Result ZoomDecStart(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlZoomDecStart(id,0,1); @@ -224,6 +244,7 @@ public class CameraControlController { @PostMapping("/zoomDec/stop/{id}") @ApiOperation(value = "球机控制 变倍- 停止") + @LicenseHandler public Result ZoomDecEnd(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlZoomDecEnd(id,0); @@ -232,6 +253,7 @@ public class CameraControlController { @PostMapping("/focusAdd/start/{id}") @ApiOperation(value = "球机控制 变焦 +") + @LicenseHandler public Result FocusAddStart(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlFocusAddStart(id,0,1); @@ -240,6 +262,7 @@ public class CameraControlController { @PostMapping("/focusAdd/stop/{id}") @ApiOperation(value = "球机控制 变焦+ 停止") + @LicenseHandler public Result focusAddEnd(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlFocusAddEnd(id,0); @@ -248,6 +271,7 @@ public class CameraControlController { @PostMapping("/focusDec/start/{id}") @ApiOperation(value = "球机控制 变焦 -") + @LicenseHandler public Result FocusDecStart(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlFocusDecStart(id,0,1); @@ -256,6 +280,7 @@ public class CameraControlController { @PostMapping("/focusDec/stop/{id}") @ApiOperation(value = "球机控制 变焦- 停止") + @LicenseHandler public Result focusDecEnd(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlFocusDecEnd(id,0); @@ -264,6 +289,7 @@ public class CameraControlController { @PostMapping("/irisAdd/start/{id}") @ApiOperation(value = "球机控制 光圈 +") + @LicenseHandler public Result irisAddStart(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlIrisAddStart(id,0,1); @@ -272,6 +298,7 @@ public class CameraControlController { @PostMapping("/irisAdd/stop/{id}") @ApiOperation(value = "球机控制 光圈+ 停止") + @LicenseHandler public Result irisAddEnd(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlIrisAddEnd(id,0); @@ -280,6 +307,7 @@ public class CameraControlController { @PostMapping("/irisDec/start/{id}") @ApiOperation(value = "球机控制 光圈 -") + @LicenseHandler public Result irisDecStart(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlIrisDecStart(id,0,1); @@ -288,6 +316,7 @@ public class CameraControlController { @PostMapping("/irisDec/stop/{id}") @ApiOperation(value = "球机控制 光圈- 停止") + @LicenseHandler public Result irisDecEnd(@PathVariable Integer id) { checkLogin(id); cameraControlModule.ptzControlIrisDecEnd(id,0); diff --git a/web/src/main/java/com/leaper/web/controller/CameraController.java b/web/src/main/java/com/leaper/web/controller/CameraController.java index f71d473..8bb7b8d 100644 --- a/web/src/main/java/com/leaper/web/controller/CameraController.java +++ b/web/src/main/java/com/leaper/web/controller/CameraController.java @@ -2,6 +2,7 @@ package com.leaper.web.controller; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; +import com.leaper.filter.pojo.LicenseHandler; import com.sun.jna.ptr.IntByReference; import com.leaper.common.util.ValidatorUtil; import com.zhehekeji.core.pojo.Result; @@ -41,18 +42,21 @@ public class CameraController { @PostMapping("/page") @ApiOperation(value = "球机列表分页 ") + @LicenseHandler public Result> list(@RequestBody StreetSearch streetSearch) { return new Result<>(cameraService.cameras(streetSearch)); } @GetMapping("/{id}") @ApiOperation(value = "球机") + @LicenseHandler public Result detail(@PathVariable Integer id) { return new Result<>(cameraService.detail(id)); } @PostMapping("") @ApiOperation(value = "球机新增 ") + @LicenseHandler public Result add(@RequestBody Camera camera) { return new Result<>(cameraService.add(camera)); } diff --git a/web/src/main/java/com/leaper/web/service/LPLicense.java b/web/src/main/java/com/leaper/web/service/LPLicense.java new file mode 100644 index 0000000..735f7f9 --- /dev/null +++ b/web/src/main/java/com/leaper/web/service/LPLicense.java @@ -0,0 +1,69 @@ +package com.leaper.web.service; + +import com.leaper.common.util.FileUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import java.io.File; +import java.io.IOException; +import java.time.LocalDateTime; +import java.util.Scanner; + +@Slf4j +public class LPLicense { + + private static LocalDateTime lastUpdate = null; + + private static String lic_str = null; + + private static String lic_path = "./lp.lic"; + + private static String key_path = "./lp.key"; + + + public static void createLicKeyIfNotExist(){ + File file = new File(key_path); + if(!file.exists()){ + try { + Process process = Runtime.getRuntime().exec( + new String[] { "wmic", "cpu", "get", "ProcessorId" }); + process.getOutputStream().close(); + Scanner sc = new Scanner(process.getInputStream()); + String property = sc.next(); + String cpu = sc.next(); + FileUtil.save(cpu,key_path); + } catch (IOException e) { + e.printStackTrace(); + log.error("createLicKeyIfNotExist error:{}",e); + } + } + } + + public static String getLic(){ + //每小时读取一次lic文件 + if(lastUpdate == null || LocalDateTime.now().toLocalTime().getHour() != lastUpdate.toLocalTime().getHour()){ + lastUpdate = LocalDateTime.now(); + lic_str = FileUtil.getText(lic_path); + } + return lic_str; + } + + public static boolean checkLic(String pathStr){ + //todo 检测 + return true; + } + + public static boolean checkLic(){ + String licStr = getLic(); + if(StringUtils.isEmpty(licStr)){ + return false; + } + return checkLic(licStr); + } + + public static void main(String[] args) { + + createLicKeyIfNotExist(); + + } +} diff --git a/web/src/main/java/com/leaper/web/service/ksec/KsecDecoder.java b/web/src/main/java/com/leaper/web/service/ksec/KsecDecoder.java index a0726aa..74dc65f 100644 --- a/web/src/main/java/com/leaper/web/service/ksec/KsecDecoder.java +++ b/web/src/main/java/com/leaper/web/service/ksec/KsecDecoder.java @@ -153,22 +153,22 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder { } else if (Cmd.D.name().equals(ksecInfo.getType())) { //柳州去掉告警 -// String code = dataInfo.getCmdName(); -// if(code.equals(Cmd.D1.name())){ -// log.info("plcId:{},warn start",plcCmdInfo.getPlcId()); -// //根据告警code转动camera -// String warnCode = dataInfo.getWarnCode(); -// if(!StringUtils.isEmpty(warnCode)){ -// String warnCode0 = Cmd.D1.name()+"-"+warnCode.split(",")[0]; -// plcService.warnAction(plcCmdInfo,warnCode0); -// } -// plcService.warnStart(plcCmdInfo.getPlcId(),dataInfo.getWarnCode()); -// }else if(code.equals(Cmd.D2.name())){ -// log.info("plcId:{},warn stop",plcCmdInfo.getPlcId()); -// plcService.warnStop(plcCmdInfo.getPlcId()); -// }else { -// log.info("other D code :{}",code); -// } + String code = dataInfo.getCmdName(); + if(code.equals(Cmd.D1.name())){ + log.info("plcId:{},warn start",plcCmdInfo.getPlcId()); + //根据告警code转动camera + String warnCode = dataInfo.getWarnCode(); + if(!StringUtils.isEmpty(warnCode)){ + String warnCode0 = Cmd.D1.name()+"-"+warnCode.split(",")[0]; + plcService.warnAction(plcCmdInfo,warnCode0); + } + plcService.warnStart(plcCmdInfo.getPlcId(),dataInfo.getWarnCode()); + }else if(code.equals(Cmd.D2.name())){ + log.info("plcId:{},warn stop",plcCmdInfo.getPlcId()); + plcService.warnStop(plcCmdInfo.getPlcId()); + }else { + log.info("other D code :{}",code); + } } else if (Cmd.E.name().equals(ksecInfo.getType())) { //盘点