package com.se.system.utils; import com.se.system.domain.vo.LicenseExtraParamVo; import com.se.system.domain.vo.LicenseResultVo; import com.se.system.domain.vo.LicenseVerifyMg; import com.se.system.domain.vo.LicenseVerifyParamVo; import com.se.system.service.CustomVerifyListenerService; import com.se.system.service.LiceVerifyInstallListener; import com.se.system.service.inte.IACustomVerifyListener; import com.se.system.service.inte.IAServerInfoService; import de.schlichtherle.license.LicenseContent; import java.io.File; import java.util.Arrays; import java.util.Comparator; import java.util.List; @SuppressWarnings("ALL") public class LicenseVerifyUtils { public static LicenseVerifyParamVo licenseVerifyProperties = new LicenseVerifyParamVo(); public static void installListener() { licenseVerifyProperties.setSubject("se-cloud"); licenseVerifyProperties.setPublicAlias("publiccert"); licenseVerifyProperties.setPublicKeysStorePath("/publicCerts.store"); licenseVerifyProperties.setStorePass("Se_System_20!24"); // licenseVerifyProperties.setLicensePath("classpath:license.lic"); String serverTempPath = IAServerInfoService.getServerTempPath() + "/lic-files/"; String latestLicFilePath = getLatestLicFilePath(serverTempPath); licenseVerifyProperties.setLicensePath(latestLicFilePath + File.separator + "license.lic"); // 安装证书 LiceVerifyInstallListener.LicenseVerifyInstall(licenseVerifyProperties); // 添加自定义校验模式 initCustomVerifyListener(); // 校验证书 LicenseVerify(); } /** * 自定义校验模式比如license分发 */ public static void initCustomVerifyListener() { new CustomVerifyListenerService(); // new CustomVerifyListenerB(); } public static void LicenseVerify() { LicenseVerifyMg licenseVerifyManager = new LicenseVerifyMg(); LicenseResultVo verifyResult = licenseVerifyManager.verify(licenseVerifyProperties.getVerifyParam()); if (!verifyResult.getResult()) { System.out.println(verifyResult.getMessage()); } LicenseContent content = verifyResult.getContent(); LicenseExtraParamVo licenseCheck = (LicenseExtraParamVo) content.getExtra(); if (verifyResult.getResult()) { /** 增加业务系统监听,是否自定义验证 */ List customListenerList = IACustomVerifyListener.getCustomListenerList(); boolean compare = true; for (IACustomVerifyListener listener : customListenerList) { boolean verify = listener.verify(licenseCheck); compare = compare && verify; } if (true) { System.out.println("licnese 校验成功"); return; } else { throw new RuntimeException("license 校验失败"); } } throw new RuntimeException(verifyResult.getException().getMessage()); } public static String getLatestLicFilePath(String folderPath) { File folder = new File(folderPath); if (folder.isDirectory()) { File[] files = folder.listFiles(); if (files != null && files.length > 0) { // 按文件最后修改时间排序 Arrays.sort(files, Comparator.comparingLong(File::lastModified).reversed()); // 返回最新文件的路径 return files[0].getAbsolutePath(); } } // 如果文件夹中没有lic文件,返回null或者你认为合适的值 return null; } public static void test() { installListener(); LicenseVerify(); LicenseVerify(); LicenseVerify(); } }