From 4cbbf1087197fec9c3a84abf9eb86e4d5fd63cb8 Mon Sep 17 00:00:00 2001 From: Jerom van der Sar Date: Fri, 5 Jul 2013 13:50:10 +0200 Subject: [PATCH] Blocked command aliases from being executed when that command is blocked, removed debug message --- appinfo.properties | 6 +-- buildnumber.properties | 4 +- .../Commands/TFM_CommandLoader.java | 5 +- .../TotalFreedomMod/TFM_CommandBlocker.java | 47 +++++++++++++++---- .../TotalFreedomMod/TFM_Util.java | 1 + 5 files changed, 46 insertions(+), 17 deletions(-) diff --git a/appinfo.properties b/appinfo.properties index 8492d4d1..53974a83 100644 --- a/appinfo.properties +++ b/appinfo.properties @@ -1,5 +1,5 @@ -#Thu, 04 Jul 2013 23:31:51 +0200 +#Fri, 05 Jul 2013 13:49:09 +0200 program.VERSION=2.21 -program.BUILDNUM=266 -program.BUILDDATE=07/04/2013 11\:31 PM +program.BUILDNUM=286 +program.BUILDDATE=07/05/2013 01\:49 PM diff --git a/buildnumber.properties b/buildnumber.properties index 2e087b76..82eb0ba7 100644 --- a/buildnumber.properties +++ b/buildnumber.properties @@ -1,3 +1,3 @@ #Build Number for ANT. Do not edit! -#Thu Jul 04 23:31:51 CEST 2013 -build.number=267 +#Fri Jul 05 13:49:09 CEST 2013 +build.number=287 diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/TFM_CommandLoader.java b/src/me/StevenLawson/TotalFreedomMod/Commands/TFM_CommandLoader.java index 6ae21be7..2f874683 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/TFM_CommandLoader.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/TFM_CommandLoader.java @@ -22,7 +22,8 @@ import org.bukkit.plugin.Plugin; public class TFM_CommandLoader { - public static Pattern COMMAND_CLASS_PATTERN = Pattern.compile(TotalFreedomMod.COMMAND_PATH.replace('.', '/') + "/(" + TotalFreedomMod.COMMAND_PREFIX + "[^\\$]+)\\.class"); + public static final Pattern COMMAND_CLASS_PATTERN = Pattern.compile(TotalFreedomMod.COMMAND_PATH.replace('.', '/') + "/(" + TotalFreedomMod.COMMAND_PREFIX + "[^\\$]+)\\.class"); + public static CommandMap commandMap; private List commandList = null; private TFM_CommandLoader() @@ -31,7 +32,7 @@ public class TFM_CommandLoader public void scan() { - CommandMap commandMap = TFM_Util.getField(Bukkit.getServer().getPluginManager(), "commandMap"); + commandMap = TFM_Util.getField(Bukkit.getServer().getPluginManager(), "commandMap"); if (commandMap == null) { TFM_Log.severe("Error loading command map."); diff --git a/src/me/StevenLawson/TotalFreedomMod/TFM_CommandBlocker.java b/src/me/StevenLawson/TotalFreedomMod/TFM_CommandBlocker.java index aa7b397a..8bb5892b 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TFM_CommandBlocker.java +++ b/src/me/StevenLawson/TotalFreedomMod/TFM_CommandBlocker.java @@ -1,18 +1,20 @@ package me.StevenLawson.TotalFreedomMod; +import me.StevenLawson.TotalFreedomMod.Commands.TFM_CommandLoader; import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandMap; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.bukkit.event.server.RemoteServerCommandEvent; - public class TFM_CommandBlocker { - public static boolean isCommandBlocked(String command, CommandSender sender) + public static boolean isCommandBlocked(String usedcommand, CommandSender sender) { + String name = sender.getName(); - command = command.toLowerCase().trim(); + usedcommand = usedcommand.toLowerCase().trim(); for (String blocked_command : TotalFreedomMod.blockedCommands) { @@ -22,11 +24,38 @@ public class TFM_CommandBlocker continue; } - if (!(command + " ").startsWith(parts[2] + " ")) + if (!(usedcommand + " ").startsWith(parts[2] + " ")) { - continue; + + CommandMap commandMap = TFM_CommandLoader.commandMap; + if (commandMap == null) + { + continue; + } + + Command command = commandMap.getCommand(parts[2].replaceAll("/", "")); + if (command == null) + { + continue; + } + + boolean block = false; + for (String alias : command.getAliases()) + { + if (usedcommand.replaceAll("/", "").startsWith(alias)) + { + block = true; + break; + } + } + + if (!block) + { + continue; + } } - + + if (SenderRank.hasPermissions(sender, parts[0])) { continue; @@ -47,8 +76,6 @@ public class TFM_CommandBlocker } } - TFM_Log.info("Player Rank: " + SenderRank.getSenderRank(sender).rank); - // Action if ("b".equals(parts[1])) { @@ -58,7 +85,7 @@ public class TFM_CommandBlocker { if (SenderRank.getSenderRank(sender).rank < 2) // Only auto-eject Ops and non-ops { - TFM_Util.autoEject((Player) sender, "You used a prohibited command: " + command); + TFM_Util.autoEject((Player) sender, "You used a prohibited command: " + usedcommand); TFM_Util.bcastMsg(name + " was automatically kicked for using harmful commands.", ChatColor.RED); } return true; diff --git a/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java b/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java index 3718bf2d..0a3e60ec 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java +++ b/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java @@ -1049,6 +1049,7 @@ public class TFM_Util ChatColor.RED, ChatColor.LIGHT_PURPLE, ChatColor.YELLOW); + private static final Random RANDOM = new Random(); public static ChatColor randomChatColor() {