async void Hostname(CommandArgs e) { if (e.Parameters.Count == 0 || string.IsNullOrEmpty(e.Parameters[0])) { e.Player.SendInfoMessage("No subcommand entered. Proper parameters: ban, banhost, check, unban, viewlist."); return; } switch (e.Parameters[0].ToLower()) { case "ban": { if (!e.Player.Group.HasPermission("banhost.ban") && !e.Player.Group.HasPermission("banhost.*")) { e.Player.SendErrorMessage("You do not have permission to execute this command!"); return; } List <TSPlayer> players = TShock.Utils.FindPlayer(e.Parameters[1]); if (players.Count == 0) { e.Player.SendErrorMessage("No player found by that name!"); return; } else if (players.Count > 1) { TShock.Utils.SendMultipleMatchError(e.Player, players.Select(p => p.Name)); return; } var plr = players[0]; string host; host = await GetHost(plr.IP); if (string.IsNullOrEmpty(host)) { Log.ConsoleError("Could not find hostname for " + plr.Name + "."); Log.Warn("Could not find hostname for " + plr.Name + "."); return; } string reason; if (e.Parameters.Count == 2) { reason = "Misbehavior"; } else if (string.IsNullOrEmpty(e.Parameters[2])) { reason = "Misbehavior"; } else { reason = e.Parameters[2]; } BannedHost ban = new BannedHost(host, reason); Config.BannedHostnames.Add(ban); Config.Write(path); e.Player.SendInfoMessage("Banned " + plr.Name + "'s hostname: \"" + host + "\"."); e.Player.SendInfoMessage("Reason: " + reason); //TShock.Utils.Kick(plr, "You have been banned: " + reason); //doesn't work? hostbans = true; break; } case "banhost": { if (!e.Player.Group.HasPermission("banhost.ban") && !e.Player.Group.HasPermission("banhost.*")) { e.Player.SendErrorMessage("You do not have permission to execute this command!"); return; } string reason; if (e.Parameters.Count == 3) { reason = "Misbehavior"; } if (string.IsNullOrEmpty(e.Parameters[2])) { reason = "Misbehavior"; } else { reason = e.Parameters[2]; } BannedHost ban = new BannedHost(e.Parameters[1], reason); Config.BannedHostnames.Add(ban); Config.Write(path); e.Player.SendInfoMessage("Successfully banned hostname \"" + e.Parameters[1] + "\" for " + reason + "."); hostbans = true; break; } case "check": case "view": { if (!e.Player.Group.HasPermission("banhost.view") && !e.Player.Group.HasPermission("banhost.*")) { e.Player.SendErrorMessage("You do not have permission to execute this command!"); return; } List <TSPlayer> players = TShock.Utils.FindPlayer(e.Parameters[1]); if (players.Count == 0) { e.Player.SendErrorMessage("No player found by that name!"); return; } else if (players.Count > 1) { TShock.Utils.SendMultipleMatchError(e.Player, players.Select(p => p.Name)); return; } else if (players.Count == 1) { var plr = players[0]; string host; host = await GetHost(plr.IP); if (string.IsNullOrEmpty(host)) { Log.ConsoleError("Could not find hostname for " + plr.Name + "."); Log.Warn("Could not find hostname for " + plr.Name + "."); e.Player.SendInfoMessage("Could not find hostname for " + plr.Name); return; } e.Player.SendInfoMessage(plr.Name + "'s hostname is \"" + host + "\"."); return; } break; } case "unban": case "delete": { if (!e.Player.Group.HasPermission("banhost.remove") && !e.Player.Group.HasPermission("banhost.*")) { e.Player.SendErrorMessage("You do not have permission to execute this command!"); return; } Config.Read(path); List <BannedHost> bannedhosts = Config.BannedHostnames; string host = e.Parameters[1]; foreach (BannedHost ban in bannedhosts) { if (ban.hostname == host) { Config.BannedHostnames.Remove(ban); Config.Write(path); e.Player.SendInfoMessage("Successfully removed the ban on hostname \"" + host + "\"."); return; } } e.Player.SendInfoMessage("No bans exist for the hostname \"" + host + "\"."); if (Config.BannedHostnames == null) { hostbans = false; } break; } case "viewlist": case "checklist": { if (!e.Player.Group.HasPermission("banhost.ban") && !e.Player.Group.HasPermission("banhost.*")) { e.Player.SendErrorMessage("You do not have permission to execute this command!"); return; } if (!hostbans) { e.Player.SendInfoMessage("No hostnames have been banned."); return; } else { Config.Read(path); List <BannedHost> bannedhosts = Config.BannedHostnames; StringBuilder builder = new StringBuilder(); foreach (BannedHost host in bannedhosts) { builder.Append(host.hostname).Append(", "); } e.Player.SendInfoMessage("Banned hostnames: " + builder); break; } } case "": case null: default: { e.Player.SendInfoMessage("Invalid subcommand entered. Proper parameters: ban, banhost, check, unban, viewlist."); break; } } }
async void Hostname(CommandArgs e) { if (e.Parameters.Count == 0 || string.IsNullOrEmpty(e.Parameters[0])) { e.Player.SendInfoMessage("No subcommand entered. Proper parameters: ban, banhost, check, unban, viewlist."); return; } switch (e.Parameters[0].ToLower()) { case "ban": { if (!e.Player.Group.HasPermission("banhost.ban") && !e.Player.Group.HasPermission("banhost.*")) { e.Player.SendErrorMessage("You do not have permission to execute this command!"); return; } List<TSPlayer> players = TShock.Utils.FindPlayer(e.Parameters[1]); if (players.Count == 0) { e.Player.SendErrorMessage("No player found by that name!"); return; } else if (players.Count > 1) { TShock.Utils.SendMultipleMatchError(e.Player, players.Select(p => p.Name)); return; } var plr = players[0]; string host; host = await GetHost(plr.IP); if (string.IsNullOrEmpty(host)) { Log.ConsoleError("Could not find hostname for " + plr.Name + "."); Log.Warn("Could not find hostname for " + plr.Name + "."); return; } string reason; if (e.Parameters.Count == 2) { reason = "Misbehavior"; } else if (string.IsNullOrEmpty(e.Parameters[2])) { reason = "Misbehavior"; } else { reason = e.Parameters[2]; } BannedHost ban = new BannedHost(host, reason); Config.BannedHostnames.Add(ban); Config.Write(path); e.Player.SendInfoMessage("Banned " + plr.Name + "'s hostname: \"" + host + "\"."); e.Player.SendInfoMessage("Reason: " + reason); //TShock.Utils.Kick(plr, "You have been banned: " + reason); //doesn't work? hostbans = true; break; } case "banhost": { if (!e.Player.Group.HasPermission("banhost.ban") && !e.Player.Group.HasPermission("banhost.*")) { e.Player.SendErrorMessage("You do not have permission to execute this command!"); return; } string reason; if (e.Parameters.Count == 3) { reason = "Misbehavior"; } if (string.IsNullOrEmpty(e.Parameters[2])) { reason = "Misbehavior"; } else { reason = e.Parameters[2]; } BannedHost ban = new BannedHost(e.Parameters[1], reason); Config.BannedHostnames.Add(ban); Config.Write(path); e.Player.SendInfoMessage("Successfully banned hostname \"" + e.Parameters[1] + "\" for " + reason + "."); hostbans = true; break; } case "check": case "view": { if (!e.Player.Group.HasPermission("banhost.view") && !e.Player.Group.HasPermission("banhost.*")) { e.Player.SendErrorMessage("You do not have permission to execute this command!"); return; } List<TSPlayer> players = TShock.Utils.FindPlayer(e.Parameters[1]); if (players.Count == 0) { e.Player.SendErrorMessage("No player found by that name!"); return; } else if (players.Count > 1) { TShock.Utils.SendMultipleMatchError(e.Player, players.Select(p => p.Name)); return; } else if (players.Count == 1) { var plr = players[0]; string host; host = await GetHost(plr.IP); if (string.IsNullOrEmpty(host)) { Log.ConsoleError("Could not find hostname for " + plr.Name + "."); Log.Warn("Could not find hostname for " + plr.Name + "."); e.Player.SendInfoMessage("Could not find hostname for " + plr.Name); return; } e.Player.SendInfoMessage(plr.Name + "'s hostname is \"" + host + "\"."); return; } break; } case "unban": case "delete": { if (!e.Player.Group.HasPermission("banhost.remove") && !e.Player.Group.HasPermission("banhost.*")) { e.Player.SendErrorMessage("You do not have permission to execute this command!"); return; } Config.Read(path); List<BannedHost> bannedhosts = Config.BannedHostnames; string host = e.Parameters[1]; foreach (BannedHost ban in bannedhosts) { if (ban.hostname == host) { Config.BannedHostnames.Remove(ban); Config.Write(path); e.Player.SendInfoMessage("Successfully removed the ban on hostname \"" + host + "\"."); return; } } e.Player.SendInfoMessage("No bans exist for the hostname \"" + host + "\"."); if (Config.BannedHostnames == null) { hostbans = false; } break; } case "viewlist": case "checklist": { if (!e.Player.Group.HasPermission("banhost.ban") && !e.Player.Group.HasPermission("banhost.*")) { e.Player.SendErrorMessage("You do not have permission to execute this command!"); return; } if (!hostbans) { e.Player.SendInfoMessage("No hostnames have been banned."); return; } else { Config.Read(path); List<BannedHost> bannedhosts = Config.BannedHostnames; StringBuilder builder = new StringBuilder(); foreach (BannedHost host in bannedhosts) { builder.Append(host.hostname).Append(", "); } e.Player.SendInfoMessage("Banned hostnames: " + builder); break; } } case "": case null: default: { e.Player.SendInfoMessage("Invalid subcommand entered. Proper parameters: ban, banhost, check, unban, viewlist."); break; } } }