Bukkit  1.4.7-R1.0
 All Classes Namespaces Files Functions Variables Enumerator Pages
BanIpCommand.java
Go to the documentation of this file.
1 package org.bukkit.command.defaults;
2 
3 import java.util.List;
4 import java.util.regex.Pattern;
5 
6 import org.apache.commons.lang.Validate;
7 import org.bukkit.Bukkit;
8 import org.bukkit.ChatColor;
9 import org.bukkit.command.Command;
10 import org.bukkit.command.CommandSender;
11 import org.bukkit.entity.Player;
12 
13 import com.google.common.collect.ImmutableList;
14 
15 public class BanIpCommand extends VanillaCommand {
16  public static final Pattern ipValidity = Pattern.compile("^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
17 
18  public BanIpCommand() {
19  super("ban-ip");
20  this.description = "Prevents the specified IP address from using this server";
21  this.usageMessage = "/ban-ip <address|player> [reason ...]";
22  this.setPermission("bukkit.command.ban.ip");
23  }
24 
25  @Override
26  public boolean execute(CommandSender sender, String currentAlias, String[] args) {
27  if (!testPermission(sender)) return true;
28  if (args.length < 1) {
29  sender.sendMessage(ChatColor.RED + "Usage: " + usageMessage);
30  return false;
31  }
32 
33  // TODO: Ban Reason support
34  if (ipValidity.matcher(args[0]).matches()) {
35  processIPBan(args[0], sender);
36  } else {
37  Player player = Bukkit.getPlayer(args[0]);
38 
39  if (player == null) {
40  sender.sendMessage(ChatColor.RED + "Usage: " + usageMessage);
41  return false;
42  }
43 
44  processIPBan(player.getAddress().getAddress().getHostAddress(), sender);
45  }
46 
47  return true;
48  }
49 
50  private void processIPBan(String ip, CommandSender sender) {
51  // TODO: Kick on ban
52  Bukkit.banIP(ip);
53 
54  Command.broadcastCommandMessage(sender, "Banned IP Address " + ip);
55  }
56 
57  @Override
58  public List<String> tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException {
59  Validate.notNull(sender, "Sender cannot be null");
60  Validate.notNull(args, "Arguments cannot be null");
61  Validate.notNull(alias, "Alias cannot be null");
62 
63  if (args.length == 1) {
64  return super.tabComplete(sender, alias, args);
65  }
66  return ImmutableList.of();
67  }
68 }