2023-02-16 15:28:15 +08:00
|
|
|
package com.license.service.impl;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
|
|
|
|
import cn.hutool.core.io.FileUtil;
|
|
|
|
|
import com.license.entity.dto.*;
|
|
|
|
|
import com.license.service.LicenseService;
|
|
|
|
|
import com.zhgd.xmgl.util.Base64Util;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @author 邱平毅
|
|
|
|
|
* @ClassName LicenseServiceImpl
|
|
|
|
|
* @date 2022/9/20 9:42
|
|
|
|
|
* @Version 1.0
|
|
|
|
|
*/
|
|
|
|
|
@Slf4j
|
|
|
|
|
@Service
|
|
|
|
|
public class LicenseServiceImpl implements LicenseService {
|
2023-06-28 17:12:24 +08:00
|
|
|
@Value("${license.publicKeysStorePath:}")
|
2023-02-16 15:28:15 +08:00
|
|
|
String publicKeysStorePath;
|
|
|
|
|
|
2023-06-28 17:12:24 +08:00
|
|
|
@Value("${license.licensePath:}")
|
2023-02-16 15:28:15 +08:00
|
|
|
String licensePath;
|
|
|
|
|
/**
|
|
|
|
|
* 证书subject
|
|
|
|
|
*/
|
|
|
|
|
private String subject = "zhgd";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 公钥别称
|
|
|
|
|
*/
|
|
|
|
|
private String publicAlias = "publicCert";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 访问公钥库的密码
|
|
|
|
|
*/
|
|
|
|
|
private String storePass = "public_password1234";
|
|
|
|
|
|
|
|
|
|
@Value("${is-license}")
|
|
|
|
|
private Boolean isLicense;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void installLicense() throws Exception {
|
|
|
|
|
if (isLicense) {
|
|
|
|
|
if (StringUtils.isNotBlank(licensePath)) {
|
|
|
|
|
log.info("++++++++ 开始安装证书 ++++++++");
|
|
|
|
|
LicenseVerifyParam param = new LicenseVerifyParam();
|
|
|
|
|
param.setSubject(subject);
|
|
|
|
|
param.setPublicAlias(publicAlias);
|
|
|
|
|
param.setStorePass(storePass);
|
|
|
|
|
param.setLicensePath(licensePath);
|
|
|
|
|
param.setPublicKeysStorePath(publicKeysStorePath);
|
|
|
|
|
LicenseVerify licenseVerify = new LicenseVerify();
|
|
|
|
|
//安装证书
|
|
|
|
|
licenseVerify.install(param);
|
|
|
|
|
log.info("++++++++ 证书安装结束 ++++++++");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取服务器硬件信息
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public LicenseCheckModel getServerInfos() {
|
|
|
|
|
log.info("获取硬件信息中,当前时间:{}", LocalDateTimeUtil.now());
|
|
|
|
|
//操作系统类型
|
|
|
|
|
String osName = System.getProperty("os.name").toLowerCase();
|
|
|
|
|
|
|
|
|
|
AbstractServerInfos abstractServerInfos;
|
|
|
|
|
|
|
|
|
|
//根据不同操作系统类型选择不同的数据获取方法
|
|
|
|
|
if (osName.startsWith("windows")) {
|
|
|
|
|
abstractServerInfos = new WindowsServerInfos();
|
|
|
|
|
} else if (osName.startsWith("linux")) {
|
|
|
|
|
abstractServerInfos = new LinuxServerInfos();
|
|
|
|
|
} else {//其他服务器类型
|
|
|
|
|
abstractServerInfos = new LinuxServerInfos();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return abstractServerInfos.getServerInfos();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void upload(Map fileBaseMap) throws Exception {
|
|
|
|
|
log.info("授权中,接下来打开新的大门");
|
|
|
|
|
String pubDir = publicKeysStorePath.substring(0, publicKeysStorePath.lastIndexOf("/"));
|
|
|
|
|
String pubName = publicKeysStorePath.substring(publicKeysStorePath.lastIndexOf("/") + 1);
|
|
|
|
|
Base64Util.convertBase64ToFile(fileBaseMap.get("pub").toString(), pubDir, pubName);
|
|
|
|
|
String licDir = licensePath.substring(0, licensePath.lastIndexOf("/"));
|
|
|
|
|
String licName = licensePath.substring(licensePath.lastIndexOf("/") + 1);
|
|
|
|
|
Base64Util.convertBase64ToFile(fileBaseMap.get("lic").toString(), licDir, licName);
|
|
|
|
|
installLicense();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void removeLicense() {
|
|
|
|
|
log.info("清除程序授权中···");
|
|
|
|
|
FileUtil.del(licensePath);
|
|
|
|
|
FileUtil.del(publicKeysStorePath);
|
|
|
|
|
LicenseManagerHolder.setLicenseManager(null);
|
|
|
|
|
}
|
|
|
|
|
}
|