UPDATE: 优化程序激活码工具。
This commit is contained in:
@@ -8,7 +8,7 @@ import java.io.File;
|
||||
|
||||
@Data
|
||||
@ConfigurationProperties(prefix = "activate")
|
||||
public class ActiveProperties {
|
||||
public class ActivateProperties {
|
||||
private final String LICENSE_FILE_NAME = "license.key";
|
||||
|
||||
/**
|
||||
@@ -7,7 +7,7 @@ import cn.hutool.json.JSONUtil;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.common.utils.RSAUtil;
|
||||
import com.njcn.gather.tool.active.config.ActiveProperties;
|
||||
import com.njcn.gather.tool.active.config.ActivateProperties;
|
||||
import com.njcn.gather.tool.active.service.ActivateService;
|
||||
import com.njcn.gather.tool.active.vo.ActivationCodePlaintext;
|
||||
import com.njcn.gather.tool.active.vo.ActivationModule;
|
||||
@@ -17,13 +17,13 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@EnableConfigurationProperties(ActiveProperties.class)
|
||||
@EnableConfigurationProperties(ActivateProperties.class)
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@Service
|
||||
public class ActivateServiceImpl implements ActivateService {
|
||||
|
||||
private final ActiveProperties rsaProperties;
|
||||
private final ActivateProperties props;
|
||||
|
||||
@Override
|
||||
public String generateApplicationCode(ApplicationCodePlaintext data) {
|
||||
@@ -34,7 +34,7 @@ public class ActivateServiceImpl implements ActivateService {
|
||||
String plaintext = JSONUtil.toJsonStr(data);
|
||||
// RSA 加密
|
||||
try {
|
||||
return RSAUtil.encrypt(plaintext, RSAUtil.stringToPublicKey(rsaProperties.getPublicKey()));
|
||||
return RSAUtil.encrypt(plaintext, RSAUtil.stringToPublicKey(props.getPublicKey()));
|
||||
} catch (Exception e) {
|
||||
log.error("申请码加密失败", e);
|
||||
throw new BusinessException(CommonResponseEnum.FAIL, "申请码生成失败");
|
||||
@@ -45,7 +45,7 @@ public class ActivateServiceImpl implements ActivateService {
|
||||
public ActivationCodePlaintext verifyActivationCode(String activationCode) {
|
||||
String plaintext;
|
||||
try {
|
||||
plaintext = RSAUtil.decrypt(activationCode, RSAUtil.stringToPrivateKey(rsaProperties.getPrivateKey()));
|
||||
plaintext = RSAUtil.decrypt(activationCode, RSAUtil.stringToPrivateKey(props.getPrivateKey()));
|
||||
} catch (Exception e) {
|
||||
log.error("授权码解密失败", e);
|
||||
throw new BusinessException(CommonResponseEnum.FAIL, "无效的激活码");
|
||||
@@ -62,13 +62,13 @@ public class ActivateServiceImpl implements ActivateService {
|
||||
|
||||
@Override
|
||||
public ActivationCodePlaintext readLicenseFile() {
|
||||
String licenseFilePath = rsaProperties.getLicenseFilePath();
|
||||
String licenseFilePath = props.getLicenseFilePath();
|
||||
log.info("读取授权文件,{}", licenseFilePath);
|
||||
if (FileUtil.exist(licenseFilePath)) {
|
||||
String content = FileUtil.readUtf8String(licenseFilePath);
|
||||
String plaintext;
|
||||
try {
|
||||
plaintext = RSAUtil.decrypt(content, RSAUtil.stringToPrivateKey(rsaProperties.getPrivateKey()));
|
||||
plaintext = RSAUtil.decrypt(content, RSAUtil.stringToPrivateKey(props.getPrivateKey()));
|
||||
} catch (Exception e) {
|
||||
log.error("授权文件内容解密失败", e);
|
||||
throw new BusinessException(CommonResponseEnum.FAIL, "许可信息读取失败");
|
||||
@@ -83,7 +83,7 @@ public class ActivateServiceImpl implements ActivateService {
|
||||
// RSA 解密
|
||||
String plaintext;
|
||||
try {
|
||||
plaintext = RSAUtil.decrypt(applicationCode, RSAUtil.stringToPrivateKey(rsaProperties.getPrivateKey()));
|
||||
plaintext = RSAUtil.decrypt(applicationCode, RSAUtil.stringToPrivateKey(props.getPrivateKey()));
|
||||
} catch (Exception e) {
|
||||
log.error("申请码解密失败", e);
|
||||
throw new BusinessException(CommonResponseEnum.FAIL, "无效的申请码");
|
||||
@@ -113,7 +113,7 @@ public class ActivateServiceImpl implements ActivateService {
|
||||
String jsonStr = JSONUtil.toJsonStr(activationCodePlaintext);
|
||||
log.info("生成激活码明文:{}", jsonStr);
|
||||
try {
|
||||
return RSAUtil.encrypt(jsonStr, RSAUtil.stringToPublicKey(rsaProperties.getPublicKey()));
|
||||
return RSAUtil.encrypt(jsonStr, RSAUtil.stringToPublicKey(props.getPublicKey()));
|
||||
} catch (Exception e) {
|
||||
log.error("生成激活码失败", e);
|
||||
throw new BusinessException(CommonResponseEnum.FAIL, "生成激活码失败");
|
||||
@@ -123,9 +123,9 @@ public class ActivateServiceImpl implements ActivateService {
|
||||
/**
|
||||
* 添加或更新授权文件
|
||||
*
|
||||
* @param newActivationCodePlaintext
|
||||
* @param activationCode
|
||||
* @return
|
||||
* @param newActivationCodePlaintext 新授权码明文
|
||||
* @param activationCode 授权码
|
||||
* @return 最新授权码明文
|
||||
*/
|
||||
private ActivationCodePlaintext addOrUpdateLicenseFile(ActivationCodePlaintext newActivationCodePlaintext, String activationCode) {
|
||||
|
||||
@@ -147,7 +147,7 @@ public class ActivateServiceImpl implements ActivateService {
|
||||
log.error("授权码格式错误");
|
||||
throw new BusinessException(CommonResponseEnum.FAIL, "无效的激活码");
|
||||
}
|
||||
String licenseFilePath = rsaProperties.getLicenseFilePath();
|
||||
String licenseFilePath = props.getLicenseFilePath();
|
||||
log.info("授权文件路径:{}", licenseFilePath);
|
||||
ActivationCodePlaintext oldActivationCodePlaintext = this.readLicenseFile();
|
||||
if (oldActivationCodePlaintext == null) {
|
||||
@@ -172,7 +172,7 @@ public class ActivateServiceImpl implements ActivateService {
|
||||
String updateContent;
|
||||
// 重新加密
|
||||
try {
|
||||
updateContent = RSAUtil.encrypt(JSONUtil.toJsonStr(oldActivationCodePlaintext), RSAUtil.stringToPublicKey(rsaProperties.getPublicKey()));
|
||||
updateContent = RSAUtil.encrypt(JSONUtil.toJsonStr(oldActivationCodePlaintext), RSAUtil.stringToPublicKey(props.getPublicKey()));
|
||||
} catch (Exception e) {
|
||||
log.error("授权文件内容加密失败", e);
|
||||
throw new BusinessException(CommonResponseEnum.FAIL, "激活失败,请联系管理员");
|
||||
|
||||
Reference in New Issue
Block a user