From d138cda8f40fe7f6f90c410fff8856c49c44556e Mon Sep 17 00:00:00 2001 From: Andrew Northall Date: Wed, 11 Dec 2013 01:03:07 +0000 Subject: [PATCH 1/2] Add AddChan/DelChan command to controlpanel module --- modules/controlpanel.cpp | 67 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/modules/controlpanel.cpp b/modules/controlpanel.cpp index b77d4d3c..c05f86fd 100644 --- a/modules/controlpanel.cpp +++ b/modules/controlpanel.cpp @@ -470,6 +470,69 @@ class CAdminMod : public CModule { PutModule("Error: Unknown variable"); } } + + void AddChan(const CString& sLine) { + const CString sUsername = sLine.Token(1); + const CString sNetwork = sLine.Token(2); + const CString sChan = sLine.Token(3, true); + + if (sChan.empty()) { + PutModule("Usage: addchan "); + return; + } + + CUser* pUser = GetUser(sUsername); + if (!pUser) + return; + + CIRCNetwork* pNetwork = pUser->FindNetwork(sNetwork); + if (!pNetwork) { + PutModule("Error: [" + sUsername + "] does not have a network named [" + sNetwork + "]."); + return; + } + + if (pNetwork->FindChan(sChan)) { + PutModule("Error: [" + sUsername + "] already has a channel named [" + sChan + "]."); + return; + } + + CChan* pChan = new CChan(sChan, pNetwork, true); + pNetwork->AddChan(pChan); + + PutModule("Channel [" + sChan + "] for user [" + sUsername + "] added."); + } + + void DelChan(const CString& sLine) { + const CString sUsername = sLine.Token(1); + const CString sNetwork = sLine.Token(2); + const CString sChan = sLine.Token(3, true); + + if (sChan.empty()) { + PutModule("Usage: delchan "); + return; + } + + CUser* pUser = GetUser(sUsername); + if (!pUser) + return; + + CIRCNetwork* pNetwork = pUser->FindNetwork(sNetwork); + if (!pNetwork) { + PutModule("Error: [" + sUsername + "] does not have a network named [" + sNetwork + "]."); + return; + } + + CChan* pChan = pNetwork->FindChan(sChan); + if (!pChan) { + PutModule("Error: User [" + sUsername + "] does not have a channel named [" + sChan + "]."); + return; + } + + pNetwork->DelChan(sChan); + pNetwork->PutIRC("PART " + sChan); + + PutModule("Channel [" + sChan + "] for user [" + sUsername + "] deleted."); + } void GetChan(const CString& sLine) { const CString sVar = sLine.Token(1).AsLower(); @@ -1200,6 +1263,10 @@ public: "variable [username] network chan", "Prints the variable's value for the given channel"); AddCommand("SetChan", static_cast(&CAdminMod::SetChan), "variable username network chan value", "Sets the variable's value for the given channel"); + AddCommand("AddChan", static_cast(&CAdminMod::AddChan), + "username network chan", "Adds a new channel"); + AddCommand("DelChan", static_cast(&CAdminMod::DelChan), + "username network chan", "Deletes a channel"); AddCommand("ListUsers", static_cast(&CAdminMod::ListUsers), "", "Lists users"); AddCommand("AddUser", static_cast(&CAdminMod::AddUser), From 0f8441fdffd5abb988b6ccb36bf87e9281393b44 Mon Sep 17 00:00:00 2001 From: Andrew Northall Date: Sat, 18 Jan 2014 03:24:23 +0000 Subject: [PATCH 2/2] Channel name cannot contain space --- modules/controlpanel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/controlpanel.cpp b/modules/controlpanel.cpp index c05f86fd..0ff3a4f0 100644 --- a/modules/controlpanel.cpp +++ b/modules/controlpanel.cpp @@ -474,7 +474,7 @@ class CAdminMod : public CModule { void AddChan(const CString& sLine) { const CString sUsername = sLine.Token(1); const CString sNetwork = sLine.Token(2); - const CString sChan = sLine.Token(3, true); + const CString sChan = sLine.Token(3); if (sChan.empty()) { PutModule("Usage: addchan "); @@ -505,7 +505,7 @@ class CAdminMod : public CModule { void DelChan(const CString& sLine) { const CString sUsername = sLine.Token(1); const CString sNetwork = sLine.Token(2); - const CString sChan = sLine.Token(3, true); + const CString sChan = sLine.Token(3); if (sChan.empty()) { PutModule("Usage: delchan ");