diff --git a/nl-verify-check-sdk/src/main/java/org/nl/api/LicenseActivityParam.java b/nl-verify-check-sdk/src/main/java/org/nl/api/LicenseActivityParam.java new file mode 100644 index 0000000..6319e8c --- /dev/null +++ b/nl-verify-check-sdk/src/main/java/org/nl/api/LicenseActivityParam.java @@ -0,0 +1,15 @@ +package org.nl.api; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 激活参数 + * @Author: lyd + * @Date: 2025/9/23 + */ +@Data +public class LicenseActivityParam implements Serializable { + private String code; +} diff --git a/nl-verify-check-sdk/src/main/java/org/nl/api/LicenseController.java b/nl-verify-check-sdk/src/main/java/org/nl/api/LicenseController.java new file mode 100644 index 0000000..2761027 --- /dev/null +++ b/nl-verify-check-sdk/src/main/java/org/nl/api/LicenseController.java @@ -0,0 +1,34 @@ +package org.nl.api; + +import lombok.AllArgsConstructor; +import org.nl.core.LicenseResult; +import org.nl.core.LicenseVerifier; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +/** + * 主要做的是激活的功能 + * @Author: lyd + * @Date: 2025/9/22 + */ +@RestController +@RequestMapping("/api/verify") +@AllArgsConstructor +public class LicenseController { + + private final LicenseVerifier verifier; + + @PostMapping("/activity") + public ResponseEntity activity(@RequestBody LicenseActivityParam param) { + if (null == param.getCode()) { + throw new RuntimeException("激活码不能为空!"); + } + // 校验激活码是否正确 + LicenseResult verify = verifier.verify(param.getCode()); + if (true == verify.getResult()) { + // 存到文件中 + } + return new ResponseEntity<>(verify, HttpStatus.OK); + } +} diff --git a/nl-verify-check-sdk/src/main/java/org/nl/core/LicenseAutoConfiguration.java b/nl-verify-check-sdk/src/main/java/org/nl/core/LicenseAutoConfiguration.java index 723faeb..ace1c38 100644 --- a/nl-verify-check-sdk/src/main/java/org/nl/core/LicenseAutoConfiguration.java +++ b/nl-verify-check-sdk/src/main/java/org/nl/core/LicenseAutoConfiguration.java @@ -28,8 +28,8 @@ public class LicenseAutoConfiguration implements WebMvcConfigurer { @Bean @ConditionalOnMissingBean - public LicenseVerifier licenseVerifier(RSAUtil rsaUtil) { - return new LicenseVerifier(rsaUtil); + public LicenseVerifier licenseVerifier(RSAUtil rsaUtil, LicenseProperties properties) { + return new LicenseVerifier(rsaUtil, properties); } @Bean diff --git a/nl-verify-check-sdk/src/main/java/org/nl/core/LicenseProperties.java b/nl-verify-check-sdk/src/main/java/org/nl/core/LicenseProperties.java index e3dd872..0e0356f 100644 --- a/nl-verify-check-sdk/src/main/java/org/nl/core/LicenseProperties.java +++ b/nl-verify-check-sdk/src/main/java/org/nl/core/LicenseProperties.java @@ -13,6 +13,7 @@ public class LicenseProperties { private String header = "cdk"; /** 私钥资源位置,默认 classpath:private_key.txt */ private String privateKeyLocation = "classpath:private_key.txt"; + private String sdkLocation = "classpath:sdk.txt"; public String getHeader() { return header; @@ -29,4 +30,12 @@ public class LicenseProperties { public void setPrivateKeyLocation(String privateKeyLocation) { this.privateKeyLocation = privateKeyLocation; } + + public String getSdkLocation() { + return sdkLocation; + } + + public void setSdkLocation(String sdkLocation) { + this.sdkLocation = sdkLocation; + } } diff --git a/nl-verify-check-sdk/src/main/java/org/nl/core/LicenseVerifier.java b/nl-verify-check-sdk/src/main/java/org/nl/core/LicenseVerifier.java index 8085f05..756a650 100644 --- a/nl-verify-check-sdk/src/main/java/org/nl/core/LicenseVerifier.java +++ b/nl-verify-check-sdk/src/main/java/org/nl/core/LicenseVerifier.java @@ -12,8 +12,11 @@ import java.time.format.DateTimeFormatter; public class LicenseVerifier { private final RSAUtil rsaUtil; - public LicenseVerifier(RSAUtil rsaUtil) { + private final LicenseProperties properties; + + public LicenseVerifier(RSAUtil rsaUtil, LicenseProperties properties) { this.rsaUtil = rsaUtil; + this.properties = properties; } public LicenseResult verify(String authCode) { @@ -23,15 +26,24 @@ public class LicenseVerifier { try { String expirationStr = rsaUtil.decrypt(authCode); if ("-1".equals(expirationStr)) { - return LicenseResult.requestOk("永久授权", expirationStr); + return LicenseResult.requestOk("永久授权", authCode); } LocalDate expirationDate = LocalDate.parse(expirationStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); if (LocalDate.now().isAfter(expirationDate)) { - return LicenseResult.requestResult(false, "授权码已到期", expirationStr); + return LicenseResult.requestResult(false, "授权码已到期", authCode); } - return LicenseResult.requestOk("授权码有效", expirationStr); + return LicenseResult.requestOk("授权码有效", authCode); } catch (Exception e) { - return LicenseResult.requestResult(false, "解密失败或格式错误", null); + return LicenseResult.requestResult(false, "解密失败或格式错误", authCode); } } + + public void install(String authCode) { + // 存储SDK到文件中(没有文件则创建) + String sdkLocation = properties.getSdkLocation(); + + } + public void unInstall(LicenseResult result) { + + } } diff --git a/nl-verify-check-sdk/src/main/java/org/nl/util/RSAUtil.java b/nl-verify-check-sdk/src/main/java/org/nl/util/RSAUtil.java index d191a66..6f62d24 100644 --- a/nl-verify-check-sdk/src/main/java/org/nl/util/RSAUtil.java +++ b/nl-verify-check-sdk/src/main/java/org/nl/util/RSAUtil.java @@ -3,11 +3,9 @@ package org.nl.util; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; -import org.springframework.util.ResourceUtils; import javax.crypto.Cipher; import java.io.BufferedReader; -import java.io.FileReader; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; @@ -37,8 +35,8 @@ public class RSAUtil { if (privateKey == null) { Resource resource = resourceLoader.getResource(privateKeyLocation); try (InputStream is = resource.getInputStream(); - InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8); - BufferedReader reader = new BufferedReader(isr)) { + InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8); + BufferedReader reader = new BufferedReader(isr)) { StringBuilder sb = new StringBuilder(); String line; while ((line = reader.readLine()) != null) {