add command: `unban ip <ipv4-address>`

To remove a banned IPv4 address from the ban list.
This commit is contained in:
Robin C. Ladiges 2023-03-22 21:46:44 +01:00
parent 2f2c1fd4f7
commit 2cd7abf0bd
No known key found for this signature in database
GPG Key ID: B494D3DF92661B99
2 changed files with 42 additions and 1 deletions

View File

@ -94,6 +94,20 @@ public static class BanLists {
}
private static void UnbanIPv4(Client user) {
IPEndPoint? ipv4 = (IPEndPoint?) user.Socket?.RemoteEndPoint;
if (ipv4 != null) {
UnbanIPv4(ipv4.Address);
}
}
private static void UnbanIPv4(IPAddress ipv4) {
UnbanIPv4(ipv4.ToString());
}
private static void UnbanIPv4(string ipv4) {
IPs.Remove(ipv4);
}
private static void Save() {
Settings.SaveSettings(true);
}
@ -185,4 +199,30 @@ public static class BanLists {
return "Banned ip: " + args[0];
}
}
public static string HandleUnbanCommand(string[] args) {
if (args.Length != 2) {
return "Usage: unban ip <ipv4-address>";
}
string cmd = args[0];
string val = args[1];
switch (cmd) {
default:
return "Usage: unban ip <ipv4-address>";
case "ip":
if (!IsIPv4(val)) {
return "Invalid IPv4 address!";
}
if (!IsIPv4Banned(val)) {
return "IP " + val + " is not banned.";
}
UnbanIPv4(val);
Save();
return "Unbanned ip: " + val;
}
}
}

View File

@ -313,7 +313,8 @@ CommandHandler.RegisterCommand("crash", args => {
return sb.ToString();
});
CommandHandler.RegisterCommand("ban", args => { return BanLists.HandleBanCommand(args, (args) => MultiUserCommandHelper(args)); });
CommandHandler.RegisterCommand("ban", args => { return BanLists.HandleBanCommand(args, (args) => MultiUserCommandHelper(args)); });
CommandHandler.RegisterCommand("unban", args => { return BanLists.HandleUnbanCommand(args); });
CommandHandler.RegisterCommand("send", args => {
const string optionUsage = "Usage: send <stage> <id> <scenario[-1..127]> <player/*>";