Changeset - r2859:75e82eca7eb2
[Not reviewed]
master
0 3 0
Darkvater - 18 years ago 2006-01-19 15:58:57
darkvater@openttd.org
(svn r3407) - Feature: Kick and ban now with IP numbers.
3 files changed with 36 insertions and 9 deletions:
0 comments (0 inline, 0 general)
console_cmds.c
Show inline comments
 
@@ -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
network.c
Show inline comments
 
@@ -65,6 +65,21 @@ NetworkClientInfo *NetworkFindClientInfo
 
	return NULL;
 
}
 

	
 
/** Return the CI for a given IP
 
 * @param ip IP of the client we are looking for. This must be in string-format
 
 * @return return a pointer to the corresponding NetworkClientInfo struct or NULL on failure */
 
NetworkClientInfo *NetworkFindClientInfoFromIP(const char *ip)
 
{
 
	NetworkClientInfo *ci;
 
	uint32 ip_number = inet_addr(ip);
 

	
 
	for (ci = _network_client_info; ci != &_network_client_info[MAX_CLIENT_INFO]; ci++) {
 
		if (ci->client_ip == ip_number) return ci;
 
	}
 

	
 
	return NULL;
 
}
 

	
 
// Function that looks up the CS for a given client-index
 
NetworkClientState *NetworkFindClientStateFromIndex(uint16 client_index)
 
{
network_data.h
Show inline comments
 
@@ -226,6 +226,7 @@ void NetworkGetClientName(char *clientna
 
uint NetworkCalculateLag(const NetworkClientState *cs);
 
byte NetworkGetCurrentLanguageIndex(void);
 
NetworkClientInfo *NetworkFindClientInfoFromIndex(uint16 client_index);
 
NetworkClientInfo *NetworkFindClientInfoFromIP(const char *ip);
 
NetworkClientState *NetworkFindClientStateFromIndex(uint16 client_index);
 
unsigned long NetworkResolveHost(const char *hostname);
 

	
0 comments (0 inline, 0 general)