package com.zy.system.entity.license;
|
|
import com.core.common.Cools;
|
import de.schlichtherle.license.LicenseContent;
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationListener;
|
import org.springframework.context.event.ContextRefreshedEvent;
|
import org.springframework.stereotype.Component;
|
|
import java.io.File;
|
|
/**
|
* 在项目启动时安装证书
|
*/
|
@Component
|
public class LicenseCheckListener implements ApplicationListener<ContextRefreshedEvent> {
|
private static Logger logger = LogManager.getLogger(LicenseCheckListener.class);
|
|
/**
|
* 证书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;
|
|
@Override
|
public void onApplicationEvent(ContextRefreshedEvent event) {
|
//root application context 没有parent
|
ApplicationContext context = event.getApplicationContext().getParent();
|
if(context == null){
|
//loadLicense();
|
}
|
}
|
|
//加载证书
|
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(licensePathFile.getPath());
|
param.setPublicKeysStorePath(publicKeysStoreFile.getPath());
|
|
LicenseVerify licenseVerify = new LicenseVerify();
|
//安装证书
|
LicenseContent install = licenseVerify.install(param);
|
|
logger.info("++++++++ 许可证加载结束 ++++++++");
|
|
return install != null;
|
} catch (Exception e) {
|
return false;
|
}
|
}
|
|
return false;
|
}
|
}
|