about summary refs log tree commit diff
path: root/src/engine/server
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/server
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/server')
-rw-r--r--src/engine/server/server.cpp33
-rw-r--r--src/engine/server/server.h2
2 files changed, 23 insertions, 12 deletions
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);