From 5a8d3f9952ec4ff545ef0f5878d861692b0a39a3 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期二, 30 九月 2025 15:35:31 +0800
Subject: [PATCH] 13
---
src/main/java/com/zy/system/controller/LicenseCreatorController.java | 75 +++---
src/main/java/com/zy/system/entity/license/LicenseVerifyParam.java | 8
src/main/java/com/zy/system/entity/license/LicenseCheckListener.java | 37 ---
src/main/java/com/zy/system/entity/LicenseInfos.java | 56 +++++
src/main/java/com/zy/system/entity/license/CustomLicenseManager.java | 2
src/main/java/com/zy/system/entity/license/LicenseVerify.java | 84 +++-----
src/main/java/com/zy/asrs/entity/WrkMast.java | 1
src/main/resources/mapper/LicenseInfosMapper.xml | 18 +
src/main/java/com/zy/system/mapper/LicenseInfosMapper.java | 14 +
src/main/java/com/zy/system/entity/license/LinuxServerInfos.java | 91 +++++++++
pom.xml | 11
src/main/webapp/static/js/locDetl/locDetl.js | 2
/dev/null | 1
src/main/java/com/zy/system/service/LicenseInfosService.java | 10 +
src/main/java/com/zy/system/entity/license/AbstractServerInfos.java | 2
src/main/java/com/zy/system/timer/LicenseTimer.java | 125 ++++++++++++
src/main/resources/application.yml | 11
src/main/java/com/zy/system/service/impl/LicenseInfosServiceImpl.java | 16 +
18 files changed, 422 insertions(+), 142 deletions(-)
diff --git a/pom.xml b/pom.xml
index 66c1ffe..df3a7df 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,13 +9,13 @@
<relativePath/>
</parent>
<groupId>com.zy</groupId>
- <artifactId>asrs</artifactId>t
+ <artifactId>asrs</artifactId>
<version>1.1.1</version>
<packaging>war</packaging>
<properties>
<java.version>1.8</java.version>
- <cool.version>3.2.0</cool.version>
+ <cool.version>3.4.0</cool.version>
<mysql-driver.version>5.1.47</mysql-driver.version>
<mybatis-plus.version>2.3.2</mybatis-plus.version>
<fastjson.version>1.2.58</fastjson.version>
@@ -30,13 +30,18 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
- <scope>provided</scope>
+<!-- <scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
+ <groupId>cn.cool</groupId>
+ <artifactId>framework</artifactId>
+ <version>${cool.version}</version>
+ </dependency>
+ <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index 1bf9d7a..8617128 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -22,6 +22,7 @@
private static final long serialVersionUID = 1L;
+ @TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
diff --git a/src/main/java/com/zy/system/controller/LicenseCreatorController.java b/src/main/java/com/zy/system/controller/LicenseCreatorController.java
index 6d0c904..5650623 100644
--- a/src/main/java/com/zy/system/controller/LicenseCreatorController.java
+++ b/src/main/java/com/zy/system/controller/LicenseCreatorController.java
@@ -4,7 +4,6 @@
import com.core.common.R;
import com.zy.system.entity.license.*;
import com.zy.system.timer.LicenseTimer;
-import de.schlichtherle.license.LicenseContent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
@@ -15,7 +14,6 @@
import java.io.File;
import java.io.IOException;
-import java.util.Date;
/**
*
@@ -25,9 +23,8 @@
@RequestMapping("/license")
public class LicenseCreatorController {
- @Value("${license.licensePath}")
- private String licensePath;
-
+// @Value("${license.licensePath}")
+// private String licensePath;
@Autowired
private LicenseCheckListener licenseCheckListener;
@Autowired
@@ -50,7 +47,7 @@
if (osName.startsWith("windows")) {
abstractServerInfos = new WindowsServerInfos();
} else if (osName.startsWith("linux")) {
-// abstractServerInfos = new LinuxServerInfos();
+ abstractServerInfos = new LinuxServerInfos();
}else{//鍏朵粬鏈嶅姟鍣ㄧ被鍨�
abstractServerInfos = new WindowsServerInfos();
}
@@ -66,37 +63,43 @@
return R.ok(licenseTimer.getLicenseDays());
}
- @RequestMapping(value = "/updateLicense")
- public R updateLicense(@RequestParam("file") MultipartFile[] files){
- MultipartFile file = files[0];
+// @RequestMapping(value = "/updateLicense")
+// public R updateLicense(@RequestParam("file") MultipartFile[] files){
+// MultipartFile file = files[0];
+//
+// String licensePathFileName = this.getClass().getClassLoader().getResource(licensePath).getPath();
+// File licensePathFile = new File(licensePathFileName);
+// //鏈嶅姟鍣ㄧ淇濆瓨鐨勬枃浠跺璞�
+// File serverFile = new File(licensePathFile.getPath());
+// if (serverFile.exists()) {
+// try {
+// serverFile.delete();//瀛樺湪鏂囦欢锛屽垹闄�
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+//
+// try {
+// //鍒涘缓鏂囦欢
+// serverFile.createNewFile();
+// //灏嗕笂浼犵殑鏂囦欢鍐欏叆鍒版湇鍔″櫒绔枃浠跺唴
+// file.transferTo(serverFile);
+// } catch (IOException e) {
+// e.printStackTrace();
+// }
+//
+// //閲嶆柊鍔犺浇璁稿彲璇�
+// boolean loadedLicense = licenseCheckListener.loadLicense();
+// if (loadedLicense) {
+// return R.ok();
+// }
+// return R.error("璁稿彲璇佹洿鏂板け璐�");
+// }
- String licensePathFileName = this.getClass().getClassLoader().getResource(licensePath).getPath();
- File licensePathFile = new File(licensePathFileName);
- //鏈嶅姟鍣ㄧ淇濆瓨鐨勬枃浠跺璞�
- File serverFile = new File(licensePathFile.getPath());
- if (serverFile.exists()) {
- try {
- serverFile.delete();//瀛樺湪鏂囦欢锛屽垹闄�
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- try {
- //鍒涘缓鏂囦欢
- serverFile.createNewFile();
- //灏嗕笂浼犵殑鏂囦欢鍐欏叆鍒版湇鍔″櫒绔枃浠跺唴
- file.transferTo(serverFile);
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- //閲嶆柊鍔犺浇璁稿彲璇�
- boolean loadedLicense = licenseCheckListener.loadLicense();
- if (loadedLicense) {
- return R.ok();
- }
- return R.error("璁稿彲璇佹洿鏂板け璐�");
+ @RequestMapping(value = "/activate")
+ public R activate() {
+ licenseTimer.timer();
+ return R.ok();
}
}
\ No newline at end of file
diff --git a/src/main/java/com/zy/system/entity/LicenseInfos.java b/src/main/java/com/zy/system/entity/LicenseInfos.java
new file mode 100644
index 0000000..dafec6d
--- /dev/null
+++ b/src/main/java/com/zy/system/entity/LicenseInfos.java
@@ -0,0 +1,56 @@
+package com.zy.system.entity;
+
+import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableField;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("sys_license_infos")
+public class LicenseInfos implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value= "")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty(value= "")
+ private String license;
+
+ @ApiModelProperty(value= "")
+ private String licenseTime;
+
+ @ApiModelProperty(value= "")
+ @TableField("create_time")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ public LicenseInfos() {}
+
+ public LicenseInfos(String license,Date createTime) {
+ this.license = license;
+ this.createTime = createTime;
+ }
+
+// LicenseInfos licenseInfos = new LicenseInfos(
+// null, //
+// null //
+// );
+
+ public String getCreateTime$(){
+ if (Cools.isEmpty(this.createTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+ }
+
+
+}
diff --git a/src/main/java/com/zy/system/entity/license/AbstractServerInfos.java b/src/main/java/com/zy/system/entity/license/AbstractServerInfos.java
index f771d16..cb413ae 100644
--- a/src/main/java/com/zy/system/entity/license/AbstractServerInfos.java
+++ b/src/main/java/com/zy/system/entity/license/AbstractServerInfos.java
@@ -23,7 +23,7 @@
LicenseCheck result = new LicenseCheck();
try {
- result.setIpAddress(this.getIpAddress());
+// result.setIpAddress(this.getIpAddress());
result.setMacAddress(this.getMacAddress());
result.setCpuSerial(this.getCPUSerial());
result.setMainBoardSerial(this.getMainBoardSerial());
diff --git a/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java b/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java
index 1ad2cc1..9a7fc6d 100644
--- a/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java
+++ b/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java
@@ -194,7 +194,7 @@
if (osName.startsWith("windows")) {
abstractServerInfos = new WindowsServerInfos();
} else if (osName.startsWith("linux")) {
-// abstractServerInfos = new LinuxServerInfos();
+ abstractServerInfos = new LinuxServerInfos();
}else{//鍏朵粬鏈嶅姟鍣ㄧ被鍨�
abstractServerInfos = new WindowsServerInfos();
}
diff --git a/src/main/java/com/zy/system/entity/license/LicenseCheckListener.java b/src/main/java/com/zy/system/entity/license/LicenseCheckListener.java
index 99d99cc..7e28bf9 100644
--- a/src/main/java/com/zy/system/entity/license/LicenseCheckListener.java
+++ b/src/main/java/com/zy/system/entity/license/LicenseCheckListener.java
@@ -40,11 +40,6 @@
@Value("${license.storePass}")
private String storePass;
- /**
- * 璇佷功鐢熸垚璺緞
- */
- @Value("${license.licensePath}")
- private String licensePath;
/**
* 瀵嗛挜搴撳瓨鍌ㄨ矾寰�
@@ -65,53 +60,27 @@
//鍔犺浇璇佷功
public boolean loadLicense() {
- if(!Cools.isEmpty(licensePath)){
logger.info("++++++++ 寮�濮嬪姞杞借鍙瘉 ++++++++");
try {
-// String publicKeysStoreFileName = this.getClass().getClassLoader().getResource(publicKeysStorePath).getPath();
-// File publicKeysStoreFile = new File(publicKeysStoreFileName);
-//
-// String licensePathFileName = this.getClass().getClassLoader().getResource(licensePath).getPath();
-// File licensePathFile = new File(licensePathFileName);
LicenseVerifyParam param = new LicenseVerifyParam();
param.setSubject(subject);
param.setPublicAlias(publicAlias);
param.setStorePass(storePass);
- param.setLicensePath(licensePath);
param.setPublicKeysStorePath(publicKeysStorePath);
- LicenseVerify licenseVerify = new LicenseVerify();
- //瀹夎璇佷功
-// LicenseContent install = licenseVerify.install(param);
+ licenseTimer.timer();
logger.info("++++++++ 璁稿彲璇佸姞杞界粨鏉� ++++++++");
logger.info("++++++++ 璁稿彲璇佸姞杞芥爣璁帮紝鎼滅储淇敼 ++++++++");
- licenseTimer.setSystemSupport(true);
- licenseTimer.setLicenseDays(9999);
+// licenseTimer.setSystemSupport(true);
+// licenseTimer.setLicenseDays(9999);
return true;
-// licenseTimer.setSystemSupport(install!=null);
-//
-// if (install != null) {
-// Date start = new Date();
-// Date end = install.getNotAfter();
-// Long starTime = start.getTime();
-// Long endTime = end.getTime();
-// Long num = endTime - starTime;//鏃堕棿鎴崇浉宸殑姣鏁�
-// int day = (int) (num / 24 / 60 / 60 / 1000);
-// licenseTimer.setLicenseDays(day);
-// }
-//
-//
-// return install != null;
} catch (Exception e) {
return false;
}
- }
- licenseTimer.setSystemSupport(false);
- return false;
}
}
\ No newline at end of file
diff --git a/src/main/java/com/zy/system/entity/license/LicenseVerify.java b/src/main/java/com/zy/system/entity/license/LicenseVerify.java
index fd95fca..da239c0 100644
--- a/src/main/java/com/zy/system/entity/license/LicenseVerify.java
+++ b/src/main/java/com/zy/system/entity/license/LicenseVerify.java
@@ -3,14 +3,15 @@
import de.schlichtherle.license.*;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.apache.tomcat.util.http.fileupload.IOUtils;
import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.text.DateFormat;
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
+import java.util.Base64;
import java.util.prefs.Preferences;
/**
@@ -22,25 +23,21 @@
/**
* 瀹夎License璇佷功
*/
- public synchronized LicenseContent install(LicenseVerifyParam param){
+ public synchronized LicenseContent install(LicenseVerifyParam param, String license) {
LicenseContent result = null;
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//1. 瀹夎璇佷功
- try{
- LicenseManager licenseManager = LicenseManagerHolder.getInstance(initLicenseParam(param));
+ try {
+ LicenseParam licenseParam = initLicenseParam(param);
+ LicenseManager licenseManager = LicenseManagerHolder.getInstance(licenseParam);
licenseManager.uninstall();
- InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(param.getLicensePath());
- File file = new File(param.getLicensePath());
- try (FileOutputStream out = new FileOutputStream(file)) {
- IOUtils.copy(inputStream, out);
- }
-
- result = licenseManager.install(new File(param.getLicensePath()));
- logger.info(MessageFormat.format("璁稿彲璇佸姞杞芥垚鍔燂紝璁稿彲璇佹湁鏁堟湡锛歿0} - {1}",format.format(result.getNotBefore()),format.format(result.getNotAfter())));
- }catch (Exception e){
- logger.error("璁稿彲璇佸姞杞藉け璐ワ紒",e);
+ File tempFileFromBase64 = createTempFileFromBase64(license);
+ result = licenseManager.install(tempFileFromBase64);
+ logger.info(MessageFormat.format("璁稿彲璇佸姞杞芥垚鍔燂紝璁稿彲璇佹湁鏁堟湡锛歿0} - {1}", format.format(result.getNotBefore()), format.format(result.getNotAfter())));
+ } catch (Exception e) {
+ logger.error("璁稿彲璇佸姞杞藉け璐ワ紒", e);
}
return result;
@@ -53,11 +50,6 @@
try {
LicenseManager licenseManager = LicenseManagerHolder.getInstance(null);
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
- if (!updateSystemTime()) {
- //鏃堕棿鏇存柊澶辫触锛岀郴缁熸椂闂磋鏇存敼
- return false;
- }
LicenseContent licenseContent = licenseManager.verify();
logger.info(MessageFormat.format("璁稿彲璇佹牎楠岄�氳繃锛岃鍙瘉鏈夋晥鏈燂細{0} - {1}",format.format(licenseContent.getNotBefore()),format.format(licenseContent.getNotAfter())));
@@ -73,11 +65,6 @@
*/
public LicenseContent getVerifyInfo(){
LicenseManager licenseManager = LicenseManagerHolder.getInstance(null);
-
- if (!updateSystemTime()) {
- //鏃堕棿鏇存柊澶辫触锛岀郴缁熸椂闂磋鏇存敼
- return null;
- }
//鏍¢獙璇佷功
try {
@@ -112,31 +99,28 @@
}
/**
- * 鏇存柊鏃堕棿鍒版敞鍐岃〃涓�
+ * 灏咮ase64瀛楃涓茶浆鎹负涓存椂鏂囦欢
+ * @param base64String Base64缂栫爜鐨勫瓧绗︿覆
+ * @param filePrefix 鏂囦欢鍚嶅墠缂�锛堜緥濡� "license_"锛�
+ * @param fileSuffix 鏂囦欢鍚庣紑锛堜緥濡� ".lic"锛�
+ * @return 鐢熸垚鐨勪复鏃禙ile瀵硅薄锛堣嚜鍔ㄥ湪JVM閫�鍑烘椂鍒犻櫎锛�
+ * @throws IOException
*/
- private boolean updateSystemTime() {
- // 鑾峰彇鐢ㄦ埛鏍硅妭鐐�
- Preferences userRoot = Preferences.userRoot();
- // 鑾峰彇鎸囧畾璺緞涓嬬殑鑺傜偣
- Preferences node = userRoot.node("/zhongyang");
- String key = "time";
- // 璇诲彇娉ㄥ唽琛�
- String value = node.get(key, null);
- if (value != null) {
- long originTime = Long.parseLong(value);
- long now = System.currentTimeMillis();
- long diff = now - originTime;//鐜板湪鏃堕棿 - 婧愭椂闂� = 鏃堕棿宸�
- if (diff > 0) {
- //鏃堕棿宸ぇ浜�0鎵嶅厑璁告洿鏂版敞鍐岃〃鏃堕棿
- node.put(key, String.valueOf(System.currentTimeMillis()));
- return true;
- }
- }else {
- // 鍐欏叆娉ㄥ唽琛�
- node.put(key, String.valueOf(System.currentTimeMillis()));
- return true;
- }
- return false;
+ public File base64ToTempFile(String base64String, String filePrefix, String fileSuffix)
+ throws IOException {
+ // 瑙g爜Base64
+ byte[] decodedBytes = Base64.getDecoder().decode(base64String);
+ // 鍒涘缓涓存椂鏂囦欢
+ Path tempPath = Files.createTempFile(filePrefix, fileSuffix);
+ // 鍐欏叆鍐呭
+ Files.write(tempPath, decodedBytes);
+ // 璁剧疆JVM閫�鍑烘椂鑷姩鍒犻櫎
+ tempPath.toFile().deleteOnExit();
+ return tempPath.toFile();
+ }
+
+ public File createTempFileFromBase64(String base64Data) throws IOException {
+ return base64ToTempFile(base64Data, "temp_license_", ".bin");
}
}
\ No newline at end of file
diff --git a/src/main/java/com/zy/system/entity/license/LicenseVerifyParam.java b/src/main/java/com/zy/system/entity/license/LicenseVerifyParam.java
index 33806e5..3d5e40e 100644
--- a/src/main/java/com/zy/system/entity/license/LicenseVerifyParam.java
+++ b/src/main/java/com/zy/system/entity/license/LicenseVerifyParam.java
@@ -23,10 +23,7 @@
*/
private String storePass;
- /**
- * 璇佷功鐢熸垚璺緞
- */
- private String licensePath;
+
/**
* 瀵嗛挜搴撳瓨鍌ㄨ矾寰�
@@ -37,11 +34,10 @@
}
- public LicenseVerifyParam(String subject, String publicAlias, String storePass, String licensePath, String publicKeysStorePath) {
+ public LicenseVerifyParam(String subject, String publicAlias, String storePass, String publicKeysStorePath) {
this.subject = subject;
this.publicAlias = publicAlias;
this.storePass = storePass;
- this.licensePath = licensePath;
this.publicKeysStorePath = publicKeysStorePath;
}
diff --git a/src/main/java/com/zy/system/entity/license/LinuxServerInfos.java b/src/main/java/com/zy/system/entity/license/LinuxServerInfos.java
new file mode 100644
index 0000000..0f40daf
--- /dev/null
+++ b/src/main/java/com/zy/system/entity/license/LinuxServerInfos.java
@@ -0,0 +1,91 @@
+package com.zy.system.entity.license;
+
+import com.core.common.Cools;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.InetAddress;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 鐢ㄤ簬鑾峰彇瀹㈡埛Linux鏈嶅姟鍣ㄧ殑鍩烘湰淇℃伅
+ */
+public class LinuxServerInfos extends AbstractServerInfos {
+
+ @Override
+ protected List<String> getIpAddress() throws Exception {
+ List<String> result = null;
+
+ //鑾峰彇鎵�鏈夌綉缁滄帴鍙�
+ List<InetAddress> inetAddresses = getLocalAllInetAddress();
+
+ if (inetAddresses != null && inetAddresses.size() > 0) {
+ result = inetAddresses.stream().map(InetAddress::getHostAddress).distinct().map(String::toLowerCase).collect(Collectors.toList());
+ }
+
+ return result;
+ }
+
+ @Override
+ protected List<String> getMacAddress() throws Exception {
+ List<String> result = null;
+
+ //1. 鑾峰彇鎵�鏈夌綉缁滄帴鍙�
+ List<InetAddress> inetAddresses = getLocalAllInetAddress();
+
+ if (inetAddresses != null && inetAddresses.size() > 0) {
+ //2. 鑾峰彇鎵�鏈夌綉缁滄帴鍙g殑Mac鍦板潃
+ result = inetAddresses.stream().map(this::getMacByInetAddress).distinct().collect(Collectors.toList());
+ }
+
+ return result;
+ }
+
+ @Override
+ protected String getCPUSerial() throws Exception {
+ //搴忓垪鍙�
+ String serialNumber = "";
+
+ //浣跨敤dmidecode鍛戒护鑾峰彇CPU搴忓垪鍙�
+ String[] shell = {"/bin/bash", "-c", "dmidecode -t processor | grep 'ID' | awk -F ':' '{print $2}' | head -n 1"};
+ Process process = Runtime.getRuntime().exec(shell);
+ process.getOutputStream().close();
+
+ BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
+
+ if (null == reader.readLine()) {
+ return serialNumber;
+ }
+ String line = reader.readLine().trim();
+ if (!Cools.isEmpty(line)) {
+ serialNumber = line;
+ }
+
+ reader.close();
+ return serialNumber;
+ }
+
+ @Override
+ protected String getMainBoardSerial() throws Exception {
+ //搴忓垪鍙�
+ String serialNumber = "";
+
+ //浣跨敤dmidecode鍛戒护鑾峰彇涓绘澘搴忓垪鍙�
+ String[] shell = {"/bin/bash", "-c", "dmidecode | grep 'Serial Number' | awk -F ':' '{print $2}' | head -n 1"};
+ Process process = Runtime.getRuntime().exec(shell);
+ process.getOutputStream().close();
+
+ BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
+ if (null == reader.readLine()) {
+ return serialNumber;
+ }
+ String line = reader.readLine().trim();
+ if (!Cools.isEmpty(line)) {
+ serialNumber = line;
+ }
+
+ reader.close();
+ return serialNumber;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/system/mapper/LicenseInfosMapper.java b/src/main/java/com/zy/system/mapper/LicenseInfosMapper.java
new file mode 100644
index 0000000..2e51ff1
--- /dev/null
+++ b/src/main/java/com/zy/system/mapper/LicenseInfosMapper.java
@@ -0,0 +1,14 @@
+package com.zy.system.mapper;
+
+import com.zy.system.entity.LicenseInfos;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface LicenseInfosMapper extends BaseMapper<LicenseInfos> {
+
+ LicenseInfos getLatestLicense();
+
+}
diff --git a/src/main/java/com/zy/system/service/LicenseInfosService.java b/src/main/java/com/zy/system/service/LicenseInfosService.java
new file mode 100644
index 0000000..dc3dc04
--- /dev/null
+++ b/src/main/java/com/zy/system/service/LicenseInfosService.java
@@ -0,0 +1,10 @@
+package com.zy.system.service;
+
+import com.zy.system.entity.LicenseInfos;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface LicenseInfosService extends IService<LicenseInfos> {
+
+ LicenseInfos getLatestLicense();
+
+}
diff --git a/src/main/java/com/zy/system/service/impl/LicenseInfosServiceImpl.java b/src/main/java/com/zy/system/service/impl/LicenseInfosServiceImpl.java
new file mode 100644
index 0000000..2a6b9b3
--- /dev/null
+++ b/src/main/java/com/zy/system/service/impl/LicenseInfosServiceImpl.java
@@ -0,0 +1,16 @@
+package com.zy.system.service.impl;
+
+import com.zy.system.mapper.LicenseInfosMapper;
+import com.zy.system.entity.LicenseInfos;
+import com.zy.system.service.LicenseInfosService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("licenseInfosService")
+public class LicenseInfosServiceImpl extends ServiceImpl<LicenseInfosMapper, LicenseInfos> implements LicenseInfosService {
+
+ @Override
+ public LicenseInfos getLatestLicense() {
+ return this.baseMapper.getLatestLicense();
+ }
+}
diff --git a/src/main/java/com/zy/system/timer/LicenseTimer.java b/src/main/java/com/zy/system/timer/LicenseTimer.java
index a56a24c..90d10f6 100644
--- a/src/main/java/com/zy/system/timer/LicenseTimer.java
+++ b/src/main/java/com/zy/system/timer/LicenseTimer.java
@@ -1,8 +1,20 @@
package com.zy.system.timer;
-import com.zy.system.entity.license.LicenseVerify;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.core.common.Cools;
+import com.zy.common.utils.HttpHandler;
+import com.zy.system.entity.LicenseInfos;
+import com.zy.system.entity.license.*;
+import com.zy.system.service.LicenseInfosService;
+import de.schlichtherle.license.LicenseContent;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.HashMap;
@Component
public class LicenseTimer {
@@ -11,14 +23,119 @@
private static int LICENSE_DAYS = 0;//璁稿彲璇佸ぉ鏁�
+ /**
+ * 璇佷功subject
+ */
+ @Value("${license.subject}")
+ private String subject;
+
+ /**
+ * 鍏挜鍒О
+ */
+ @Value("${license.publicAlias}")
+ private String publicAlias;
+
+ /**
+ * 璁块棶鍏挜搴撶殑瀵嗙爜
+ */
+ @Value("${license.storePass}")
+ private String storePass;
+
+
+ /**
+ * 瀵嗛挜搴撳瓨鍌ㄨ矾寰�
+ */
+ @Value("${license.publicKeysStorePath}")
+ private String publicKeysStorePath;
+
+ @Autowired
+ private LicenseInfosService licenseInfosService;
+
//姣忓ぉ鏅氫笂11鐐规洿鏂扮郴缁熸縺娲荤姸鎬�
@Scheduled(cron = "0 0 23 * * ? ")
public void timer() {
-// System.out.println(SYSTEM_SUPPORT);
+ try {
+ getRemoteLicense();
+ } catch (Exception e) {
+
+ }
+
+ try {
+ verify();
+ } catch (Exception e) {
+
+ }
+ }
+
+ public void getRemoteLicense() {
+ try {
+ AbstractServerInfos abstractServerInfos = null;
+ String osName = System.getProperty("os.name");
+ //鏍规嵁涓嶅悓鎿嶄綔绯荤粺绫诲瀷閫夋嫨涓嶅悓鐨勬暟鎹幏鍙栨柟娉�
+ if (osName.startsWith("windows")) {
+ abstractServerInfos = new WindowsServerInfos();
+ } else if (osName.startsWith("linux")) {
+ abstractServerInfos = new LinuxServerInfos();
+ }else{//鍏朵粬鏈嶅姟鍣ㄧ被鍨�
+ abstractServerInfos = new WindowsServerInfos();
+ }
+ LicenseCheck serverInfos = abstractServerInfos.getServerInfos();
+
+ HashMap<String, Object> map = new HashMap<>();
+ map.put("subject", subject);
+ map.put("licenseCheck", serverInfos);
+
+ String response = new HttpHandler.Builder()
+ .setUri("http://net.zoneyung.net:9999/license")
+ .setPath("/remoteQueryLicense")
+ .setJson(JSON.toJSONString(map))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getString("result").equals("ok")) {
+ LicenseInfos licenseInfos = new LicenseInfos();
+ licenseInfos.setLicense(jsonObject.getString("data"));
+ licenseInfos.setCreateTime(new Date());
+ licenseInfos.setLicenseTime(jsonObject.getString("licenseTime"));
+ licenseInfosService.insert(licenseInfos);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void verify() {
+ LicenseInfos latestLicense = licenseInfosService.getLatestLicense();
+ if (latestLicense == null) {
+ setLicenseDays(0);
+ setSystemSupport(false);
+ return;
+ }
+
+ LicenseVerifyParam param = new LicenseVerifyParam();
+ param.setSubject(subject);
+ param.setPublicAlias(publicAlias);
+ param.setStorePass(storePass);
+ param.setPublicKeysStorePath(publicKeysStorePath);
+
//楠岃瘉璁稿彲璇佹槸鍚︽湁鏁�
LicenseVerify licenseVerify = new LicenseVerify();
- boolean verify = licenseVerify.verify();
- setSystemSupport(verify);//鏇存柊绯荤粺婵�娲荤姸鎬�
+ //瀹夎璇佷功
+ LicenseContent install = licenseVerify.install(param, latestLicense.getLicense());
+
+ if (install != null) {
+ Date start = new Date();
+ Date end = install.getNotAfter();
+ Long starTime = start.getTime();
+ Long endTime = end.getTime();
+ long num = endTime - starTime;//鏃堕棿鎴崇浉宸殑姣鏁�
+ int day = (int) (num / 24 / 60 / 60 / 1000);
+ setLicenseDays(day);
+ setSystemSupport(true);
+ }else {
+ setLicenseDays(0);
+ setSystemSupport(false);
+ }
}
public boolean getSystemSupport() {
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 41d1786..0de1032 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -13,7 +13,7 @@
# url: jdbc:sqlserver://192.168.4.191:1433;databasename=integrationasrs
# username: sa
# password: sa@123
- url: jdbc:sqlserver://localhost:1433;databasename=nbjswcs
+ url: jdbc:sqlserver://localhost:1433;databasename=nbjsasrs
# username: sa
# password: sa@123
# url: jdbc:sqlserver://127.0.0.1:51433;databasename=source
@@ -24,8 +24,9 @@
# password: sa@123
# url: jdbc:sqlserver://127.0.0.1:62316;databasename=source
username: sa
- password: Skyouc#23
- url: jdbc:sqlserver://127.0.0.1:1433;databasename=jsxswms
+ password: sa@123
+ #password: Skyouc#23
+ #url: jdbc:sqlserver://127.0.0.1:1433;databasename=jsxswms
mvc:
static-path-pattern: /**
redis:
@@ -43,7 +44,7 @@
# global-config:
# field-strategy: 0
configuration:
- log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ #impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
cache-enabled: true
call-setters-on-nulls: true
@@ -63,7 +64,7 @@
subject: integrationasrs
publicAlias: publicCert
storePass: public_zhongyang_123456789
- licensePath: license.lic
+# licensePath: license.lic
publicKeysStorePath: publicCerts.keystore
# 涓嬩綅鏈洪厤缃�
diff --git a/src/main/resources/license.lic b/src/main/resources/license.lic
deleted file mode 100644
index 22364dc..0000000
--- a/src/main/resources/license.lic
+++ /dev/null
@@ -1 +0,0 @@
-�!�;蓧嚡页僶}>菥m熂l簝�&蹻摜ズャDYw漛�<
烻-唖賳3鬕J 辴迟*疀専el龍魌�6�+�"徥H釛H|�観J_�7 i瓋I%欑�"閑�'6_堜r%�9蠤奇A疡p�鎟�眙�/讧� 頺�)�hb@s蜉C_:4驦5嶥詥嬋Yd靪齐CJ澩g厛oV�#硫?�茞f滂k齠%跏#m梲rD菰:�z啥炣蕶& 槺�$\嶋d閧'&昬7卶縎�p渓罷��cu3*崌U丫x窜鞓�3胅渆]K�&匤h烷a3GL�暼蠖伜堩{崸]r2羮�v�P湧|棖話g^�佾��?z秚井7嬇!恀�!齤-F.玬{��+纁0齇xM胡S蟱tK錺�8-z(�;J贿@lvE8逯~xЬ糍�喎潵R虷覹q閧瑾I]熧鞲|唼 D钥`輂齱⒔嗢�2纐5鎸+�
�+vt姰�罹访!栿襁场済L殞搃��\LG誒峮_厸肭�f艟�nx� 硯咧w蘼唌�"]}簟5嗳o梋a� 処P�%檞l+�C绚v3鈔闞3�繎飇�)粓篍屉蘻]綨/図gCbm�8��D/�浈豗舕酵羣�0胆臚〆�珪&ヒR弌�:@颶�兂誙綽R:g
DV3P偭U=嵆镣!�f隧�7àdrd舷[4烿凞`F酞`I彫椱柤籒r郯嵑PqE霮?Y1/!�9陔k$0an哲也嵍樗妍5譛紁驭3圢�<�(揍鬞#�掺镧翄$眕V�<霄6�?I卬��悕x�:lLm鍭�9�荳��
\ No newline at end of file
diff --git a/src/main/resources/mapper/LicenseInfosMapper.xml b/src/main/resources/mapper/LicenseInfosMapper.xml
new file mode 100644
index 0000000..6274069
--- /dev/null
+++ b/src/main/resources/mapper/LicenseInfosMapper.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.system.mapper.LicenseInfosMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.zy.system.entity.LicenseInfos">
+ <id column="id" property="id" />
+ <result column="license" property="license" />
+ <result column="license_time" property="licenseTime" />
+ <result column="create_time" property="createTime" />
+
+ </resultMap>
+
+ <select id="getLatestLicense" resultMap="BaseResultMap">
+ select top 1 * from sys_license_infos order by create_time desc
+ </select>
+
+</mapper>
diff --git a/src/main/webapp/static/js/locDetl/locDetl.js b/src/main/webapp/static/js/locDetl/locDetl.js
index 14c17ee..841c67e 100644
--- a/src/main/webapp/static/js/locDetl/locDetl.js
+++ b/src/main/webapp/static/js/locDetl/locDetl.js
@@ -2,7 +2,7 @@
function getCol() {
var cols = [
{type: 'checkbox'},
- {field: 'locNo$', align: 'center',title: '搴撲綅鍙�'}
+ {field: 'locNo', align: 'center',title: '搴撲綅鍙�'}
,{field: 'storeDate', align: 'center',title: '搴撻緞(澶�)', sort:true}
,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿', sort:true}
,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О', sort:true}
--
Gitblit v1.9.1