| | |
| | | package com.zy.system.entity.license; |
| | | |
| | | import com.core.common.Cools; |
| | | import com.zy.system.entity.LicenseInfos; |
| | | import com.zy.system.service.LicenseInfosService; |
| | | import com.zy.system.timer.LicenseTimer; |
| | | import de.schlichtherle.license.LicenseContent; |
| | | import org.apache.logging.log4j.LogManager; |
| | |
| | | import org.springframework.context.event.ContextRefreshedEvent; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.io.File; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | |
| | | @Value("${license.storePass}") |
| | | private String storePass; |
| | | |
| | | /** |
| | | * 证书生成路径 |
| | | */ |
| | | @Value("${license.licensePath}") |
| | | private String licensePath; |
| | | |
| | | /** |
| | | * 密钥库存储路径 |
| | | */ |
| | | @Value("${license.publicKeysStorePath}") |
| | | private String publicKeysStorePath; |
| | | @Autowired |
| | | private LicenseTimer licenseTimer; |
| | | @Autowired |
| | | private LicenseInfosService licenseInfosService; |
| | | |
| | | @Override |
| | | public void onApplicationEvent(ContextRefreshedEvent event) { |
| | |
| | | |
| | | //加载证书 |
| | | public boolean loadLicense() { |
| | | if(!Cools.isEmpty(licensePath)){ |
| | | return loadLicense(true); |
| | | } |
| | | |
| | | public boolean loadLicense(boolean fetchRemote) { |
| | | logger.info("++++++++ 开始加载许可证 ++++++++"); |
| | | |
| | | if (fetchRemote) { |
| | | try { |
| | | String publicKeysStoreFileName = this.getClass().getClassLoader().getResource(publicKeysStorePath).getPath(); |
| | | File publicKeysStoreFile = new File(publicKeysStoreFileName); |
| | | licenseTimer.getRemoteLicense(); |
| | | } catch (Exception ignored) { |
| | | } |
| | | } |
| | | |
| | | String licensePathFileName = this.getClass().getClassLoader().getResource(licensePath).getPath(); |
| | | File licensePathFile = new File(licensePathFileName); |
| | | |
| | | try { |
| | | LicenseVerifyParam param = new LicenseVerifyParam(); |
| | | param.setSubject(subject); |
| | | param.setPublicAlias(publicAlias); |
| | | param.setStorePass(storePass); |
| | | param.setLicensePath(licensePath); |
| | | param.setPublicKeysStorePath(publicKeysStorePath); |
| | | |
| | | LicenseVerify licenseVerify = new LicenseVerify(); |
| | | //安装证书 |
| | | LicenseContent install = licenseVerify.install(param); |
| | | String requestCode = LicenseUtils.buildRequestCode(subject); |
| | | LicenseInfos latestLicense = licenseInfosService.getLatestLicenseByRequestCode(requestCode); |
| | | |
| | | LicenseContent install = null; |
| | | if (latestLicense != null && latestLicense.getLicense() != null && !latestLicense.getLicense().trim().isEmpty()) { |
| | | install = licenseVerify.install(param, latestLicense.getLicense().trim()); |
| | | } |
| | | if (install == null) { |
| | | logger.info("许可证不存在"); |
| | | licenseTimer.setSystemSupport(false); |
| | | licenseTimer.setLicenseDays(0); |
| | | return false; |
| | | } |
| | | |
| | | logger.info("++++++++ 许可证加载结束 ++++++++"); |
| | | |
| | | logger.info("++++++++ 许可证加载标记,搜索修改 ++++++++"); |
| | | licenseTimer.setSystemSupport(true); |
| | | // licenseTimer.setLicenseDays(9999); |
| | | // return true; |
| | | |
| | | licenseTimer.setSystemSupport(install!=null); |
| | | |
| | | if (install != null) { |
| | | Date start = new Date(); |
| | | Date end = install.getNotAfter(); |
| | | Long starTime = start.getTime(); |
| | |
| | | Long num = endTime - starTime;//时间戳相差的毫秒数 |
| | | int day = (int) (num / 24 / 60 / 60 / 1000); |
| | | licenseTimer.setLicenseDays(day); |
| | | } |
| | | |
| | | |
| | | return install != null; |
| | | return true; |
| | | } catch (Exception e) { |
| | | return false; |
| | | } |
| | | } |
| | | logger.error("许可证加载失败", e); |
| | | licenseTimer.setSystemSupport(false); |
| | | licenseTimer.setLicenseDays(0); |
| | | return false; |
| | | } |
| | | } |
| | | } |