about summary refs log tree commit diff
path: root/src/engine/server/server.cpp
diff options
context:
space:
mode:
authorLearath2 <emir1998@gmail.com>2011-12-26 23:07:57 +0200
committeroy <Tom_Adams@web.de>2011-12-29 23:53:07 +0100
commit81e6cf6f83b8f45705f4c2a76ca4a1e647a3c4a2 (patch)
treea6a8a9344502c0335316c03895695544191264f2 /src/engine/server/server.cpp
parentb44ee3d9755ff35a6df1358dcfe85ce681bbe081 (diff)
downloadzcatch-81e6cf6f83b8f45705f4c2a76ca4a1e647a3c4a2.tar.gz
zcatch-81e6cf6f83b8f45705f4c2a76ca4a1e647a3c4a2.zip
Added logout command. Closes #903
Diffstat (limited to 'src/engine/server/server.cpp')
-rw-r--r--src/engine/server/server.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp
index 9587b94c..9bb36b74 100644
--- a/src/engine/server/server.cpp
+++ b/src/engine/server/server.cpp
@@ -1507,6 +1507,22 @@ void CServer::ConMapReload(IConsole::IResult *pResult, void *pUser)
 	((CServer *)pUser)->m_MapReload = 1;
 }
 
+void CServer::ConLogout(IConsole::IResult *pResult, void *pUser)
+{
+	CServer *pServer = (CServer *)pUser;
+
+	CMsgPacker Msg(NETMSG_RCON_AUTH_STATUS);
+	Msg.AddInt(0);	//authed
+	Msg.AddInt(0);	//cmdlist
+	pServer->SendMsgEx(&Msg, MSGFLAG_VITAL, pServer->m_RconClientID, true);
+
+	pServer->m_aClients[pServer->m_RconClientID].m_Authed = AUTHED_NO;
+	pServer->SendRconLine(pServer->m_RconClientID, "You've logged out");
+	char aBuf[32];
+	str_format(aBuf, sizeof(aBuf), "ClientID=%d logged out", pServer->m_RconClientID);
+	pServer->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "server", aBuf);
+}
+
 void CServer::ConchainSpecialInfoupdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
 {
 	pfnCallback(pResult, pCallbackUserData);
@@ -1567,6 +1583,7 @@ void CServer::RegisterCommands()
 	Console()->Register("kick", "i?r", CFGFLAG_SERVER, ConKick, this, "Kick player with specified id for any reason");
 	Console()->Register("status", "", CFGFLAG_SERVER, ConStatus, this, "List players");
 	Console()->Register("shutdown", "", CFGFLAG_SERVER, ConShutdown, this, "Shut down");
+	Console()->Register("logout", "", CFGFLAG_SERVER, ConLogout, this, "Logs you out of Rcon");
 
 	Console()->Register("record", "?s", CFGFLAG_SERVER|CFGFLAG_STORE, ConRecord, this, "Record to a file");
 	Console()->Register("stoprecord", "", CFGFLAG_SERVER, ConStopRecord, this, "Stop recording");