mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-06-06 18:30:57 +00:00
fingerprint
This commit is contained in:
parent
83e93688ee
commit
e660237e28
@ -12,6 +12,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|||||||
import com.posthog.java.shaded.org.json.JSONObject;
|
import com.posthog.java.shaded.org.json.JSONObject;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import stirling.software.SPDF.utils.GeneralUtils;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ -32,7 +33,6 @@ public class KeygenLicenseVerifier {
|
|||||||
|
|
||||||
// First, try to validate the license
|
// First, try to validate the license
|
||||||
JsonNode validationResponse = validateLicense(licenseKey, machineFingerprint);
|
JsonNode validationResponse = validateLicense(licenseKey, machineFingerprint);
|
||||||
log.info(validationResponse.asText());
|
|
||||||
if (validationResponse != null) {
|
if (validationResponse != null) {
|
||||||
boolean isValid = validationResponse.path("meta").path("valid").asBoolean();
|
boolean isValid = validationResponse.path("meta").path("valid").asBoolean();
|
||||||
String licenseId = validationResponse.path("data").path("id").asText();
|
String licenseId = validationResponse.path("data").path("id").asText();
|
||||||
@ -185,8 +185,6 @@ public class KeygenLicenseVerifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static String generateMachineFingerprint() {
|
private static String generateMachineFingerprint() {
|
||||||
// This is a simplified example. In a real-world scenario, you'd want to generate
|
return GeneralUtils.generateMachineFingerprint();
|
||||||
// a more robust and unique fingerprint based on hardware characteristics.
|
|
||||||
return "example-fingerprint";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,15 +34,19 @@ public class LicenseKeyChecker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void checkLicense() {
|
private void checkLicense() {
|
||||||
log.info(applicationProperties.toString());
|
|
||||||
log.info(applicationProperties.getEnterpriseEdition().toString());
|
|
||||||
if (!applicationProperties.getEnterpriseEdition().isEnabled()) {
|
if (!applicationProperties.getEnterpriseEdition().isEnabled()) {
|
||||||
enterpriseEnbaledResult = false;
|
enterpriseEnbaledResult = false;
|
||||||
} else {
|
} else {
|
||||||
enterpriseEnbaledResult =
|
enterpriseEnbaledResult =
|
||||||
licenseService.verifyLicense(
|
licenseService.verifyLicense(
|
||||||
applicationProperties.getEnterpriseEdition().getKey());
|
applicationProperties.getEnterpriseEdition().getKey());
|
||||||
|
if (enterpriseEnbaledResult) {
|
||||||
|
log.info("License key is valid.");
|
||||||
|
} else {
|
||||||
|
log.info("License key is invalid.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateLicenseKey(String newKey) throws IOException {
|
public void updateLicenseKey(String newKey) throws IOException {
|
||||||
|
@ -30,6 +30,11 @@ import com.fathzer.soft.javaluator.DoubleEvaluator;
|
|||||||
|
|
||||||
import io.github.pixee.security.HostValidator;
|
import io.github.pixee.security.HostValidator;
|
||||||
import io.github.pixee.security.Urls;
|
import io.github.pixee.security.Urls;
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.net.NetworkInterface;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.security.MessageDigest;
|
||||||
|
import java.util.Enumeration;
|
||||||
|
|
||||||
public class GeneralUtils {
|
public class GeneralUtils {
|
||||||
|
|
||||||
@ -301,4 +306,47 @@ public class GeneralUtils {
|
|||||||
}
|
}
|
||||||
settingsYml.save();
|
settingsYml.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String generateMachineFingerprint() {
|
||||||
|
try {
|
||||||
|
// Get the MAC address
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
InetAddress ip = InetAddress.getLocalHost();
|
||||||
|
NetworkInterface network = NetworkInterface.getByInetAddress(ip);
|
||||||
|
|
||||||
|
if (network == null) {
|
||||||
|
Enumeration<NetworkInterface> networks = NetworkInterface.getNetworkInterfaces();
|
||||||
|
while (networks.hasMoreElements()) {
|
||||||
|
NetworkInterface net = networks.nextElement();
|
||||||
|
byte[] mac = net.getHardwareAddress();
|
||||||
|
if (mac != null) {
|
||||||
|
for (int i = 0; i < mac.length; i++) {
|
||||||
|
sb.append(String.format("%02X", mac[i]));
|
||||||
|
}
|
||||||
|
break; // Use the first network interface with a MAC address
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
byte[] mac = network.getHardwareAddress();
|
||||||
|
if (mac != null) {
|
||||||
|
for (int i = 0; i < mac.length; i++) {
|
||||||
|
sb.append(String.format("%02X", mac[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hash the MAC address for privacy and consistency
|
||||||
|
MessageDigest md = MessageDigest.getInstance("SHA-256");
|
||||||
|
byte[] hash = md.digest(sb.toString().getBytes(StandardCharsets.UTF_8));
|
||||||
|
StringBuilder fingerprint = new StringBuilder();
|
||||||
|
for (byte b : hash) {
|
||||||
|
fingerprint.append(String.format("%02x", b));
|
||||||
|
}
|
||||||
|
|
||||||
|
return fingerprint.toString();
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
return "GenericID";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user