diff --git a/plugin.yml b/plugin.yml index a6a305f..01537e5 100755 --- a/plugin.yml +++ b/plugin.yml @@ -1,5 +1,5 @@ name: DiscordWhitelister -version: 1.0.6 +version: 1.0.7 author: Joe Shimell main: uk.co.angrybee.joe.DiscordWhitelister description: Discord whitelister bot. \ No newline at end of file diff --git a/src/main/java/uk/co/angrybee/joe/DiscordWhitelister.java b/src/main/java/uk/co/angrybee/joe/DiscordWhitelister.java index 1acc90b..99403b2 100755 --- a/src/main/java/uk/co/angrybee/joe/DiscordWhitelister.java +++ b/src/main/java/uk/co/angrybee/joe/DiscordWhitelister.java @@ -210,6 +210,8 @@ public class DiscordWhitelister extends JavaPlugin List tempAddRoles = Arrays.asList("Mod", "Whitelister"); getWhitelisterBotConfig().set("add-roles", tempAddRoles); + getWhitelisterBotConfig().set("username-validation", true); + getWhitelisterBotConfig().set("removed-list-enabled", true); // if the limited whitelist feature should be enabled diff --git a/src/main/java/uk/co/angrybee/joe/ServerDiscordClient.java b/src/main/java/uk/co/angrybee/joe/ServerDiscordClient.java index ab709e3..e9e6f8d 100755 --- a/src/main/java/uk/co/angrybee/joe/ServerDiscordClient.java +++ b/src/main/java/uk/co/angrybee/joe/ServerDiscordClient.java @@ -27,6 +27,9 @@ public class ServerDiscordClient extends ListenerAdapter public static String[] allowedToAddRoles; public static String[] allowedToAddLimitedRoles; + final char[] validCharacters = {'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', + 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '_'}; + public void InitializeClient(String clientToken) { try @@ -122,7 +125,7 @@ public class ServerDiscordClient extends ListenerAdapter if(userCanAddRemove || userCanAdd) { channel.sendMessage("```Discord Whitelister Bot For Spigot" + System.lineSeparator() + - "Version: 1.0.5" + System.lineSeparator() + "Links:" + System.lineSeparator() + + "Version: 1.0.7" + System.lineSeparator() + "Links:" + System.lineSeparator() + "https://www.spigotmc.org/resources/discord-whitelister.69929/" + System.lineSeparator() + "https://github.com/JoeShimo/DiscordWhitelisterBot-Spigot" + System.lineSeparator() + "Commands:" + System.lineSeparator() + "Add:" + System.lineSeparator() + "!whitelist add -- Usage: Adds a user to the whitelist" + System.lineSeparator() + @@ -168,6 +171,8 @@ public class ServerDiscordClient extends ListenerAdapter final String finalNameToWhitelist = nameToWhitelist; + final char[] finalNameToWhitelistChar = finalNameToWhitelist.toCharArray(); + if(userCanAddRemove || userCanAdd) { if(finalNameToWhitelist.isEmpty()) @@ -178,6 +183,26 @@ public class ServerDiscordClient extends ListenerAdapter } else { + if(DiscordWhitelister.getWhitelisterBotConfig().getBoolean("username-validation")) + { + // invalid char check + for(int a = 0; a < finalNameToWhitelistChar.length; ++a) + { + if(new String(validCharacters).indexOf(finalNameToWhitelistChar[a]) == -1) + { + channel.sendMessage(author.getAsMention() + ", the username you have specified contains invalid characters. **Only letters, numbers and underscores are allowed**.").queue(); + return; + } + } + + // length check + if(finalNameToWhitelist.length() < 3 || finalNameToWhitelist.length() > 16) + { + channel.sendMessage(author.getAsMention() + ", the username you have specified either contains too few or too many characters. **Usernames can only consist of 3-16 characters**.").queue(); + return; + } + } + File whitelistJSON = (new File(".", "whitelist.json")); DiscordWhitelister.getPlugin().getLogger().info(author.getName() + "(" + author.getId() + ") attempted to whitelist: " + finalNameToWhitelist); @@ -218,7 +243,7 @@ public class ServerDiscordClient extends ListenerAdapter } else { - channel.sendMessage(author.getAsMention() + ", failed to add `" + finalNameToWhitelist + "` to the whitelist, this is most likely due to an invalid Minecraft username").queue(); + channel.sendMessage(author.getAsMention() + ", failed to add `" + finalNameToWhitelist + "` to the whitelist, this is most likely due to an invalid Minecraft username.").queue(); } return null; }); @@ -242,6 +267,30 @@ public class ServerDiscordClient extends ListenerAdapter } else { + if(DiscordWhitelister.getWhitelisterBotConfig().getBoolean("username-validation")) + { + // invalid char check + for(int a = 0; a < finalNameToWhitelistChar.length; ++a) + { + if(new String(validCharacters).indexOf(finalNameToWhitelistChar[a]) == -1) + { + channel.sendMessage(author.getAsMention() + ", the username you have specified contains invalid characters. **Only letters, numbers and underscores are allowed**." + + " You have **" + (whitelistLimit - timesWhitelisted) + + " out of " + DiscordWhitelister.getWhitelisterBotConfig().getString("max-whitelist-amount") + "** whitelists remaining.").queue(); + return; + } + } + + // length check + if(finalNameToWhitelist.length() < 3 || finalNameToWhitelist.length() > 16) + { + channel.sendMessage(author.getAsMention() + ", the username you have specified either contains too few or too many characters. **Usernames can only consist of 3-16 characters**." + + " You have **" + (whitelistLimit - timesWhitelisted) + + " out of " + DiscordWhitelister.getWhitelisterBotConfig().getString("max-whitelist-amount") + "** whitelists remaining.").queue(); + return; + } + } + File whitelistJSON = (new File(".", "whitelist.json")); DiscordWhitelister.getPlugin().getLogger().info(author.getName() + "(" + author.getId() + ") attempted to whitelist: " + finalNameToWhitelist