diff options
Diffstat (limited to 'console_cmds.c')
-rw-r--r-- | console_cmds.c | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/console_cmds.c b/console_cmds.c index e8bd432e6..6f7e7cb90 100644 --- a/console_cmds.c +++ b/console_cmds.c @@ -365,26 +365,31 @@ DEF_CONSOLE_CMD(ConBan) uint32 index; if (argc == 0) { - IConsoleHelp("Ban a player from a network game. Usage: 'ban <client-id>'"); + IConsoleHelp("Ban a player from a network game. Usage: 'ban <ip | client-id>'"); IConsoleHelp("For client-id's, see the command 'clients'"); return true; } if (argc != 2) return false; - index = atoi(argv[1]); + if (strchr(argv[1], '.') == NULL) { + index = atoi(argv[1]); + ci = NetworkFindClientFromIndex(index); + } else { + ci = NetworkFindClientFromIP(argv[1]); + index = (ci == NULL) ? 0 : ci->client_index; + } if (index == NETWORK_SERVER_INDEX) { IConsolePrint(_icolour_def, "Silly boy, you can not ban yourself!"); return true; } + if (index == 0) { IConsoleError("Invalid Client-ID"); return true; } - ci = NetworkFindClientInfoFromIndex(index); - if (ci != NULL) { uint i; /* Add user to ban-list */ @@ -407,7 +412,7 @@ DEF_CONSOLE_CMD(ConUnBan) uint i, index; if (argc == 0) { - IConsoleHelp("Unban a player from a network game. Usage: 'unban <ip | id>'"); + IConsoleHelp("Unban a player from a network game. Usage: 'unban <ip | client-id>'"); IConsoleHelp("For a list of banned IP's, see the command 'banlist'"); return true; } @@ -528,25 +533,31 @@ DEF_CONSOLE_CMD(ConKick) uint32 index; if (argc == 0) { - IConsoleHelp("Kick a player from a network game. Usage: 'kick <client-id>'"); + IConsoleHelp("Kick a player from a network game. Usage: 'kick <ip | client-id>'"); IConsoleHelp("For client-id's, see the command 'clients'"); return true; } if (argc != 2) return false; - index = atoi(argv[1]); + if (strchr(argv[1], '.') == NULL) { + index = atoi(argv[1]); + ci = NetworkFindClientFromIndex(index); + } else { + ci = NetworkFindClientFromIP(argv[1]); + index = (ci == NULL) ? 0 : ci->client_index; + } + if (index == NETWORK_SERVER_INDEX) { IConsolePrint(_icolour_def, "Silly boy, you can not kick yourself!"); return true; } + if (index == 0) { IConsoleError("Invalid client-id"); return true; } - ci = NetworkFindClientInfoFromIndex(index); - if (ci != NULL) { SEND_COMMAND(PACKET_SERVER_ERROR)(NetworkFindClientStateFromIndex(index), NETWORK_ERROR_KICKED); } else |