From 68d737a08c94a0dbef0aae6a5620d62ecf52bf1d Mon Sep 17 00:00:00 2001 From: TheTrouper <93684527+thetrouper@users.noreply.github.com> Date: Wed, 16 Aug 2023 15:56:43 -0500 Subject: [PATCH] Improved auth security --- .../github/thetrouper/sentinel/Sentinel.java | 116 ++++++++++-------- .../thetrouper/sentinel/events/NBTEvents.java | 13 +- 2 files changed, 68 insertions(+), 61 deletions(-) diff --git a/src/main/java/io/github/thetrouper/sentinel/Sentinel.java b/src/main/java/io/github/thetrouper/sentinel/Sentinel.java index 44fc971..7e1e1c8 100644 --- a/src/main/java/io/github/thetrouper/sentinel/Sentinel.java +++ b/src/main/java/io/github/thetrouper/sentinel/Sentinel.java @@ -11,6 +11,7 @@ import io.github.thetrouper.sentinel.server.functions.AntiSpam; import io.github.thetrouper.sentinel.server.functions.Authenticator; import io.github.thetrouper.sentinel.server.functions.ProfanityFilter; import io.github.thetrouper.sentinel.server.util.FileUtils; +import io.github.thetrouper.sentinel.server.util.Randomizer; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.plugin.PluginManager; @@ -37,66 +38,77 @@ public final class Sentinel extends JavaPlugin { */ @Override public void onEnable() { + log.info("\n]======------ Pre-load started! ------======["); instance = this; Config.loadConfiguration(); String serverID = Authenticator.getServerID(); - log.info("Your license key is: " + key + " Your server ID is: " + serverID); - switch (Authenticator.authorize(key, serverID)) { - case "AUTHORIZED": - log.info("Authentication Success!"); - break; - case "INVALID-ID": + log.info("\n]====---- Requesting Authentication ----====[ \n- license Key: " + key + " \n- Server ID: " + serverID); + String authStatus = "ERROR"; + try { + authStatus = Authenticator.authorize(key, serverID); + } catch (Exception e) { + e.printStackTrace(); + } + switch (authStatus) { + case "AUTHORIZED" -> { + log.info("]======----- Auth Success! -----======["); + // Init + getConfig().options().copyDefaults(); + saveDefaultConfig(); + + + // Plugin startup logic + log.info("Sentinel has loaded! (" + getDescription().getVersion() + ")"); + + // Enable Functions + AntiSpam.enableAntiSpam(); + ProfanityFilter.enableAntiSwear(); + + prefix = Config.Plugin.getPrefix(); + + // Commands -> BE SURE TO REGISTER ANY NEW COMMANDS IN PLUGIN.YML (src/main/java/resources/plugin.yml)! + new SentinelCommand().register(); + new MessageCommand().register(); + new ReplyCommand().register(); + new ReopCommand().register(); + new SocialSpyCommand().register(); + + // Events + manager.registerEvents(new CommandEvent(),this); + manager.registerEvents(new CMDBlockExecute(), this); + manager.registerEvents(new CMDBlockPlace(), this); + manager.registerEvents(new CMDBlockUse(), this); + manager.registerEvents(new CMDMinecartPlace(), this); + manager.registerEvents(new CMDMinecartUse(), this); + manager.registerEvents(new NBTEvents(), this); + manager.registerEvents(new ChatEvent(),this); + + // Scheduled timers + Bukkit.getScheduler().runTaskTimer(this, AntiSpam::decayHeat,0, 20); + Bukkit.getScheduler().runTaskTimer(this, ProfanityFilter::decayScore,0,1200); + log.info("\n" + + " ____ __ ___ \n" + + "/\\ _`\\ /\\ \\__ __ /\\_ \\ \n" + + "\\ \\,\\L\\_\\ __ ___\\ \\ ,_\\/\\_\\ ___ __\\//\\ \\ \n" + + " \\/_\\__ \\ /'__`\\/' _ `\\ \\ \\/\\/\\ \\ /' _ `\\ /'__`\\\\ \\ \\ \n" + + " /\\ \\L\\ \\/\\ __//\\ \\/\\ \\ \\ \\_\\ \\ \\/\\ \\/\\ \\/\\ __/ \\_\\ \\_ \n" + + " \\ `\\____\\ \\____\\ \\_\\ \\_\\ \\__\\\\ \\_\\ \\_\\ \\_\\ \\____\\/\\____\\\n" + + " \\/_____/\\/____/\\/_/\\/_/\\/__/ \\/_/\\/_/\\/_/\\/____/\\/____/\n" + + " ]====---- Advanced Anti-Grief & Chat Filter ----====["); + } + case "INVALID-ID" -> { log.info("Authentication Failure, You have not whitelisted this server ID yet."); getServer().getPluginManager().disablePlugin(this); - break; - case "UNREGISTERED": + } + case "UNREGISTERED" -> { log.warning("Authentication Failure, YOU SHALL NOT PASS! License: " + key + " Server ID: " + serverID); getServer().getPluginManager().disablePlugin(this); - return; + } + case "ERROR" -> { + log.warning("Hmmmmmm thats not right... License: " + key + " Server ID: " + serverID + "\nPlease report the above stacktrace."); + getServer().getPluginManager().disablePlugin(this); + } } - // Files - getConfig().options().copyDefaults(); - saveDefaultConfig(); - - - // Plugin startup logic - log.info("Sentinel has loaded! (" + getDescription().getVersion() + ")"); - - // Enable Functions - AntiSpam.enableAntiSpam(); - ProfanityFilter.enableAntiSwear(); - - prefix = Config.Plugin.getPrefix(); - - // Commands -> BE SURE TO REGISTER ANY NEW COMMANDS IN PLUGIN.YML (src/main/java/resources/plugin.yml)! - new SentinelCommand().register(); - new MessageCommand().register(); - new ReplyCommand().register(); - new ReopCommand().register(); - new SocialSpyCommand().register(); - - // Events - manager.registerEvents(new CommandEvent(),this); - manager.registerEvents(new CMDBlockExecute(), this); - manager.registerEvents(new CMDBlockPlace(), this); - manager.registerEvents(new CMDBlockUse(), this); - manager.registerEvents(new CMDMinecartPlace(), this); - manager.registerEvents(new CMDMinecartUse(), this); - manager.registerEvents(new NBTEvents(), this); - manager.registerEvents(new ChatEvent(),this); - - // Scheduled timers - Bukkit.getScheduler().runTaskTimer(this, AntiSpam::decayHeat,0, 20); - Bukkit.getScheduler().runTaskTimer(this, ProfanityFilter::decayScore,0,1200); - log.info("\n" + - " ____ __ ___ \n" + - "/\\ _`\\ /\\ \\__ __ /\\_ \\ \n" + - "\\ \\,\\L\\_\\ __ ___\\ \\ ,_\\/\\_\\ ___ __\\//\\ \\ \n" + - " \\/_\\__ \\ /'__`\\/' _ `\\ \\ \\/\\/\\ \\ /' _ `\\ /'__`\\\\ \\ \\ \n" + - " /\\ \\L\\ \\/\\ __//\\ \\/\\ \\ \\ \\_\\ \\ \\/\\ \\/\\ \\/\\ __/ \\_\\ \\_ \n" + - " \\ `\\____\\ \\____\\ \\_\\ \\_\\ \\__\\\\ \\_\\ \\_\\ \\_\\ \\____\\/\\____\\\n" + - " \\/_____/\\/____/\\/_/\\/_/\\/__/ \\/_/\\/_/\\/_/\\/____/\\/____/\n" + - " ]====---- Advanced Anti-Grief & Chat Filter ----====["); } /** diff --git a/src/main/java/io/github/thetrouper/sentinel/events/NBTEvents.java b/src/main/java/io/github/thetrouper/sentinel/events/NBTEvents.java index 213152e..b3ae342 100644 --- a/src/main/java/io/github/thetrouper/sentinel/events/NBTEvents.java +++ b/src/main/java/io/github/thetrouper/sentinel/events/NBTEvents.java @@ -88,6 +88,10 @@ public class NBTEvents implements Listener { } // ARMOR + if (meta.hasEnchant(Enchantment.BINDING_CURSE)) { + final int level = meta.getEnchantLevel(Enchantment.BINDING_CURSE); + return level > Config.maxCurseOfBinding || level > Config.globalMaxEnchant; + } if (meta.hasEnchant(Enchantment.WATER_WORKER)) { final int level = meta.getEnchantLevel(Enchantment.WATER_WORKER); return level > Config.maxAquaAffinity || level > Config.globalMaxEnchant; @@ -100,10 +104,6 @@ public class NBTEvents implements Listener { final int level = meta.getEnchantLevel(Enchantment.PROTECTION_EXPLOSIONS); return level > Config.maxBlastProtection || level > Config.globalMaxEnchant; } - if (meta.hasEnchant(Enchantment.BINDING_CURSE)) { - final int level = meta.getEnchantLevel(Enchantment.BINDING_CURSE); - return level > Config.maxCurseOfBinding || level > Config.globalMaxEnchant; - } if (meta.hasEnchant(Enchantment.DEPTH_STRIDER)) { final int level = meta.getEnchantLevel(Enchantment.DEPTH_STRIDER); return level > Config.maxDepthStrider || level > Config.globalMaxEnchant; @@ -150,10 +150,6 @@ public class NBTEvents implements Listener { final int level = meta.getEnchantLevel(Enchantment.DAMAGE_ARTHROPODS); return level > Config.maxBaneOfArthropods || level > Config.globalMaxEnchant; } - if (meta.hasEnchant(Enchantment.DIG_SPEED)) { - final int level = meta.getEnchantLevel(Enchantment.DIG_SPEED); - return level > Config.maxEfficiency || level > Config.globalMaxEnchant; - } if (meta.hasEnchant(Enchantment.FIRE_ASPECT)) { final int level = meta.getEnchantLevel(Enchantment.FIRE_ASPECT); return level > Config.maxFireAspect || level > Config.globalMaxEnchant; @@ -242,7 +238,6 @@ public class NBTEvents implements Listener { final int level = meta.getEnchantLevel(Enchantment.SILK_TOUCH); return level > Config.maxSilkTouch || level > Config.globalMaxEnchant; } - } return false; }