diff options
author | truelight <truelight@openttd.org> | 2005-01-02 12:03:43 +0000 |
---|---|---|
committer | truelight <truelight@openttd.org> | 2005-01-02 12:03:43 +0000 |
commit | a11f46fed48fa6606f2d84c8f96d79efbad83197 (patch) | |
tree | 9f7b9f8c971ff9369911613d44bb0367e7d30389 /network_gui.c | |
parent | 5d065845453b47791afec27a373b9ff9728ead1e (diff) | |
download | openttd-a11f46fed48fa6606f2d84c8f96d79efbad83197.tar.xz |
(svn r1322) -Add: banning system (mostly tnx to guru3)
A server can ban people via ClientList
Both server and dedicated can do it via console:
'ban', 'unban', 'banlist'.
Diffstat (limited to 'network_gui.c')
-rw-r--r-- | network_gui.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/network_gui.c b/network_gui.c index 3a10016ec..5f62b29a5 100644 --- a/network_gui.c +++ b/network_gui.c @@ -953,10 +953,21 @@ static void ClientList_Kick(byte client_no) SEND_COMMAND(PACKET_SERVER_ERROR)(&_clients[client_no], NETWORK_ERROR_KICKED); } -/*static void ClientList_Ban(byte client_no) +static void ClientList_Ban(byte client_no) { -// TODO -}*/ + uint i; + uint32 ip = NetworkFindClientInfo(client_no)->client_ip; + + for (i = 0; i < lengthof(_network_ban_list); i++) { + if (_network_ban_list[i] == NULL || _network_ban_list[i][0] == '\0') { + _network_ban_list[i] = strdup(inet_ntoa(*(struct in_addr *)&ip)); + break; + } + } + + if (client_no < MAX_PLAYERS) + SEND_COMMAND(PACKET_SERVER_ERROR)(&_clients[client_no], NETWORK_ERROR_KICKED); +} static void ClientList_GiveMoney(byte client_no) { @@ -1090,8 +1101,8 @@ static Window *PopupClientList(Window *w, int client_no, int x, int y) GetString(_clientlist_action[i], STR_NETWORK_CLIENTLIST_KICK); _clientlist_proc[i++] = &ClientList_Kick; -/* sprintf(clientlist_action[i],"Ban"); - clientlist_proc[i++] = &ClientList_Ban;*/ + sprintf(_clientlist_action[i],"Ban"); + _clientlist_proc[i++] = &ClientList_Ban; } if (i == 0) { |