From 9388b1d64f4b5da813857f9939f32018e5e2681c Mon Sep 17 00:00:00 2001 From: zyx <zyx123456> Date: 星期一, 09 十月 2023 10:40:44 +0800 Subject: [PATCH] Merge branch 'tzskasrs' of http://47.97.1.152:5880/r/zy-asrs into tzskasrs --- src/main/java/com/zy/system/entity/license/LicenseVerify.java | 133 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 133 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/zy/system/entity/license/LicenseVerify.java b/src/main/java/com/zy/system/entity/license/LicenseVerify.java new file mode 100644 index 0000000..2175930 --- /dev/null +++ b/src/main/java/com/zy/system/entity/license/LicenseVerify.java @@ -0,0 +1,133 @@ +package com.zy.system.entity.license; + +import de.schlichtherle.license.*; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.io.File; +import java.text.DateFormat; +import java.text.MessageFormat; +import java.text.SimpleDateFormat; +import java.util.prefs.Preferences; + +/** + * License鏍¢獙绫� + */ +public class LicenseVerify { + private static Logger logger = LogManager.getLogger(LicenseVerify.class); + + /** + * 瀹夎License璇佷功 + */ + public synchronized LicenseContent install(LicenseVerifyParam param){ + LicenseContent result = null; + DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + //1. 瀹夎璇佷功 + try{ + LicenseManager licenseManager = LicenseManagerHolder.getInstance(initLicenseParam(param)); + licenseManager.uninstall(); + + 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); + } + + return result; + } + + /** + * 鏍¢獙License璇佷功 + */ + public boolean verify(){ + 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()))); + return true; + }catch (Exception e){ + logger.error("璁稿彲璇佹牎楠屽け璐ワ紒",e); + return false; + } + } + + /** + * 鏍¢獙License璇佷功骞惰幏鍙栬瘉涔︿俊鎭� + */ + public LicenseContent getVerifyInfo(){ + LicenseManager licenseManager = LicenseManagerHolder.getInstance(null); + + if (!updateSystemTime()) { + //鏃堕棿鏇存柊澶辫触锛岀郴缁熸椂闂磋鏇存敼 + return null; + } + + //鏍¢獙璇佷功 + try { + LicenseContent licenseContent = licenseManager.verify(); + return licenseContent; + }catch (Exception e){ + logger.error("璁稿彲璇佹牎楠屽け璐ワ紒",e); + return null; + } + } + + /** + * 鍒濆鍖栬瘉涔︾敓鎴愬弬鏁� + * @param param License鏍¢獙绫婚渶瑕佺殑鍙傛暟 + * @return de.schlichtherle.license.LicenseParam + */ + private LicenseParam initLicenseParam(LicenseVerifyParam param){ + Preferences preferences = Preferences.userNodeForPackage(LicenseVerify.class); + + CipherParam cipherParam = new DefaultCipherParam(param.getStorePass()); + + KeyStoreParam publicStoreParam = new CustomKeyStoreParam(LicenseVerify.class + ,param.getPublicKeysStorePath() + ,param.getPublicAlias() + ,param.getStorePass() + ,null); + + return new DefaultLicenseParam(param.getSubject() + ,preferences + ,publicStoreParam + ,cipherParam); + } + + /** + * 鏇存柊鏃堕棿鍒版敞鍐岃〃涓� + */ + 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; + } + +} \ No newline at end of file -- Gitblit v1.9.1