From 0de47783b9fff95cabad9d681a3f3750af9aa912 Mon Sep 17 00:00:00 2001 From: Steven Lawson Date: Sat, 15 Sep 2012 21:19:55 -0400 Subject: [PATCH] Added my own set of ban/unban commands that go directly to the server banlist and support temp banning and ban reasons. --- .../Commands/Command_gadmin.java | 12 +- .../Commands/Command_glist.java | 22 +-- .../Commands/Command_gtfo.java | 6 +- .../TotalFreedomMod/Commands/Command_ops.java | 4 +- .../Commands/Command_stfu.java | 4 +- .../Commands/Command_tfbanlist.java | 17 ++- .../Commands/Command_tfipbanlist.java | 17 ++- .../Commands/Command_uall.java | 5 +- .../TotalFreedomMod/TFM_Util.java | 127 ++++++++++++++++-- 9 files changed, 177 insertions(+), 37 deletions(-) diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_gadmin.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_gadmin.java index a3b2d87..2efbc78 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_gadmin.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_gadmin.java @@ -45,7 +45,8 @@ public class Command_gadmin extends TFM_Command } else if (mode.equals("nameban")) { - server.getOfflinePlayer(p.getName()).setBanned(true); + //server.getOfflinePlayer(p.getName()).setBanned(true); + TFM_Util.banUsername(p.getName(), null, null, null); TFM_Util.bcastMsg(String.format("Banning Name: %s.", p.getName()), ChatColor.RED); p.kickPlayer("Username banned by Administrator."); } @@ -58,7 +59,8 @@ public class Command_gadmin extends TFM_Command user_ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]); } TFM_Util.bcastMsg(String.format("Banning IP: %s.", p.getName(), user_ip), ChatColor.RED); - server.banIP(user_ip); + //server.banIP(user_ip); + TFM_Util.banIP(user_ip, null, null, null); p.kickPlayer("IP address banned by Administrator."); } else if (mode.equals("ban")) @@ -70,8 +72,10 @@ public class Command_gadmin extends TFM_Command user_ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]); } TFM_Util.bcastMsg(String.format("Banning Name: %s, IP: %s.", p.getName(), user_ip), ChatColor.RED); - server.banIP(user_ip); - server.getOfflinePlayer(p.getName()).setBanned(true); + //server.banIP(user_ip); + //server.getOfflinePlayer(p.getName()).setBanned(true); + TFM_Util.banIP(user_ip, null, null, null); + TFM_Util.banUsername(p.getName(), null, null, null); p.kickPlayer("IP and username banned by Administrator."); } else if (mode.equals("op")) diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_glist.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_glist.java index a6eb716..c54b6b3 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_glist.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_glist.java @@ -6,7 +6,6 @@ import me.StevenLawson.TotalFreedomMod.TFM_UserList; import me.StevenLawson.TotalFreedomMod.TFM_UserList.TFM_UserListEntry; import me.StevenLawson.TotalFreedomMod.TFM_Util; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; -import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -72,32 +71,39 @@ public class Command_glist extends TFM_Command Player p = server.getPlayerExact(username); if (p != null) { - p.setBanned(true); + //p.setBanned(true); + TFM_Util.banUsername(p.getName(), null, null, null); p.kickPlayer("IP and username banned by Administrator."); } else { - server.getOfflinePlayer(username).setBanned(true); + //server.getOfflinePlayer(username).setBanned(true); + TFM_Util.banUsername(username, null, null, null); } for (String ip_address : ip_addresses) { - server.banIP(ip_address); + //server.banIP(ip_address); + TFM_Util.banIP(ip_address, null, null, null); String[] ip_address_parts = ip_address.split("\\."); - server.banIP(ip_address_parts[0] + "." + ip_address_parts[1] + ".*.*"); + //server.banIP(ip_address_parts[0] + "." + ip_address_parts[1] + ".*.*"); + TFM_Util.banIP(ip_address_parts[0] + "." + ip_address_parts[1] + ".*.*", null, null, null); } } else if (mode.equalsIgnoreCase("unban")) { TFM_Util.adminAction(sender.getName(), "Unbanning " + username + " and IPs: " + TFM_Util.implodeStringList(",", ip_addresses), true); - server.getOfflinePlayer(username).setBanned(false); + //server.getOfflinePlayer(username).setBanned(false); + TFM_Util.unbanUsername(username); for (String ip_address : ip_addresses) { - server.unbanIP(ip_address); + //server.unbanIP(ip_address); + TFM_Util.unbanIP(ip_address); String[] ip_address_parts = ip_address.split("\\."); - server.unbanIP(ip_address_parts[0] + "." + ip_address_parts[1] + ".*.*"); + //server.unbanIP(ip_address_parts[0] + "." + ip_address_parts[1] + ".*.*"); + TFM_Util.unbanIP(ip_address_parts[0] + "." + ip_address_parts[1] + ".*.*"); } } } diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_gtfo.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_gtfo.java index 4a78e5d..bbe915c 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_gtfo.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_gtfo.java @@ -71,10 +71,12 @@ public class Command_gtfo extends TFM_Command user_ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]); } TFM_Util.bcastMsg(String.format("Banning: %s, IP: %s.", p.getName(), user_ip), ChatColor.RED); - server.banIP(user_ip); + //server.banIP(user_ip); + TFM_Util.banIP(user_ip, null, null, null); //Ban Username: - server.getOfflinePlayer(p.getName()).setBanned(true); + //server.getOfflinePlayer(p.getName()).setBanned(true); + TFM_Util.banUsername(p.getName(), null, null, null); //Kick Player: p.kickPlayer("GTFO"); diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_ops.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_ops.java index dd35bce..fa4505b 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_ops.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_ops.java @@ -26,7 +26,7 @@ public class Command_ops extends TFM_Command int offlineOPs = 0; int totalOPs = 0; - for (OfflinePlayer p : Bukkit.getOperators()) + for (OfflinePlayer p : server.getOperators()) { if (p.isOnline()) { @@ -53,7 +53,7 @@ public class Command_ops extends TFM_Command TFM_Util.adminAction(sender.getName(), "Removing all operators", true); - for (OfflinePlayer p : Bukkit.getOperators()) + for (OfflinePlayer p : server.getOperators()) { p.setOp(false); diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_stfu.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_stfu.java index 53a7422..98f900c 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_stfu.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_stfu.java @@ -32,7 +32,7 @@ public class Command_stfu extends TFM_Command TFM_Util.playerMsg(sender, "Muted players:"); TFM_UserInfo info; int count = 0; - for (Player mp : Bukkit.getOnlinePlayers()) + for (Player mp : server.getOnlinePlayers()) { info = TFM_UserInfo.getPlayerData(mp); if (info.isMuted()) @@ -53,7 +53,7 @@ public class Command_stfu extends TFM_Command TFM_Util.bcastMsg(ChatColor.RED + sender.getName() + " - Unmuting all players."); TFM_UserInfo info; int count = 0; - for (Player mp : Bukkit.getOnlinePlayers()) + for (Player mp : server.getOnlinePlayers()) { info = TFM_UserInfo.getPlayerData(mp); if (info.isMuted()) diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_tfbanlist.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_tfbanlist.java index daf1a5d..46b8837 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_tfbanlist.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_tfbanlist.java @@ -1,6 +1,9 @@ package me.StevenLawson.TotalFreedomMod.Commands; +import me.StevenLawson.TotalFreedomMod.TFM_Log; import me.StevenLawson.TotalFreedomMod.TFM_Util; +import net.minecraft.server.BanList; +import net.minecraft.server.MinecraftServer; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; @@ -18,12 +21,18 @@ public class Command_tfbanlist extends TFM_Command { if (senderIsConsole || TFM_Util.isUserSuperadmin(sender)) { - for (OfflinePlayer p : server.getBannedPlayers()) + try { - p.setBanned(false); - } + BanList nameBans = MinecraftServer.getServer().getServerConfigurationManager().getNameBans(); + nameBans.getEntries().clear(); + nameBans.save(); - sender.sendMessage(ChatColor.GRAY + "Ban list has been purged."); + sender.sendMessage(ChatColor.GRAY + "Ban list has been purged."); + } + catch (Exception ex) + { + TFM_Log.severe(ex); + } return true; } diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_tfipbanlist.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_tfipbanlist.java index d5aff0c..c1836fd 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_tfipbanlist.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_tfipbanlist.java @@ -3,7 +3,10 @@ package me.StevenLawson.TotalFreedomMod.Commands; import java.util.Arrays; import java.util.Collections; import java.util.List; +import me.StevenLawson.TotalFreedomMod.TFM_Log; import me.StevenLawson.TotalFreedomMod.TFM_Util; +import net.minecraft.server.BanList; +import net.minecraft.server.MinecraftServer; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -20,12 +23,18 @@ public class Command_tfipbanlist extends TFM_Command { if (senderIsConsole || TFM_Util.isUserSuperadmin(sender)) { - for (String ip : server.getIPBans()) + try { - server.unbanIP(ip); - } + BanList IPBans = MinecraftServer.getServer().getServerConfigurationManager().getIPBans(); + IPBans.getEntries().clear(); + IPBans.save(); - sender.sendMessage(ChatColor.GRAY + "IP Ban list has been purged."); + sender.sendMessage(ChatColor.GRAY + "IP ban list has been purged."); + } + catch (Exception ex) + { + TFM_Log.severe(ex); + } return true; } diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_uall.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_uall.java index 6896b6e..031888d 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_uall.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_uall.java @@ -2,7 +2,6 @@ package me.StevenLawson.TotalFreedomMod.Commands; import me.StevenLawson.TotalFreedomMod.TFM_Util; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -24,9 +23,9 @@ public class Command_uall extends TFM_Command TFM_Util.adminAction(sender.getName(), "Undisguising all players", true); try { - for (Player p : Bukkit.getOnlinePlayers()) + for (Player p : server.getOnlinePlayers()) { - Bukkit.dispatchCommand(p, "u"); + server.dispatchCommand(p, "u"); } } catch (Throwable e) diff --git a/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java b/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java index 36e55ef..cf250ca 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java +++ b/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java @@ -8,6 +8,9 @@ import java.util.jar.JarFile; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; +import net.minecraft.server.BanEntry; +import net.minecraft.server.BanList; +import net.minecraft.server.MinecraftServer; import org.apache.commons.lang.exception.ExceptionUtils; import org.bukkit.*; import org.bukkit.block.Block; @@ -86,7 +89,7 @@ public class TFM_Util { sender.sendMessage(color + message); } - + //JeromSar public static void playerMsg(CommandSender sender, String message) { @@ -619,23 +622,52 @@ public class TFM_Util { case STRIKE_ONE: { + //Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), String.format("tempban %s 1m", p.getName())); + + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.add(Calendar.MINUTE, 1); + Date expires = calendar.getTime(); + + TFM_Util.banIP(player_ip, null, null, expires); + TFM_Util.banUsername(p.getName(), null, null, expires); + + TFM_Util.bcastMsg(ChatColor.RED + p.getName() + " has been banned for 1 minute."); + p.kickPlayer(kickMessage); - Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), String.format("tempban %s 1m", p.getName())); + break; } case STRIKE_TWO: { + //Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), String.format("tempban %s 3m", p.getName())); + + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.add(Calendar.MINUTE, 3); + Date expires = calendar.getTime(); + + TFM_Util.banIP(player_ip, null, null, expires); + TFM_Util.banUsername(p.getName(), null, null, expires); + + TFM_Util.bcastMsg(ChatColor.RED + p.getName() + " has been banned for 3 minutes."); + p.kickPlayer(kickMessage); - Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), String.format("tempban %s 3m", p.getName())); + break; } case STRIKE_THREE: { - Bukkit.banIP(player_ip); + //Bukkit.banIP(player_ip); + TFM_Util.banIP(player_ip, null, null, null); String[] ip_address_parts = player_ip.split("\\."); - Bukkit.banIP(ip_address_parts[0] + "." + ip_address_parts[1] + ".*.*"); + //Bukkit.banIP(); + TFM_Util.banIP(ip_address_parts[0] + "." + ip_address_parts[1] + ".*.*", null, null, null); - p.setBanned(true); + //p.setBanned(true); + TFM_Util.banUsername(p.getName(), null, null, null); + + TFM_Util.bcastMsg(ChatColor.RED + p.getName() + " has been banned permanently."); p.kickPlayer(kickMessage); @@ -691,11 +723,11 @@ public class TFM_Util if (sender.getName().equalsIgnoreCase("madgeek1450")) { - return "the " + ChatColor.DARK_PURPLE + "chief-developer" + ChatColor.AQUA + "."; + return "the " + ChatColor.DARK_PURPLE + "server chief-developer" + ChatColor.AQUA + "."; } if (sender.getName().equalsIgnoreCase("darthsalamon")) { - return "a " + ChatColor.DARK_PURPLE + "developer" + ChatColor.AQUA + "!"; + return "a " + ChatColor.DARK_PURPLE + "server developer" + ChatColor.AQUA + "!"; } if (TFM_Util.isUserSuperadmin(sender)) @@ -711,6 +743,85 @@ public class TFM_Util return "a " + ChatColor.GREEN + "standard player" + ChatColor.AQUA + "."; } + public static void banUsername(String name, String reason, String source, Date expire_date) + { + name = name.toLowerCase().trim(); + + BanEntry ban_entry = new BanEntry(name); + + if (expire_date != null) + { + ban_entry.setExpires(expire_date); + } + if (reason != null) + { + ban_entry.setReason(reason); + } + if (source != null) + { + ban_entry.setSource(source); + } + + BanList nameBans = MinecraftServer.getServer().getServerConfigurationManager().getNameBans(); + + nameBans.add(ban_entry); + } + + public static void unbanUsername(String name) + { + name = name.toLowerCase().trim(); + + BanList nameBans = MinecraftServer.getServer().getServerConfigurationManager().getNameBans(); + + nameBans.remove(name); + } + + public static boolean isNameBanned(String name) + { + name = name.toLowerCase().trim(); + BanList nameBans = MinecraftServer.getServer().getServerConfigurationManager().getNameBans(); + nameBans.removeExpired(); + return nameBans.getEntries().containsKey(name); + } + + public static void banIP(String ip, String reason, String source, Date expire_date) + { + ip = ip.toLowerCase().trim(); + + BanEntry ban_entry = new BanEntry(ip); + + if (expire_date != null) + { + ban_entry.setExpires(expire_date); + } + if (reason != null) + { + ban_entry.setReason(reason); + } + if (source != null) + { + ban_entry.setSource(source); + } + + BanList ipBans = MinecraftServer.getServer().getServerConfigurationManager().getIPBans(); + + ipBans.add(ban_entry); + } + + public static void unbanIP(String ip) + { + ip = ip.toLowerCase().trim(); + BanList ipBans = MinecraftServer.getServer().getServerConfigurationManager().getIPBans(); + ipBans.remove(ip); + } + + public static boolean isIPBanned(String ip) + { + ip = ip.toLowerCase().trim(); + BanList ipBans = MinecraftServer.getServer().getServerConfigurationManager().getIPBans(); + ipBans.removeExpired(); + return ipBans.getEntries().containsKey(ip); + } // I wrote all this before i discovered getTargetBlock >.> - might come in handy some day... // public static final double LOOKAT_VIEW_HEIGHT = 1.65; // public static final double LOOKAT_STEP_DISTANCE = 0.2;