From d174064c9c48a409d8ee6cdc1d65a5ffe1b2ed0f Mon Sep 17 00:00:00 2001 From: lty <876263681@qq.com> Date: 星期二, 05 八月 2025 10:32:04 +0800 Subject: [PATCH] #许可证2.0 --- src/main/java/com/zy/system/timer/LicenseTimer.java | 131 ++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 127 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/zy/system/timer/LicenseTimer.java b/src/main/java/com/zy/system/timer/LicenseTimer.java index a56a24c..985ace4 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,125 @@ 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.licensePath}") + private String licensePath; + + /** + * 瀵嗛挜搴撳瓨鍌ㄨ矾寰� + */ + @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.setLicensePath(licensePath); + 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() { -- Gitblit v1.9.1