about summary refs log tree commit diff
path: root/src/engine
diff options
context:
space:
mode:
authorChoupom <andycootlapin@hotmail.fr>2010-10-09 20:19:58 +0200
committeroy <Tom_Adams@web.de>2010-10-11 00:31:14 +0200
commit7aefbca742c20206ce18a64bc83322331ee67b39 (patch)
treece6874faa4220af59b79b241b9717e1fd3e19c1a /src/engine
parent5754812dea6598335f60858d125639c92ec67914 (diff)
downloadzcatch-7aefbca742c20206ce18a64bc83322331ee67b39.tar.gz
zcatch-7aefbca742c20206ce18a64bc83322331ee67b39.zip
made so we can add the reason for a kick/ban (fixes #123)
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/client/client.cpp4
-rw-r--r--src/engine/server/server.cpp33
-rw-r--r--src/engine/server/server.h2
-rw-r--r--src/engine/shared/network.h4
-rw-r--r--src/engine/shared/network_conn.cpp6
-rw-r--r--src/engine/shared/network_server.cpp18
6 files changed, 39 insertions, 28 deletions
diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp
index 7c0c632e..44997ce0 100644
--- a/src/engine/client/client.cpp
+++ b/src/engine/client/client.cpp
@@ -1950,8 +1950,8 @@ void CClient::RegisterCommands()
 {
 	m_pConsole = Kernel()->RequestInterface<IConsole>();
 	// register server dummy commands for tab completion
-	m_pConsole->Register("kick", "i", CFGFLAG_SERVER, 0, 0, "Kick player with specified id");
-	m_pConsole->Register("ban", "s?i", CFGFLAG_SERVER, 0, 0, "Ban player with ip/id for x minutes");
+	m_pConsole->Register("kick", "i?s", CFGFLAG_SERVER, 0, 0, "Kick player with specified id for any reason");
+	m_pConsole->Register("ban", "s?is", CFGFLAG_SERVER, 0, 0, "Ban player with ip/id for x minutes for any reason");
 	m_pConsole->Register("unban", "s", CFGFLAG_SERVER, 0, 0, "Unban ip");
 	m_pConsole->Register("bans", "", CFGFLAG_SERVER, 0, 0, "Show banlist");
 	m_pConsole->Register("status", "", CFGFLAG_SERVER, 0, 0, "List players");
diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp
index c7b728d4..fc8ad411 100644
--- a/src/engine/server/server.cpp
+++ b/src/engine/server/server.cpp
@@ -634,7 +634,7 @@ void CServer::ProcessClientPacket(CNetChunk *pPacket)
 			{
 				// OH FUCK! wrong version, drop him
 				char aReason[256];
-				str_format(aReason, sizeof(aReason), "wrong version. server is running '%s' and client '%s'.", GameServer()->NetVersion(), aVersion);
+				str_format(aReason, sizeof(aReason), "Wrong version : server is running \"%s\" and client \"%s\"", GameServer()->NetVersion(), aVersion);
 				m_NetServer.Drop(ClientId, aReason);
 				return;
 			}
@@ -646,7 +646,7 @@ void CServer::ProcessClientPacket(CNetChunk *pPacket)
 			if(g_Config.m_Password[0] != 0 && str_comp(g_Config.m_Password, pPassword) != 0)
 			{
 				// wrong password
-				m_NetServer.Drop(ClientId, "wrong password");
+				m_NetServer.Drop(ClientId, "Wrong password");
 				return;
 			}
 			
@@ -823,7 +823,7 @@ void CServer::ProcessClientPacket(CNetChunk *pPacket)
 							else
 							{
 								NETADDR Addr = m_NetServer.ClientAddr(ClientId);
-								BanAdd(Addr, g_Config.m_SvRconBantime*60);
+								BanAdd(Addr, g_Config.m_SvRconBantime*60, "Too many remote console authentication tries");
 							}
 						}
 					}
@@ -947,7 +947,7 @@ void CServer::UpdateServerInfo()
 	}
 }
 
-int CServer::BanAdd(NETADDR Addr, int Seconds)
+int CServer::BanAdd(NETADDR Addr, int Seconds, const char *pReason)
 {
 	Addr.port = 0;
 	char aAddrStr[128];
@@ -959,7 +959,7 @@ int CServer::BanAdd(NETADDR Addr, int Seconds)
 		str_format(aBuf, sizeof(aBuf), "banned %s for life", aAddrStr);
 	Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "server", aBuf);
 
-	return m_NetServer.BanAdd(Addr, Seconds);	
+	return m_NetServer.BanAdd(Addr, Seconds, pReason);	
 }
 
 int CServer::BanRemove(NETADDR Addr)
@@ -1240,7 +1240,7 @@ int CServer::Run()
 	for(int i = 0; i < MAX_CLIENTS; ++i)
 	{
 		if(m_aClients[i].m_State != CClient::STATE_EMPTY)
-			m_NetServer.Drop(i, "server shutdown");
+			m_NetServer.Drop(i, "Server shutdown");
 	}
 
 	GameServer()->OnShutdown();
@@ -1253,7 +1253,14 @@ int CServer::Run()
 
 void CServer::ConKick(IConsole::IResult *pResult, void *pUser)
 {
-	((CServer *)pUser)->Kick(pResult->GetInteger(0), "kicked by console");
+	if(pResult->NumArguments() > 1)
+	{
+		char aBuf[128];
+		str_format(aBuf, sizeof(aBuf), "Kicked by console (%s)", pResult->GetString(1));
+		((CServer *)pUser)->Kick(pResult->GetInteger(0), aBuf);
+	}
+	else
+		((CServer *)pUser)->Kick(pResult->GetInteger(0), "Kicked by console");
 }
 
 void CServer::ConBan(IConsole::IResult *pResult, void *pUser)
@@ -1262,10 +1269,14 @@ void CServer::ConBan(IConsole::IResult *pResult, void *pUser)
 	CServer *pServer = (CServer *)pUser;
 	const char *pStr = pResult->GetString(0);
 	int Minutes = 30;
+  	const char *pReason = "No reason given";
 	
 	if(pResult->NumArguments() > 1)
 		Minutes = pResult->GetInteger(1);
 	
+	if(pResult->NumArguments() > 2)
+		pReason = pResult->GetString(2);
+	
 	if(net_addr_from_str(&Addr, pStr) == 0)
 	{
 		if(pServer->m_RconClientId >= 0 && pServer->m_RconClientId < MAX_CLIENTS && pServer->m_aClients[pServer->m_RconClientId].m_State != CClient::STATE_EMPTY)
@@ -1278,7 +1289,7 @@ void CServer::ConBan(IConsole::IResult *pResult, void *pUser)
 				return;
 			}
 		}
-		pServer->BanAdd(Addr, Minutes*60);
+		pServer->BanAdd(Addr, Minutes*60, pReason);
 	}
 	else if(StrAllnum(pStr))
 	{
@@ -1296,7 +1307,7 @@ void CServer::ConBan(IConsole::IResult *pResult, void *pUser)
 		}
 
 		Addr = pServer->m_NetServer.ClientAddr(ClientId);
-		pServer->BanAdd(Addr, Minutes*60);
+		pServer->BanAdd(Addr, Minutes*60, pReason);
 	}
 	else
 	{
@@ -1426,8 +1437,8 @@ void CServer::RegisterCommands()
 {
 	m_pConsole = Kernel()->RequestInterface<IConsole>();
 	
-	Console()->Register("kick", "i", CFGFLAG_SERVER, ConKick, this, "");
-	Console()->Register("ban", "s?i", CFGFLAG_SERVER|CFGFLAG_STORE, ConBan, this, "");
+	Console()->Register("kick", "i?s", CFGFLAG_SERVER, ConKick, this, "");
+	Console()->Register("ban", "s?is", CFGFLAG_SERVER|CFGFLAG_STORE, ConBan, this, "");
 	Console()->Register("unban", "s", CFGFLAG_SERVER|CFGFLAG_STORE, ConUnban, this, "");
 	Console()->Register("bans", "", CFGFLAG_SERVER|CFGFLAG_STORE, ConBans, this, "");
 	Console()->Register("status", "", CFGFLAG_SERVER, ConStatus, this, "");
diff --git a/src/engine/server/server.h b/src/engine/server/server.h
index 98ba50bb..3a720034 100644
--- a/src/engine/server/server.h
+++ b/src/engine/server/server.h
@@ -165,7 +165,7 @@ public:
 	void SendServerInfo(NETADDR *pAddr, int Token);
 	void UpdateServerInfo();
 
-	int BanAdd(NETADDR Addr, int Seconds);
+	int BanAdd(NETADDR Addr, int Seconds, const char *pReason);
 	int BanRemove(NETADDR Addr);
 		
 
diff --git a/src/engine/shared/network.h b/src/engine/shared/network.h
index a2232320..ef83a191 100644
--- a/src/engine/shared/network.h
+++ b/src/engine/shared/network.h
@@ -272,10 +272,10 @@ public:
 	int Update();
 	
 	//
-	int Drop(int ClientID, const char *Reason);
+	int Drop(int ClientID, const char *pReason);
 
 	// banning
-	int BanAdd(NETADDR Addr, int Seconds);
+	int BanAdd(NETADDR Addr, int Seconds, const char *pReason);
 	int BanRemove(NETADDR Addr);
 	int BanNum(); // caution, slow
 	int BanGet(int Index, CBanInfo *pInfo); // caution, slow
diff --git a/src/engine/shared/network_conn.cpp b/src/engine/shared/network_conn.cpp
index 4ed157eb..b9757500 100644
--- a/src/engine/shared/network_conn.cpp
+++ b/src/engine/shared/network_conn.cpp
@@ -226,7 +226,7 @@ int CNetConnection::Feed(CNetPacketConstruct *pPacket, NETADDR *pAddr)
 					SetError(Str);
 				}
 				else
-					SetError("no reason given");
+					SetError("No reason given");
 					
 				if(g_Config.m_Debug)
 					dbg_msg("conn", "closed reason='%s'", ErrorString());
@@ -304,7 +304,7 @@ int CNetConnection::Update()
 		(Now-m_LastRecvTime) > time_freq()*10)
 	{
 		m_State = NET_CONNSTATE_ERROR;
-		SetError("timeout");
+		SetError("Timeout");
 	}
 
 	// fix resends
@@ -316,7 +316,7 @@ int CNetConnection::Update()
 		if(Now-pResend->m_FirstSendTime > time_freq()*10)
 		{
 			m_State = NET_CONNSTATE_ERROR;
-			SetError("too weak connection (not acked for 10 seconds)");
+			SetError("Too weak connection (not acked for 10 seconds)");
 		}
 		else
 		{
diff --git a/src/engine/shared/network_server.cpp b/src/engine/shared/network_server.cpp
index ed714365..69278775 100644
--- a/src/engine/shared/network_server.cpp
+++ b/src/engine/shared/network_server.cpp
@@ -139,7 +139,7 @@ int CNetServer::BanRemove(NETADDR Addr)
 	return -1;
 }
 
-int CNetServer::BanAdd(NETADDR Addr, int Seconds)
+int CNetServer::BanAdd(NETADDR Addr, int Seconds, const char *pReason)
 {
 	int IpHash = (Addr.ip[0]+Addr.ip[1]+Addr.ip[2]+Addr.ip[3])&0xff;
 	int Stamp = -1;
@@ -213,9 +213,9 @@ int CNetServer::BanAdd(NETADDR Addr, int Seconds)
 		NETADDR BanAddr;
 		
 		if(Seconds)
-			str_format(Buf, sizeof(Buf), "you have been banned for %d minutes", Seconds/60);
+			str_format(Buf, sizeof(Buf), "You have been banned for %d minutes (%s)", Seconds/60, pReason);
 		else
-			str_format(Buf, sizeof(Buf), "you have been banned for life");
+			str_format(Buf, sizeof(Buf), "You have been banned for life (%s)", pReason);
 		
 		for(int i = 0; i < MaxClients(); i++)
 		{
@@ -295,12 +295,12 @@ int CNetServer::Recv(CNetChunk *pChunk)
 				{
 					int Mins = ((pBan->m_Info.m_Expires - Now)+59)/60;
 					if(Mins == 1)
-						str_format(BanStr, sizeof(BanStr), "banned for %d minute", Mins);
+						str_format(BanStr, sizeof(BanStr), "Banned for 1 minute");
 					else
-						str_format(BanStr, sizeof(BanStr), "banned for %d minutes", Mins);
+						str_format(BanStr, sizeof(BanStr), "Banned for %d minutes", Mins);
 				}
 				else
-					str_format(BanStr, sizeof(BanStr), "banned for life");
+					str_format(BanStr, sizeof(BanStr), "Banned for life");
 				CNetBase::SendControlMsg(m_Socket, &Addr, 0, NET_CTRLMSG_CLOSE, BanStr, str_length(BanStr)+1);
 				continue;
 			}
@@ -352,7 +352,7 @@ int CNetServer::Recv(CNetChunk *pChunk)
 								if(FoundAddr++ >= m_MaxClientsPerIP)
 								{
 									char aBuf[128];
-									str_format(aBuf, sizeof(aBuf), "only %i players with same ip allowed", m_MaxClientsPerIP);
+									str_format(aBuf, sizeof(aBuf), "Only %d players with the same IP are allowed", m_MaxClientsPerIP);
 									CNetBase::SendControlMsg(m_Socket, &Addr, 0, NET_CTRLMSG_CLOSE, aBuf, sizeof(aBuf));
 									return 0;
 								}
@@ -373,7 +373,7 @@ int CNetServer::Recv(CNetChunk *pChunk)
 						
 						if(!Found)
 						{
-							const char FullMsg[] = "server is full";
+							const char FullMsg[] = "This server is full";
 							CNetBase::SendControlMsg(m_Socket, &Addr, 0, NET_CTRLMSG_CLOSE, FullMsg, sizeof(FullMsg));
 						}
 					}
@@ -429,7 +429,7 @@ int CNetServer::Send(CNetChunk *pChunk)
 		}
 		else
 		{
-			Drop(pChunk->m_ClientID, "error sending data");
+			Drop(pChunk->m_ClientID, "Error sending data");
 		}
 	}
 	return 0;