section signs validation for the funny reason

This commit is contained in:
Chayapak 2023-08-27 11:02:50 +07:00
parent b7ff56e28d
commit dc6c159db3
3 changed files with 37 additions and 9 deletions

View file

@ -25,8 +25,15 @@ public class ValidateCommand extends Command {
final String hash = fullArgs[0]; final String hash = fullArgs[0];
if (hash.equals(bot.hashing.getHash(context.splitInput[0], context.sender))) return Component.text("Valid hash").color(NamedTextColor.GREEN); if (
else if (hash.equals(bot.hashing.getOwnerHash(context.splitInput[0], context.sender))) return Component.text("Valid OwnerHash").color(NamedTextColor.GREEN); hash.equals(bot.hashing.getHash(context.splitInput[0], context.sender, true)) ||
hash.equals(bot.hashing.getHash(context.splitInput[0], context.sender, false))
) return Component.text("Valid hash").color(NamedTextColor.GREEN);
else if (
hash.equals(bot.hashing.getOwnerHash(context.splitInput[0], context.sender, true)) ||
hash.equals(bot.hashing.getOwnerHash(context.splitInput[0], context.sender, false))
) return Component.text("Valid OwnerHash").color(NamedTextColor.GREEN);
return null; return null;
} }

View file

@ -143,13 +143,17 @@ public class CommandHandlerPlugin {
} else { } else {
if ( if (
command.trustLevel == TrustLevel.TRUSTED && command.trustLevel == TrustLevel.TRUSTED &&
!userHash.equals(bot.hashing.getHash(splitInput[0], context.sender)) && // mess?
!userHash.equals(bot.hashing.getOwnerHash(splitInput[0], context.sender)) !userHash.equals(bot.hashing.getHash(splitInput[0], context.sender, true)) &&
!userHash.equals(bot.hashing.getOwnerHash(splitInput[0], context.sender, true)) &&
!userHash.equals(bot.hashing.getHash(splitInput[0], context.sender, false)) &&
!userHash.equals(bot.hashing.getOwnerHash(splitInput[0], context.sender, false))
) return Component.text("Invalid hash").color(NamedTextColor.RED); ) return Component.text("Invalid hash").color(NamedTextColor.RED);
if ( if (
command.trustLevel == TrustLevel.OWNER && command.trustLevel == TrustLevel.OWNER &&
!userHash.equals(bot.hashing.getOwnerHash(splitInput[0], context.sender)) !userHash.equals(bot.hashing.getOwnerHash(splitInput[0], context.sender, false)) &&
!userHash.equals(bot.hashing.getOwnerHash(splitInput[0], context.sender, true))
) return Component.text("Invalid OwnerHash").color(NamedTextColor.RED); ) return Component.text("Invalid OwnerHash").color(NamedTextColor.RED);
} }
} }

View file

@ -5,6 +5,7 @@ import land.chipmunk.chayapak.chomens_bot.Bot;
import land.chipmunk.chayapak.chomens_bot.data.chat.PlayerEntry; import land.chipmunk.chayapak.chomens_bot.data.chat.PlayerEntry;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Arrays;
public class HashingPlugin { public class HashingPlugin {
private final Bot bot; private final Bot bot;
@ -13,29 +14,45 @@ public class HashingPlugin {
this.bot = bot; this.bot = bot;
} }
public String getHash (String prefix, PlayerEntry sender) { public String getHash (String prefix, PlayerEntry sender, boolean sectionSigns) {
final long time = System.currentTimeMillis() / 5_000; final long time = System.currentTimeMillis() / 5_000;
final String key = bot.config.keys.normalKey; final String key = bot.config.keys.normalKey;
final String hashValue = sender.profile.getIdAsString() + prefix + time + key; final String hashValue = sender.profile.getIdAsString() + prefix + time + key;
return Hashing.sha256() final String hash = Hashing.sha256()
.hashString(hashValue, StandardCharsets.UTF_8) .hashString(hashValue, StandardCharsets.UTF_8)
.toString() .toString()
.substring(0, 16); .substring(0, 16);
return sectionSigns ?
String.join("",
Arrays.stream(hash.split(""))
.map((letter) -> "§" + letter)
.toArray(String[]::new)
) :
hash;
} }
public String getOwnerHash (String prefix, PlayerEntry sender) { public String getOwnerHash (String prefix, PlayerEntry sender, boolean sectionSigns) {
final long time = System.currentTimeMillis() / 5_000; final long time = System.currentTimeMillis() / 5_000;
final String key = bot.config.keys.ownerKey; final String key = bot.config.keys.ownerKey;
final String value = sender.profile.getIdAsString() + prefix + time + key; final String value = sender.profile.getIdAsString() + prefix + time + key;
return Hashing.sha256() final String hash = Hashing.sha256()
.hashString(value, StandardCharsets.UTF_8) .hashString(value, StandardCharsets.UTF_8)
.toString() .toString()
.substring(0, 16); .substring(0, 16);
return sectionSigns ?
String.join("",
Arrays.stream(hash.split(""))
.map((letter) -> "§" + letter)
.toArray(String[]::new)
) :
hash;
} }
} }