Improved auth security

This commit is contained in:
TheTrouper
2023-08-16 15:56:43 -05:00
parent 0553509730
commit 68d737a08c
2 changed files with 68 additions and 61 deletions

View File

@@ -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.Authenticator;
import io.github.thetrouper.sentinel.server.functions.ProfanityFilter; import io.github.thetrouper.sentinel.server.functions.ProfanityFilter;
import io.github.thetrouper.sentinel.server.util.FileUtils; import io.github.thetrouper.sentinel.server.util.FileUtils;
import io.github.thetrouper.sentinel.server.util.Randomizer;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
@@ -37,66 +38,77 @@ public final class Sentinel extends JavaPlugin {
*/ */
@Override @Override
public void onEnable() { public void onEnable() {
log.info("\n]======------ Pre-load started! ------======[");
instance = this; instance = this;
Config.loadConfiguration(); Config.loadConfiguration();
String serverID = Authenticator.getServerID(); String serverID = Authenticator.getServerID();
log.info("Your license key is: " + key + " Your server ID is: " + serverID); log.info("\n]====---- Requesting Authentication ----====[ \n- license Key: " + key + " \n- Server ID: " + serverID);
switch (Authenticator.authorize(key, serverID)) { String authStatus = "ERROR";
case "AUTHORIZED": try {
log.info("Authentication Success!"); authStatus = Authenticator.authorize(key, serverID);
break; } catch (Exception e) {
case "INVALID-ID": 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."); log.info("Authentication Failure, You have not whitelisted this server ID yet.");
getServer().getPluginManager().disablePlugin(this); getServer().getPluginManager().disablePlugin(this);
break; }
case "UNREGISTERED": case "UNREGISTERED" -> {
log.warning("Authentication Failure, YOU SHALL NOT PASS! License: " + key + " Server ID: " + serverID); log.warning("Authentication Failure, YOU SHALL NOT PASS! License: " + key + " Server ID: " + serverID);
getServer().getPluginManager().disablePlugin(this); 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 ----====[");
} }
/** /**

View File

@@ -88,6 +88,10 @@ public class NBTEvents implements Listener {
} }
// ARMOR // 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)) { if (meta.hasEnchant(Enchantment.WATER_WORKER)) {
final int level = meta.getEnchantLevel(Enchantment.WATER_WORKER); final int level = meta.getEnchantLevel(Enchantment.WATER_WORKER);
return level > Config.maxAquaAffinity || level > Config.globalMaxEnchant; return level > Config.maxAquaAffinity || level > Config.globalMaxEnchant;
@@ -100,10 +104,6 @@ public class NBTEvents implements Listener {
final int level = meta.getEnchantLevel(Enchantment.PROTECTION_EXPLOSIONS); final int level = meta.getEnchantLevel(Enchantment.PROTECTION_EXPLOSIONS);
return level > Config.maxBlastProtection || level > Config.globalMaxEnchant; 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)) { if (meta.hasEnchant(Enchantment.DEPTH_STRIDER)) {
final int level = meta.getEnchantLevel(Enchantment.DEPTH_STRIDER); final int level = meta.getEnchantLevel(Enchantment.DEPTH_STRIDER);
return level > Config.maxDepthStrider || level > Config.globalMaxEnchant; return level > Config.maxDepthStrider || level > Config.globalMaxEnchant;
@@ -150,10 +150,6 @@ public class NBTEvents implements Listener {
final int level = meta.getEnchantLevel(Enchantment.DAMAGE_ARTHROPODS); final int level = meta.getEnchantLevel(Enchantment.DAMAGE_ARTHROPODS);
return level > Config.maxBaneOfArthropods || level > Config.globalMaxEnchant; 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)) { if (meta.hasEnchant(Enchantment.FIRE_ASPECT)) {
final int level = meta.getEnchantLevel(Enchantment.FIRE_ASPECT); final int level = meta.getEnchantLevel(Enchantment.FIRE_ASPECT);
return level > Config.maxFireAspect || level > Config.globalMaxEnchant; return level > Config.maxFireAspect || level > Config.globalMaxEnchant;
@@ -242,7 +238,6 @@ public class NBTEvents implements Listener {
final int level = meta.getEnchantLevel(Enchantment.SILK_TOUCH); final int level = meta.getEnchantLevel(Enchantment.SILK_TOUCH);
return level > Config.maxSilkTouch || level > Config.globalMaxEnchant; return level > Config.maxSilkTouch || level > Config.globalMaxEnchant;
} }
} }
return false; return false;
} }