diff --git a/src/main/java/me/braydon/license/model/License.java b/src/main/java/me/braydon/license/model/License.java index 5d018f0..834ab37 100644 --- a/src/main/java/me/braydon/license/model/License.java +++ b/src/main/java/me/braydon/license/model/License.java @@ -7,7 +7,6 @@ import lombok.ToString; import me.braydon.license.exception.APIException; import me.braydon.license.exception.LicenseHwidLimitExceededException; import me.braydon.license.exception.LicenseIpLimitExceededException; -import org.mindrot.jbcrypt.BCrypt; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; @@ -129,13 +128,10 @@ public class License { /** * Invoked when this license is used. * - * @param ip the ip used - * @param ipSalt the IP salt to use - * @param hwid the hardware id used + * @param hashedIp the hashed ip used + * @param hwid the hardware id used */ - public void use(@NonNull String ip, @NonNull String ipSalt, @NonNull String hwid) throws APIException { - String hashedIp = BCrypt.hashpw(ip, ipSalt); // Hash the IP - + public void use(@NonNull String hashedIp, @NonNull String hwid) throws APIException { // IP limit has been exceeded if (!ips.contains(hashedIp) && ips.size() >= ipLimit) { throw new LicenseIpLimitExceededException(); diff --git a/src/main/java/me/braydon/license/service/LicenseService.java b/src/main/java/me/braydon/license/service/LicenseService.java index d2f4352..4135a27 100644 --- a/src/main/java/me/braydon/license/service/LicenseService.java +++ b/src/main/java/me/braydon/license/service/LicenseService.java @@ -106,14 +106,29 @@ public final class LicenseService { throw new LicenseNotFoundException(); } License license = optionalLicense.get(); // The license found + String hashedIp = BCrypt.hashpw(ip, ipsSalt); // Hash the IP // Log the license being used, if enabled if (discordService.isLogUses()) { // god i hate sending discord embeds, it's so big and ugly :( + boolean newIp = !license.getIps().contains(hashedIp); // If the IP is new + boolean newHwid = !license.getHwids().contains(hwid); + + // Constructing tags + StringBuilder tags = new StringBuilder(); + if (newIp) { // New IP + tags.append("New IP"); + } + if (newHwid) { // New HWID + if (tags.length() > 0) { + tags.append(" & "); + } + tags.append("New HWID"); + } long expirationDate = (license.getCreated().getTime() + license.getDuration()) / 1000L; discordService.sendLog(new EmbedBuilder() .setColor(Color.BLUE) - .setTitle("License Used") + .setTitle("License Used" + (!tags.isEmpty() ? " (" + tags + ")" : "")) .addField("License", "`" + MiscUtils.obfuscateKey(key) + "`", true @@ -169,7 +184,7 @@ public final class LicenseService { throw new LicenseExpiredException(); } try { - license.use(ip, ipsSalt, hwid); // Use the license + license.use(hashedIp, hwid); // Use the license repository.save(license); // Save the used license log.info("License key {} for product {} was used by {} ({})", key, product, ip, hwid); return license;