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 | |
| 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')
| -rw-r--r-- | src/engine/client/client.cpp | 4 | ||||
| -rw-r--r-- | src/engine/server/server.cpp | 33 | ||||
| -rw-r--r-- | src/engine/server/server.h | 2 | ||||
| -rw-r--r-- | src/engine/shared/network.h | 4 | ||||
| -rw-r--r-- | src/engine/shared/network_conn.cpp | 6 | ||||
| -rw-r--r-- | src/engine/shared/network_server.cpp | 18 |
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; |