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<IACustomVerifyListener> 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();
|
}
|
}
|