diff options
| author | Choupom <andycootlapin@hotmail.fr> | 2010-10-09 20:19:58 +0200 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2010-10-11 00:31:14 +0200 |
| commit | 7aefbca742c20206ce18a64bc83322331ee67b39 (patch) | |
| tree | ce6874faa4220af59b79b241b9717e1fd3e19c1a /src/engine/server | |
| parent | 5754812dea6598335f60858d125639c92ec67914 (diff) | |
| download | zcatch-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.cpp | 33 | ||||
| -rw-r--r-- | src/engine/server/server.h | 2 |
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); |