bool OnLoad(const CString& sArgs, CString& sMessage) override { // Load the chans from the command line unsigned int a = 0; VCString vsChans; sArgs.Split(" ", vsChans, false); for (const CString& sChan : vsChans) { CString sName = "Args"; sName += CString(a); AddUser(sName, "*", sChan); } // Load the saved users for (MCString::iterator it = BeginNV(); it != EndNV(); ++it) { const CString& sLine = it->second; CAutoVoiceUser* pUser = new CAutoVoiceUser; if (!pUser->FromString(sLine) || FindUser(pUser->GetUsername().AsLower())) { delete pUser; } else { m_msUsers[pUser->GetUsername().AsLower()] = pUser; } } return true; }
void OnDelChansCommand(const CString& sLine) { CString sUser = sLine.Token(1); CString sChans = sLine.Token(2, true); if (sChans.empty()) { PutModule("Usage: DelChans <user> <channel> [channel] ..."); return; } CAutoVoiceUser* pUser = FindUser(sUser); if (!pUser) { PutModule("No such user"); return; } pUser->DelChans(sChans); PutModule("Channel(s) Removed from user [" + pUser->GetUsername() + "]"); SetNV(pUser->GetUsername(), pUser->ToString()); }
virtual void OnModCommand(const CString& sLine) { CString sCommand = sLine.Token(0).AsUpper(); if (sCommand.Equals("HELP")) { PutModule("Commands are: ListUsers, AddChans, DelChans, AddUser, DelUser"); } else if (sCommand.Equals("ADDUSER") || sCommand.Equals("DELUSER")) { CString sUser = sLine.Token(1); CString sHost = sLine.Token(2); if (sCommand.Equals("ADDUSER")) { if (sHost.empty()) { PutModule("Usage: " + sCommand + " <user> <hostmask> [channels]"); } else { CAutoVoiceUser* pUser = AddUser(sUser, sHost, sLine.Token(3, true)); if (pUser) { SetNV(sUser, pUser->ToString()); } } } else { DelUser(sUser); DelNV(sUser); } } else if (sCommand.Equals("LISTUSERS")) { if (m_msUsers.empty()) { PutModule("There are no users defined"); return; } CTable Table; Table.AddColumn("User"); Table.AddColumn("Hostmask"); Table.AddColumn("Channels"); for (map<CString, CAutoVoiceUser*>::iterator it = m_msUsers.begin(); it != m_msUsers.end(); ++it) { Table.AddRow(); Table.SetCell("User", it->second->GetUsername()); Table.SetCell("Hostmask", it->second->GetHostmask()); Table.SetCell("Channels", it->second->GetChannels()); } PutModule(Table); } else if (sCommand.Equals("ADDCHANS") || sCommand.Equals("DELCHANS")) { CString sUser = sLine.Token(1); CString sChans = sLine.Token(2, true); if (sChans.empty()) { PutModule("Usage: " + sCommand + " <user> <channel> [channel] ..."); return; } CAutoVoiceUser* pUser = FindUser(sUser); if (!pUser) { PutModule("No such user"); return; } if (sCommand.Equals("ADDCHANS")) { pUser->AddChans(sChans); PutModule("Channel(s) added to user [" + pUser->GetUsername() + "]"); } else { pUser->DelChans(sChans); PutModule("Channel(s) Removed from user [" + pUser->GetUsername() + "]"); } SetNV(pUser->GetUsername(), pUser->ToString()); } else { PutModule("Unknown command, try HELP"); } }