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];
if (hash.equals(bot.hashing.getHash(context.splitInput[0], context.sender))) return Component.text("Valid hash").color(NamedTextColor.GREEN);
else if (hash.equals(bot.hashing.getOwnerHash(context.splitInput[0], context.sender))) return Component.text("Valid OwnerHash").color(NamedTextColor.GREEN);
if (
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;
}

View file

@ -143,13 +143,17 @@ public class CommandHandlerPlugin {
} else {
if (
command.trustLevel == TrustLevel.TRUSTED &&
!userHash.equals(bot.hashing.getHash(splitInput[0], context.sender)) &&
!userHash.equals(bot.hashing.getOwnerHash(splitInput[0], context.sender))
// mess?
!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);
if (
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);
}
}

View file

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