Adding server irc management request to show the ip address of a user (in order to ban the user from the server).

This commit is contained in:
lotodore
2009-04-10 21:54:59 +00:00
parent dee2c6a0e5
commit f8b1123cc5
3 changed files with 34 additions and 5 deletions
+14
View File
@@ -301,6 +301,20 @@ ServerLobbyThread::ClearBanPlayerList()
m_banPlayerNameMap.clear(); m_banPlayerNameMap.clear();
} }
string
ServerLobbyThread::GetPlayerIPAddress(const std::string &playerName) const
{
string ipAddress;
SessionWrapper session = m_sessionManager.GetSessionByPlayerName(playerName);
if (!session.sessionData.get())
session = m_gameSessionManager.GetSessionByPlayerName(playerName);
if (session.sessionData.get() && session.playerData.get())
ipAddress = session.sessionData->GetClientAddr();
return ipAddress;
}
void void
ServerLobbyThread::RemovePlayer(unsigned playerId, unsigned errorCode) ServerLobbyThread::RemovePlayer(unsigned playerId, unsigned errorCode)
{ {
+19 -5
View File
@@ -112,6 +112,20 @@ ServerManager::SignalIrcChatMsg(const std::string &nickName, const std::string &
m_ircThread->SendChatMessage(nickName + ": Player \"" + playerName + "\" was not found on the server."); m_ircThread->SendChatMessage(nickName + ": Player \"" + playerName + "\" was not found on the server.");
} }
} }
else if (command == "showip")
{
while (msgStream.peek() == ' ')
msgStream.get();
string playerName(msgStream.str().substr(msgStream.tellg()));
if (!playerName.empty())
{
string ipAddress(GetLobbyThread().GetPlayerIPAddress(playerName));
if (!ipAddress.empty())
m_ircThread->SendChatMessage(nickName + ": The IP address of player \"" + playerName + "\" is: " + ipAddress);
else
m_ircThread->SendChatMessage(nickName + ": The IP address of player \"" + playerName + "\" is unknown.");
}
}
else if (command == "nickban") else if (command == "nickban")
{ {
while (msgStream.peek() == ' ') while (msgStream.peek() == ' ')
@@ -123,7 +137,7 @@ ServerManager::SignalIrcChatMsg(const std::string &nickName, const std::string &
m_ircThread->SendChatMessage(nickName + ": The regex \"" + playerRegex + "\" was added to the player ban list."); m_ircThread->SendChatMessage(nickName + ": The regex \"" + playerRegex + "\" was added to the player ban list.");
} }
} }
else if (command == "listnickban") else if (command == "listban")
{ {
list<string> banList; list<string> banList;
GetLobbyThread().GetBanPlayerList(banList); GetLobbyThread().GetBanPlayerList(banList);
@@ -136,10 +150,10 @@ ServerManager::SignalIrcChatMsg(const std::string &nickName, const std::string &
} }
ostringstream banListStream; ostringstream banListStream;
banListStream banListStream
<< nickName << ": Total count of banned nicks: " << banList.size(); << nickName << ": Total count of bans: " << banList.size();
m_ircThread->SendChatMessage(banListStream.str()); m_ircThread->SendChatMessage(banListStream.str());
} }
else if (command == "removenickban") else if (command == "removeban")
{ {
unsigned banId = 0; unsigned banId = 0;
msgStream >> banId; msgStream >> banId;
@@ -148,10 +162,10 @@ ServerManager::SignalIrcChatMsg(const std::string &nickName, const std::string &
else else
m_ircThread->SendChatMessage(nickName + ": This nick ban does not exist."); m_ircThread->SendChatMessage(nickName + ": This nick ban does not exist.");
} }
else if (command == "clearnickban") else if (command == "clearban")
{ {
GetLobbyThread().ClearBanPlayerList(); GetLobbyThread().ClearBanPlayerList();
m_ircThread->SendChatMessage(nickName + ": The player ban list was cleared."); m_ircThread->SendChatMessage(nickName + ": All ban lists were cleared.");
} }
else if (command == "stat") else if (command == "stat")
{ {
+1
View File
@@ -73,6 +73,7 @@ public:
bool UnBanPlayerRegex(unsigned banId); bool UnBanPlayerRegex(unsigned banId);
void GetBanPlayerList(std::list<std::string> &list) const; void GetBanPlayerList(std::list<std::string> &list) const;
void ClearBanPlayerList(); void ClearBanPlayerList();
std::string GetPlayerIPAddress(const std::string &playerName) const;
void RemovePlayer(unsigned playerId, unsigned errorCode); void RemovePlayer(unsigned playerId, unsigned errorCode);
void SendGlobalChat(const std::string &message); void SendGlobalChat(const std::string &message);