diff --git a/modules/controlpanel.cpp b/modules/controlpanel.cpp index 4ca0ec8f..92057437 100644 --- a/modules/controlpanel.cpp +++ b/modules/controlpanel.cpp @@ -1064,6 +1064,34 @@ class CAdminMod : public CModule { PutModule("Could not add IRC server [" + sServer + "] for network [" + sNetwork + "] for user [" + pUser->GetUserName() + "]."); } + void DelServer(const CString& sLine) { + CString sUsername = sLine.Token(1); + CString sNetwork = sLine.Token(2); + CString sServer = sLine.Token(3, true); + unsigned short uPort = sLine.Token(4).ToUShort(); + CString sPass = sLine.Token(5); + + if (sServer.empty()) { + PutModule("Usage: DelServer "); + return; + } + + CUser* pUser = FindUser(sUsername); + if (!pUser) + return; + + CIRCNetwork* pNetwork = pUser->FindNetwork(sNetwork); + if (!pNetwork) { + PutModule("[" + sUsername + "] does not have a network with the name [" + sNetwork + "]"); + return; + } + + if (pNetwork->DelServer(sServer, uPort, sPass)) + PutModule("Deleted IRC Server [" + sServer + "] for network [" + sNetwork + "] for user [" + pUser->GetUserName() + "]."); + else + PutModule("Could not delete IRC server [" + sServer + "] for network [" + sNetwork + "] for user [" + pUser->GetUserName() + "]."); + } + void ReconnectUser(const CString& sLine) { CString sUserName = sLine.Token(1); CString sNetwork = sLine.Token(2); @@ -1414,6 +1442,8 @@ public: " ", "Clones a user"); AddCommand("AddServer", static_cast(&CAdminMod::AddServer), " ", "Adds a new IRC server for the given or current user"); + AddCommand("DelServer", static_cast(&CAdminMod::DelServer), + " ", "Deletes an IRC server from the given or current user"); AddCommand("Reconnect", static_cast(&CAdminMod::ReconnectUser), " ", "Cycles the user's IRC server connection"); AddCommand("Disconnect", static_cast(&CAdminMod::DisconnectUser),