Merge branch 'master' of github.com:znc/znc

This commit is contained in:
Alexey Sokolov
2015-08-14 00:36:21 +01:00
15 changed files with 246 additions and 292 deletions
+19 -22
View File
@@ -35,9 +35,9 @@ public:
VCString vsChans;
sArgs.Split(" ", vsChans, false);
for (VCString::const_iterator it = vsChans.begin(); it != vsChans.end(); ++it) {
if (!Add(*it)) {
PutModule("Unable to add [" + *it + "]");
for (const CString& sChan : vsChans) {
if (!Add(sChan)) {
PutModule("Unable to add [" + sChan + "]");
}
}
@@ -79,14 +79,14 @@ public:
CTable Table;
Table.AddColumn("Chan");
for (unsigned int a = 0; a < m_vsChans.size(); a++) {
for (const CString& sChan : m_vsChans) {
Table.AddRow();
Table.SetCell("Chan", m_vsChans[a]);
Table.SetCell("Chan", sChan);
}
for (unsigned int b = 0; b < m_vsNegChans.size(); b++) {
for (const CString& sChan : m_vsNegChans) {
Table.AddRow();
Table.SetCell("Chan", "!" + m_vsNegChans[b]);
Table.SetCell("Chan", "!" + sChan);
}
if (Table.size()) {
@@ -101,8 +101,8 @@ public:
}
void OnQuit(const CNick& Nick, const CString& sMessage, const vector<CChan*>& vChans) override {
for (unsigned int i = 0; i < vChans.size(); i++)
AutoCycle(*vChans[i]);
for (CChan* pChan : vChans)
AutoCycle(*pChan);
}
void OnKick(const CNick& Nick, const CString& sOpNick, CChan& Channel, const CString& sMessage) override {
@@ -131,18 +131,15 @@ protected:
}
bool AlreadyAdded(const CString& sInput) {
vector<CString>::iterator it;
if (sInput.Left(1) == "!") {
CString sChan = sInput.substr(1);
for (it = m_vsNegChans.begin(); it != m_vsNegChans.end();
++it) {
if (*it == sChan)
CString sChan = sInput;
if (sChan.TrimPrefix("!")) {
for (const CString& s : m_vsNegChans) {
if (s.Equals(sChan))
return true;
}
} else {
for (it = m_vsChans.begin(); it != m_vsChans.end(); ++it) {
if (*it == sInput)
for (const CString& s : m_vsChans) {
if (s.Equals(sChan))
return true;
}
}
@@ -205,14 +202,14 @@ protected:
}
bool IsAutoCycle(const CString& sChan) {
for (unsigned int a = 0; a < m_vsNegChans.size(); a++) {
if (sChan.WildCmp(m_vsNegChans[a], CString::CaseInsensitive)) {
for (const CString& s : m_vsNegChans) {
if (sChan.WildCmp(s, CString::CaseInsensitive)) {
return false;
}
}
for (unsigned int b = 0; b < m_vsChans.size(); b++) {
if (sChan.WildCmp(m_vsChans[b], CString::CaseInsensitive)) {
for (const CString& s : m_vsChans) {
if (sChan.WildCmp(s, CString::CaseInsensitive)) {
return true;
}
}
+40 -44
View File
@@ -63,8 +63,8 @@ public:
const CString& GetUserKey() const { return m_sUserKey; }
bool ChannelMatches(const CString& sChan) const {
for (set<CString>::const_iterator it = m_ssChans.begin(); it != m_ssChans.end(); ++it) {
if (sChan.AsLower().WildCmp(*it, CString::CaseInsensitive)) {
for (const CString& s : m_ssChans) {
if (sChan.AsLower().WildCmp(s, CString::CaseInsensitive)) {
return true;
}
}
@@ -73,8 +73,8 @@ public:
}
bool HostMatches(const CString& sHostmask) {
for (set<CString>::const_iterator it = m_ssHostmasks.begin(); it != m_ssHostmasks.end(); ++it) {
if (sHostmask.WildCmp(*it, CString::CaseInsensitive)) {
for (const CString& s : m_ssHostmasks) {
if (sHostmask.WildCmp(s, CString::CaseInsensitive)) {
return true;
}
}
@@ -93,8 +93,8 @@ public:
VCString vsHostmasks;
sHostmasks.Split(",", vsHostmasks);
for (unsigned int a = 0; a < vsHostmasks.size(); a++) {
m_ssHostmasks.erase(vsHostmasks[a]);
for (const CString& s : vsHostmasks) {
m_ssHostmasks.erase(s);
}
return m_ssHostmasks.empty();
@@ -104,8 +104,8 @@ public:
VCString vsHostmasks;
sHostmasks.Split(",", vsHostmasks);
for (unsigned int a = 0; a < vsHostmasks.size(); a++) {
m_ssHostmasks.insert(vsHostmasks[a]);
for (const CString& s : vsHostmasks) {
m_ssHostmasks.insert(s);
}
}
@@ -113,8 +113,8 @@ public:
VCString vsChans;
sChans.Split(" ", vsChans);
for (unsigned int a = 0; a < vsChans.size(); a++) {
m_ssChans.erase(vsChans[a].AsLower());
for (const CString& sChan : vsChans) {
m_ssChans.erase(sChan.AsLower());
}
}
@@ -122,8 +122,8 @@ public:
VCString vsChans;
sChans.Split(" ", vsChans);
for (unsigned int a = 0; a < vsChans.size(); a++) {
m_ssChans.insert(vsChans[a].AsLower());
for (const CString& sChan : vsChans) {
m_ssChans.insert(sChan.AsLower());
}
}
@@ -179,8 +179,8 @@ public:
}
virtual ~CAutoOpMod() {
for (map<CString, CAutoOpUser*>::iterator it = m_msUsers.begin(); it != m_msUsers.end(); ++it) {
delete it->second;
for (const auto& it : m_msUsers) {
delete it.second;
}
m_msUsers.clear();
}
@@ -230,9 +230,9 @@ public:
if (Nick.GetNick() == GetNetwork()->GetIRCNick().GetNick()) {
const map<CString,CNick>& msNicks = Channel.GetNicks();
for (map<CString,CNick>::const_iterator it = msNicks.begin(); it != msNicks.end(); ++it) {
if (!it->second.HasPerm(CChan::Op)) {
CheckAutoOp(it->second, Channel);
for (const auto& it : msNicks) {
if (!it.second.HasPerm(CChan::Op)) {
CheckAutoOp(it.second, Channel);
}
}
}
@@ -288,15 +288,15 @@ public:
Table.AddColumn("Key");
Table.AddColumn("Channels");
for (map<CString, CAutoOpUser*>::iterator it = m_msUsers.begin(); it != m_msUsers.end(); ++it) {
for (const auto& it : m_msUsers) {
VCString vsHostmasks;
it->second->GetHostmasks().Split(",", vsHostmasks);
it.second->GetHostmasks().Split(",", vsHostmasks);
for (unsigned int a = 0; a < vsHostmasks.size(); a++) {
Table.AddRow();
if (a == 0) {
Table.SetCell("User", it->second->GetUsername());
Table.SetCell("Key", it->second->GetUserKey());
Table.SetCell("Channels", it->second->GetChannels());
Table.SetCell("User", it.second->GetUsername());
Table.SetCell("Key", it.second->GetUserKey());
Table.SetCell("Channels", it.second->GetChannels());
} else if (a == vsHostmasks.size()-1) {
Table.SetCell("User", "`-");
} else {
@@ -405,8 +405,8 @@ public:
}
CAutoOpUser* FindUserByHost(const CString& sHostmask, const CString& sChannel = "") {
for (map<CString, CAutoOpUser*>::iterator it = m_msUsers.begin(); it != m_msUsers.end(); ++it) {
CAutoOpUser* pUser = it->second;
for (const auto& it : m_msUsers) {
CAutoOpUser* pUser = it.second;
if (pUser->HostMatches(sHostmask) && (sChannel.empty() || pUser->ChannelMatches(sChannel))) {
return pUser;
@@ -467,8 +467,8 @@ public:
bool bMatchedHost = false;
CAutoOpUser* pUser = nullptr;
for (map<CString, CAutoOpUser*>::iterator it = m_msUsers.begin(); it != m_msUsers.end(); ++it) {
pUser = it->second;
for (const auto& it : m_msUsers) {
pUser = it.second;
// First verify that the person who challenged us matches a user's host
if (pUser->HostMatches(Nick.GetHostMask())) {
@@ -476,13 +476,11 @@ public:
bMatchedHost = true;
// Also verify that they are opped in at least one of the user's chans
for (size_t a = 0; a < Chans.size(); a++) {
const CChan& Chan = *Chans[a];
const CNick* pNick = Chan.FindNick(Nick.GetNick());
for (CChan* pChan : Chans) {
const CNick* pNick = pChan->FindNick(Nick.GetNick());
if (pNick) {
if (pNick->HasPerm(CChan::Op) && pUser->ChannelMatches(Chan.GetName())) {
if (pNick->HasPerm(CChan::Op) && pUser->ChannelMatches(pChan->GetName())) {
bValid = true;
break;
}
@@ -526,10 +524,10 @@ public:
CString sChallenge = itQueue->second;
m_msQueue.erase(itQueue);
for (map<CString, CAutoOpUser*>::iterator it = m_msUsers.begin(); it != m_msUsers.end(); ++it) {
if (it->second->HostMatches(Nick.GetHostMask())) {
if (sResponse == CString(it->second->GetUserKey() + "::" + sChallenge).MD5()) {
OpUser(Nick, *it->second);
for (const auto& it : m_msUsers) {
if (it.second->HostMatches(Nick.GetHostMask())) {
if (sResponse == CString(it.second->GetUserKey() + "::" + sChallenge).MD5()) {
OpUser(Nick, *it.second);
return true;
} else {
PutModule("WARNING! [" + Nick.GetHostMask() + "] sent a bad response. Please verify that you have their correct password.");
@@ -560,23 +558,21 @@ public:
}
// Now issue challenges for the new users in the queue
for (MCString::iterator it = m_msQueue.begin(); it != m_msQueue.end(); ++it) {
it->second = CString::RandomString(AUTOOP_CHALLENGE_LENGTH);
PutIRC("NOTICE " + it->first + " :!ZNCAO CHALLENGE " + it->second);
for (auto& it : m_msQueue) {
it.second = CString::RandomString(AUTOOP_CHALLENGE_LENGTH);
PutIRC("NOTICE " + it.first + " :!ZNCAO CHALLENGE " + it.second);
}
}
void OpUser(const CNick& Nick, const CAutoOpUser& User) {
const vector<CChan*>& Chans = GetNetwork()->GetChans();
for (size_t a = 0; a < Chans.size(); a++) {
const CChan& Chan = *Chans[a];
if (Chan.HasPerm(CChan::Op) && User.ChannelMatches(Chan.GetName())) {
const CNick* pNick = Chan.FindNick(Nick.GetNick());
for (CChan* pChan : Chans) {
if (pChan->HasPerm(CChan::Op) && User.ChannelMatches(pChan->GetName())) {
const CNick* pNick = pChan->FindNick(Nick.GetNick());
if (pNick && !pNick->HasPerm(CChan::Op)) {
PutIRC("MODE " + Chan.GetName() + " +o " + Nick.GetNick());
PutIRC("MODE " + pChan->GetName() + " +o " + Nick.GetNick());
}
}
}
+22 -22
View File
@@ -40,8 +40,8 @@ public:
const CString& GetHostmask() const { return m_sHostmask; }
bool ChannelMatches(const CString& sChan) const {
for (set<CString>::const_iterator it = m_ssChans.begin(); it != m_ssChans.end(); ++it) {
if (sChan.AsLower().WildCmp(*it, CString::CaseInsensitive)) {
for (const CString& s : m_ssChans) {
if (sChan.AsLower().WildCmp(s, CString::CaseInsensitive)) {
return true;
}
}
@@ -56,12 +56,12 @@ public:
CString GetChannels() const {
CString sRet;
for (set<CString>::const_iterator it = m_ssChans.begin(); it != m_ssChans.end(); ++it) {
for (const CString& sChan : m_ssChans) {
if (!sRet.empty()) {
sRet += " ";
}
sRet += *it;
sRet += sChan;
}
return sRet;
@@ -71,8 +71,8 @@ public:
VCString vsChans;
sChans.Split(" ", vsChans);
for (unsigned int a = 0; a < vsChans.size(); a++) {
m_ssChans.erase(vsChans[a].AsLower());
for (const CString& sChan : vsChans) {
m_ssChans.erase(sChan.AsLower());
}
}
@@ -80,20 +80,20 @@ public:
VCString vsChans;
sChans.Split(" ", vsChans);
for (unsigned int a = 0; a < vsChans.size(); a++) {
m_ssChans.insert(vsChans[a].AsLower());
for (const CString& sChan : vsChans) {
m_ssChans.insert(sChan.AsLower());
}
}
CString ToString() const {
CString sChans;
for (set<CString>::const_iterator it = m_ssChans.begin(); it != m_ssChans.end(); ++it) {
for (const CString& sChan : m_ssChans) {
if (!sChans.empty()) {
sChans += " ";
}
sChans += *it;
sChans += sChan;
}
return m_sUsername + "\t" + m_sHostmask + "\t" + sChans;
@@ -130,10 +130,10 @@ public:
VCString vsChans;
sArgs.Split(" ", vsChans, false);
for (VCString::const_iterator it = vsChans.begin(); it != vsChans.end(); ++it) {
for (const CString& sChan : vsChans) {
CString sName = "Args";
sName += CString(a);
AddUser(sName, "*", *it);
AddUser(sName, "*", sChan);
}
// Load the saved users
@@ -152,8 +152,8 @@ public:
}
virtual ~CAutoVoiceMod() {
for (map<CString, CAutoVoiceUser*>::iterator it = m_msUsers.begin(); it != m_msUsers.end(); ++it) {
delete it->second;
for (const auto& it : m_msUsers) {
delete it.second;
}
m_msUsers.clear();
@@ -162,9 +162,9 @@ public:
void OnJoin(const CNick& Nick, CChan& Channel) override {
// If we have ops in this chan
if (Channel.HasPerm(CChan::Op) || Channel.HasPerm(CChan::HalfOp)) {
for (map<CString, CAutoVoiceUser*>::iterator it = m_msUsers.begin(); it != m_msUsers.end(); ++it) {
for (const auto& it : m_msUsers) {
// and the nick who joined is a valid user
if (it->second->HostMatches(Nick.GetHostMask()) && it->second->ChannelMatches(Channel.GetName())) {
if (it.second->HostMatches(Nick.GetHostMask()) && it.second->ChannelMatches(Channel.GetName())) {
PutIRC("MODE " + Channel.GetName() + " +v " + Nick.GetNick());
break;
}
@@ -210,11 +210,11 @@ public:
Table.AddColumn("Hostmask");
Table.AddColumn("Channels");
for (map<CString, CAutoVoiceUser*>::iterator it = m_msUsers.begin(); it != m_msUsers.end(); ++it) {
for (const auto& it : m_msUsers) {
Table.AddRow();
Table.SetCell("User", it->second->GetUsername());
Table.SetCell("Hostmask", it->second->GetHostmask());
Table.SetCell("Channels", it->second->GetChannels());
Table.SetCell("User", it.second->GetUsername());
Table.SetCell("Hostmask", it.second->GetHostmask());
Table.SetCell("Channels", it.second->GetChannels());
}
PutModule(Table);
@@ -271,8 +271,8 @@ public:
}
CAutoVoiceUser* FindUserByHost(const CString& sHostmask, const CString& sChannel = "") {
for (map<CString, CAutoVoiceUser*>::iterator it = m_msUsers.begin(); it != m_msUsers.end(); ++it) {
CAutoVoiceUser* pUser = it->second;
for (const auto& it : m_msUsers) {
CAutoVoiceUser* pUser = it.second;
if (pUser->HostMatches(sHostmask) && (sChannel.empty() || pUser->ChannelMatches(sChannel))) {
return pUser;
+4 -6
View File
@@ -43,10 +43,9 @@ public:
}
void OnQuit(const CNick& Nick, const CString& sMessage, const vector<CChan*>& vChans) override {
vector<CChan*>::const_iterator it;
CString sMsg = Nick.GetNickMask() + " quit with message: [" + sMessage + "]";
for (it = vChans.begin(); it != vChans.end(); ++it) {
AddBuffer(**it, sMsg);
for (CChan* pChan : vChans) {
AddBuffer(*pChan, sMsg);
}
}
@@ -59,10 +58,9 @@ public:
}
void OnNick(const CNick& OldNick, const CString& sNewNick, const vector<CChan*>& vChans) override {
vector<CChan*>::const_iterator it;
CString sMsg = OldNick.GetNickMask() + " is now known as " + sNewNick;
for (it = vChans.begin(); it != vChans.end(); ++it) {
AddBuffer(**it, sMsg);
for (CChan* pChan : vChans) {
AddBuffer(*pChan, sMsg);
}
}
+16 -17
View File
@@ -41,24 +41,23 @@ public:
bool OnBoot() override {
const vector<CListener*>& vListeners = CZNC::Get().GetListeners();
vector<CListener*>::const_iterator it;
// We need the SSL_VERIFY_PEER flag on all listeners, or else
// the client doesn't send a ssl cert
for (it = vListeners.begin(); it != vListeners.end(); ++it)
(*it)->GetRealListener()->SetRequireClientCertFlags(SSL_VERIFY_PEER);
for (CListener* pListener : vListeners)
pListener->GetRealListener()->SetRequireClientCertFlags(SSL_VERIFY_PEER);
for (MCString::const_iterator it1 = BeginNV(); it1 != EndNV(); ++it1) {
for (MCString::const_iterator it = BeginNV(); it != EndNV(); ++it) {
VCString vsKeys;
if (CZNC::Get().FindUser(it1->first) == nullptr) {
DEBUG("Unknown user in saved data [" + it1->first + "]");
if (CZNC::Get().FindUser(it->first) == nullptr) {
DEBUG("Unknown user in saved data [" + it->first + "]");
continue;
}
it1->second.Split(" ", vsKeys, false);
for (VCString::const_iterator it2 = vsKeys.begin(); it2 != vsKeys.end(); ++it2) {
m_PubKeys[it1->first].insert(it2->AsLower());
it->second.Split(" ", vsKeys, false);
for (const CString& sKey : vsKeys) {
m_PubKeys[it->first].insert(sKey.AsLower());
}
}
@@ -77,14 +76,14 @@ public:
bool Save() {
ClearNV(false);
for (MSCString::const_iterator it = m_PubKeys.begin(); it != m_PubKeys.end(); ++it) {
for (const auto& it : m_PubKeys) {
CString sVal;
for (SCString::const_iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2) {
sVal += *it2 + " ";
for (const CString& sKey : it.second) {
sVal += sKey + " ";
}
if (!sVal.empty())
SetNV(it->first, sVal, false);
SetNV(it.first, sVal, false);
}
return SaveRegistry();
@@ -177,10 +176,10 @@ public:
}
unsigned int id = 1;
for (SCString::const_iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2) {
for (const CString& sKey : it->second) {
Table.AddRow();
Table.SetCell("Id", CString(id++));
Table.SetCell("Key", *it2);
Table.SetCell("Key", sKey);
}
if (PutModule(Table) == 0) {
@@ -244,9 +243,9 @@ public:
if (sPageName == "index") {
MSCString::const_iterator it = m_PubKeys.find(pUser->GetUserName());
if (it != m_PubKeys.end()) {
for (SCString::const_iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2) {
for (const CString& sKey : it->second) {
CTemplate& row = Tmpl.AddRow("KeyLoop");
row["Key"] = *it2;
row["Key"] = sKey;
}
}
+19 -21
View File
@@ -292,11 +292,10 @@ class CAdminMod : public CModule {
const VCString& vsHosts = CZNC::Get().GetBindHosts();
if (!GetUser()->IsAdmin() && !vsHosts.empty()) {
VCString::const_iterator it;
bool bFound = false;
for (it = vsHosts.begin(); it != vsHosts.end(); ++it) {
if (sValue.Equals(*it)) {
for (const CString& sHost : vsHosts) {
if (sValue.Equals(sHost)) {
bFound = true;
break;
}
@@ -569,8 +568,8 @@ class CAdminMod : public CModule {
VCString::const_iterator it;
bool bFound = false;
for (it = vsHosts.begin(); it != vsHosts.end(); ++it) {
if (sValue.Equals(*it)) {
for (const CString& sHost : vsHosts) {
if (sValue.Equals(sHost)) {
bFound = true;
break;
}
@@ -825,18 +824,18 @@ class CAdminMod : public CModule {
Table.AddColumn("Ident");
Table.AddColumn("BindHost");
for (map<CString, CUser*>::const_iterator it = msUsers.begin(); it != msUsers.end(); ++it) {
for (const auto& it : msUsers) {
Table.AddRow();
Table.SetCell("Username", it->first);
Table.SetCell("Realname", it->second->GetRealName());
if (!it->second->IsAdmin())
Table.SetCell("Username", it.first);
Table.SetCell("Realname", it.second->GetRealName());
if (!it.second->IsAdmin())
Table.SetCell("IsAdmin", "No");
else
Table.SetCell("IsAdmin", "Yes");
Table.SetCell("Nick", it->second->GetNick());
Table.SetCell("AltNick", it->second->GetAltNick());
Table.SetCell("Ident", it->second->GetIdent());
Table.SetCell("BindHost", it->second->GetBindHost());
Table.SetCell("Nick", it.second->GetNick());
Table.SetCell("AltNick", it.second->GetAltNick());
Table.SetCell("Ident", it.second->GetIdent());
Table.SetCell("BindHost", it.second->GetBindHost());
}
PutModule(Table);
@@ -1044,8 +1043,7 @@ class CAdminMod : public CModule {
Table.AddColumn("IRC User");
Table.AddColumn("Channels");
for (unsigned int a = 0; a < vNetworks.size(); a++) {
CIRCNetwork* pNetwork = vNetworks[a];
for (const CIRCNetwork* pNetwork : vNetworks) {
Table.AddRow();
Table.SetCell("Network", pNetwork->GetName());
if (pNetwork->IsIRCConnected()) {
@@ -1189,10 +1187,10 @@ class CAdminMod : public CModule {
CTable Table;
Table.AddColumn("Request");
Table.AddColumn("Reply");
for (MCString::const_iterator it = msCTCPReplies.begin(); it != msCTCPReplies.end(); ++it) {
for (const auto& it : msCTCPReplies) {
Table.AddRow();
Table.SetCell("Request", it->first);
Table.SetCell("Reply", it->second);
Table.SetCell("Request", it.first);
Table.SetCell("Reply", it.second);
}
if (Table.empty()) {
@@ -1384,10 +1382,10 @@ class CAdminMod : public CModule {
Table.AddColumn("Name");
Table.AddColumn("Arguments");
for (unsigned int b = 0; b < Modules.size(); b++) {
for (const CModule* pMod : Modules) {
Table.AddRow();
Table.SetCell("Name", Modules[b]->GetModName());
Table.SetCell("Arguments", Modules[b]->GetArgs());
Table.SetCell("Name", pMod->GetModName());
Table.SetCell("Arguments", pMod->GetArgs());
}
PutModule(Table);
+6 -4
View File
@@ -20,8 +20,8 @@ class CFailToBanMod : public CModule {
public:
MODCONSTRUCTOR(CFailToBanMod) {
AddHelpCommand();
AddCommand("Timeout", static_cast<CModCommand::ModCmdFunc>(&CFailToBanMod::OnTimeoutCommand), "(<minutes>)", "The number of minutes IPs are blocked after a failed login.");
AddCommand("Attempts", static_cast<CModCommand::ModCmdFunc>(&CFailToBanMod::OnAttemptsCommand), "(<count>)", "The number of allowed failed login attempts.");
AddCommand("Timeout", static_cast<CModCommand::ModCmdFunc>(&CFailToBanMod::OnTimeoutCommand), "[minutes]", "The number of minutes IPs are blocked after a failed login.");
AddCommand("Attempts", static_cast<CModCommand::ModCmdFunc>(&CFailToBanMod::OnAttemptsCommand), "[count]", "The number of allowed failed login attempts.");
AddCommand("Ban", static_cast<CModCommand::ModCmdFunc>(&CFailToBanMod::OnBanCommand), "<hosts>", "Ban the specified hosts.");
AddCommand("Unban", static_cast<CModCommand::ModCmdFunc>(&CFailToBanMod::OnUnbanCommand), "<hosts>", "Unban the specified hosts.");
AddCommand("List", static_cast<CModCommand::ModCmdFunc>(&CFailToBanMod::OnListCommand), "", "List banned hosts.");
@@ -71,9 +71,10 @@ public:
if (!sArg.empty()) {
unsigned int uTimeout = sArg.ToUInt();
if (uTimeout == 0) {
PutModule("Usage: Timeout (<minutes>)");
PutModule("Usage: Timeout [minutes]");
} else {
m_Cache.SetTTL(uTimeout * 60 * 1000);
SetArgs(CString(m_Cache.GetTTL() / 60 / 1000) + " " + CString(m_uiAllowedFailed));
PutModule("Timeout: " + CString(uTimeout) + " min");
}
} else {
@@ -87,9 +88,10 @@ public:
if (!sArg.empty()) {
unsigned int uiAttempts = sArg.ToUInt();
if (uiAttempts == 0) {
PutModule("Usage: Attempts (<count>)");
PutModule("Usage: Attempts [count]");
} else {
m_uiAllowedFailed = uiAttempts;
SetArgs(CString(m_Cache.GetTTL() / 60 / 1000) + " " + CString(m_uiAllowedFailed));
PutModule("Attempts: " + CString(uiAttempts));
}
} else {
+4 -4
View File
@@ -349,8 +349,8 @@ void CLogMod::OnKick(const CNick& OpNick, const CString& sKickedNick, CChan& Cha
void CLogMod::OnQuit(const CNick& Nick, const CString& sMessage, const vector<CChan*>& vChans)
{
for (std::vector<CChan*>::const_iterator pChan = vChans.begin(); pChan != vChans.end(); ++pChan)
PutLog("*** Quits: " + Nick.GetNick() + " (" + Nick.GetIdent() + "@" + Nick.GetHost() + ") (" + sMessage + ")", **pChan);
for (CChan* pChan : vChans)
PutLog("*** Quits: " + Nick.GetNick() + " (" + Nick.GetIdent() + "@" + Nick.GetHost() + ") (" + sMessage + ")", *pChan);
}
void CLogMod::OnJoin(const CNick& Nick, CChan& Channel)
@@ -365,8 +365,8 @@ void CLogMod::OnPart(const CNick& Nick, CChan& Channel, const CString& sMessage)
void CLogMod::OnNick(const CNick& OldNick, const CString& sNewNick, const vector<CChan*>& vChans)
{
for (std::vector<CChan*>::const_iterator pChan = vChans.begin(); pChan != vChans.end(); ++pChan)
PutLog("*** " + OldNick.GetNick() + " is now known as " + sNewNick, **pChan);
for (CChan* pChan : vChans)
PutLog("*** " + OldNick.GetNick() + " is now known as " + sNewNick, *pChan);
}
CModule::EModRet CLogMod::OnTopic(CNick& Nick, CChan& Channel, CString& sTopic)
+3 -4
View File
@@ -41,15 +41,14 @@ public:
//Handle ISON
if (sLine.Token(0).Equals("ison")) {
VCString vsNicks;
VCString::const_iterator it;
// Get the list of nicks which are being asked for
sLine.Token(1, true).TrimLeft_n(":").Split(" ", vsNicks, false);
CString sBNCNicks;
for (it = vsNicks.begin(); it != vsNicks.end(); ++it) {
if (IsOnlineModNick(*it)) {
sBNCNicks += " " + *it;
for (const CString& sNick : vsNicks) {
if (IsOnlineModNick(sNick)) {
sBNCNicks += " " + sNick;
}
}
// Remove the leading space
+13 -13
View File
@@ -51,14 +51,14 @@ class CPerform : public CModule {
Table.AddColumn("Perform");
Table.AddColumn("Expanded");
for (VCString::const_iterator it = m_vPerform.begin(); it != m_vPerform.end(); ++it, index++) {
for (const CString& sPerf : m_vPerform) {
Table.AddRow();
Table.SetCell("Id", CString(index));
Table.SetCell("Perform", *it);
Table.SetCell("Id", CString(index++));
Table.SetCell("Perform", sPerf);
CString sExpanded = ExpandString(*it);
CString sExpanded = ExpandString(sPerf);
if (sExpanded != *it) {
if (sExpanded != sPerf) {
Table.SetCell("Expanded", sExpanded);
}
}
@@ -128,8 +128,8 @@ public:
}
void OnIRCConnected() override {
for (VCString::const_iterator it = m_vPerform.begin(); it != m_vPerform.end(); ++it) {
PutIRC(ExpandString(*it));
for (const CString& sPerf : m_vPerform) {
PutIRC(ExpandString(sPerf));
}
}
@@ -146,15 +146,15 @@ public:
WebSock.GetRawParam("perform", true).Split("\n", vsPerf, false);
m_vPerform.clear();
for (VCString::const_iterator it = vsPerf.begin(); it != vsPerf.end(); ++it)
m_vPerform.push_back(ParsePerform(*it));
for (const CString& sPerf : vsPerf)
m_vPerform.push_back(ParsePerform(sPerf));
Save();
}
for (VCString::const_iterator it = m_vPerform.begin(); it != m_vPerform.end(); ++it) {
for (const CString& sPerf : m_vPerform) {
CTemplate& Row = Tmpl.AddRow("PerformLoop");
Row["Perform"] = *it;
Row["Perform"] = sPerf;
}
return true;
@@ -164,8 +164,8 @@ private:
void Save() {
CString sBuffer = "";
for (VCString::const_iterator it = m_vPerform.begin(); it != m_vPerform.end(); ++it) {
sBuffer += *it + "\n";
for (const CString& sPerf : m_vPerform) {
sBuffer += sPerf + "\n";
}
SetNV("Perform", sBuffer);
}
+3 -3
View File
@@ -111,9 +111,9 @@ public:
VCString vsMechanisms;
sMechanisms.Split(" ", vsMechanisms);
for (VCString::const_iterator it = vsMechanisms.begin(); it != vsMechanisms.end(); ++it) {
if (!SupportsMechanism(*it)) {
PutModule("Unsupported mechanism: " + *it);
for (const CString& sMechanism : vsMechanisms) {
if (!SupportsMechanism(sMechanism)) {
PutModule("Unsupported mechanism: " + sMechanism);
return;
}
}
+4 -12
View File
@@ -249,14 +249,10 @@ public:
if (DecryptBuffer(GetPath(sArgs), sFile, sName))
{
VCString vsLines;
VCString::iterator it;
sFile.Split("\n", vsLines);
for (it = vsLines.begin(); it != vsLines.end(); ++it) {
CString sLine(*it);
sLine.Trim();
PutModule("[" + sLine + "]");
for (const CString& sLine : vsLines) {
PutModule("[" + sLine.Trim_n() + "]");
}
}
PutModule("//!-- EOF " + sArgs);
@@ -287,14 +283,10 @@ public:
if (DecryptBuffer(GetPath(sBuffer), sFile, sName))
{
VCString vsLines;
VCString::iterator it;
sFile.Split("\n", vsLines);
for (it = vsLines.begin(); it != vsLines.end(); ++it) {
CString sLine(*it);
sLine.Trim();
PutUser(sLine);
for (const CString& sLine : vsLines) {
PutUser(sLine.Trim_n());
}
}
PutUser(":***!znc@znc.in PRIVMSG " + sBuffer + " :Playback Complete.");
+6 -6
View File
@@ -107,15 +107,15 @@ public:
}
const map<CString,CUser*>& msUsers = CZNC::Get().GetUserMap();
for (map<CString,CUser*>::const_iterator it = msUsers.begin(); it != msUsers.end(); ++it) {
for (const auto& it : msUsers) {
CTemplate& l = Tmpl.AddRow("UserLoop");
l["Username"] = (*it->second).GetUserName();
l["Username"] = it.second->GetUserName();
vector<CIRCNetwork*> vNetworks = (*it->second).GetNetworks();
for (vector<CIRCNetwork*>::const_iterator it2 = vNetworks.begin(); it2 != vNetworks.end(); ++it2) {
vector<CIRCNetwork*> vNetworks = it.second->GetNetworks();
for (const CIRCNetwork* pNetwork : vNetworks) {
CTemplate& NetworkLoop = l.AddRow("NetworkLoop");
NetworkLoop["Username"] = (*it->second).GetUserName();
NetworkLoop["Network"] = (*it2)->GetName();
NetworkLoop["Username"] = it.second->GetUserName();
NetworkLoop["Network"] = pNetwork->GetName();
}
}
+5 -6
View File
@@ -135,8 +135,8 @@ public:
bool bSubmitted = (WebSock.GetParam("submitted").ToInt() != 0);
const vector<CChan*>& Channels = GetNetwork()->GetChans();
for (unsigned int c = 0; c < Channels.size(); c++) {
const CString sChan = Channels[c]->GetName();
for (CChan* pChan : Channels) {
const CString sChan = pChan->GetName();
bool bStick = FindNV(sChan) != EndNV();
if(bSubmitted) {
@@ -198,12 +198,11 @@ static void RunTimer(CModule * pModule, CFPTimer *pTimer)
bool CStickyChan::OnLoad(const CString& sArgs, CString& sMessage)
{
VCString vsChans;
VCString::iterator it;
sArgs.Split(",", vsChans, false);
for (it = vsChans.begin(); it != vsChans.end(); ++it) {
CString sChan = it->Token(0);
CString sKey = it->Token(1, true);
for (const CString& s : vsChans) {
CString sChan = s.Token(0);
CString sKey = s.Token(1, true);
SetNV(sChan, sKey);
}
+82 -108
View File
@@ -143,9 +143,8 @@ public:
if (!bShareIRCPorts) {
// Make all existing listeners IRC-only
const vector<CListener*>& vListeners = CZNC::Get().GetListeners();
vector<CListener*>::const_iterator it;
for (it = vListeners.begin(); it != vListeners.end(); ++it) {
(*it)->SetAcceptType(CListener::ACCEPT_IRC);
for (CListener* pListener : vListeners) {
pListener->SetAcceptType(CListener::ACCEPT_IRC);
}
}
@@ -197,20 +196,18 @@ public:
}
VCString vsArgs;
unsigned int a = 0;
WebSock.GetRawParam("allowedips").Split("\n", vsArgs);
if (vsArgs.size()) {
for (a = 0; a < vsArgs.size(); a++) {
pNewUser->AddAllowedHost(vsArgs[a].Trim_n());
for (const CString& sHost : vsArgs) {
pNewUser->AddAllowedHost(sHost.Trim_n());
}
} else {
pNewUser->AddAllowedHost("*");
}
WebSock.GetRawParam("ctcpreplies").Split("\n", vsArgs);
for (a = 0; a < vsArgs.size(); a++) {
CString sReply = vsArgs[a].TrimRight_n("\r");
for (const CString& sReply : vsArgs) {
pNewUser->AddCTCPReply(sReply.Token(0).Trim_n(), sReply.Token(1, true).Trim_n());
}
@@ -236,15 +233,14 @@ public:
const VCString& vsHosts = CZNC::Get().GetBindHosts();
if (!spSession->IsAdmin() && !vsHosts.empty()) {
VCString::const_iterator it;
bool bFound = false;
bool bFoundDCC = false;
for (it = vsHosts.begin(); it != vsHosts.end(); ++it) {
if (sArg.Equals(*it)) {
for (const CString& sHost : vsHosts) {
if (sArg.Equals(sHost)) {
bFound = true;
}
if (sArg2.Equals(*it)) {
if (sArg2.Equals(sHost)) {
bFoundDCC = true;
}
}
@@ -330,8 +326,8 @@ public:
// disallow unload webadmin from itself
if (CModInfo::UserModule == GetType() && pUser == CZNC::Get().FindUser(WebSock.GetUser())) {
bool bLoadedWebadmin = false;
for (a = 0; a < vsArgs.size(); ++a) {
CString sModName = vsArgs[a].TrimRight_n("\r");
for (const CString& s : vsArgs) {
CString sModName = s.TrimRight_n("\r");
if (sModName == GetModName()) {
bLoadedWebadmin = true;
break;
@@ -342,9 +338,9 @@ public:
}
}
for (a = 0; a < vsArgs.size(); a++) {
for (const CString& s : vsArgs) {
CString sModRet;
CString sModName = vsArgs[a].TrimRight_n("\r");
CString sModName = s.TrimRight_n("\r");
CString sModLoadError;
if (!sModName.empty()) {
@@ -367,9 +363,9 @@ public:
} else if (pUser) {
CModules& Modules = pUser->GetModules();
for (a = 0; a < Modules.size(); a++) {
CString sModName = Modules[a]->GetModName();
CString sArgs = Modules[a]->GetArgs();
for (const CModule* pMod : Modules) {
CString sModName = pMod->GetModName();
CString sArgs = pMod->GetArgs();
CString sModRet;
CString sModLoadError;
@@ -777,8 +773,7 @@ public:
set<CModInfo> ssNetworkMods;
CZNC::Get().GetModules().GetAvailableMods(ssNetworkMods, CModInfo::NetworkModule);
for (set<CModInfo>::iterator it = ssNetworkMods.begin(); it != ssNetworkMods.end(); ++it) {
const CModInfo& Info = *it;
for (const CModInfo& Info : ssNetworkMods) {
CTemplate& l = Tmpl.AddRow("ModuleLoop");
l["Name"] = Info.GetName();
@@ -818,8 +813,7 @@ public:
}
} else {
bool bFoundBindHost = false;
for (unsigned int b = 0; b < vsBindHosts.size(); b++) {
const CString& sBindHost = vsBindHosts[b];
for (const CString& sBindHost : vsBindHosts) {
CTemplate& l = Tmpl.AddRow("BindHostLoop");
l["BindHost"] = sBindHost;
@@ -869,14 +863,13 @@ public:
breadNet["Text"] = "Edit Network [" + pNetwork->GetName() + "]";
const vector<CServer*>& vServers = pNetwork->GetServers();
for (unsigned int a = 0; a < vServers.size(); a++) {
for (const CServer* pServer : vServers) {
CTemplate& l = Tmpl.AddRow("ServerLoop");
l["Server"] = vServers[a]->GetString();
l["Server"] = pServer->GetString();
}
const vector<CChan*>& Channels = pNetwork->GetChans();
for (unsigned int c = 0; c < Channels.size(); c++) {
CChan* pChan = Channels[c];
for (const CChan* pChan : Channels) {
CTemplate& l = Tmpl.AddRow("ChannelLoop");
l["Network"] = pNetwork->GetName();
@@ -996,11 +989,10 @@ public:
CString sHost = WebSock.GetParam("bindhost");
const VCString& vsHosts = CZNC::Get().GetBindHosts();
if (!spSession->IsAdmin() && !vsHosts.empty()) {
VCString::const_iterator it;
bool bFound = false;
for (it = vsHosts.begin(); it != vsHosts.end(); ++it) {
if (sHost.Equals(*it)) {
for (const CString& s : vsHosts) {
if (sHost.Equals(s)) {
bFound = true;
break;
}
@@ -1044,8 +1036,8 @@ public:
pNetwork->DelServers();
WebSock.GetRawParam("servers").Split("\n", vsArgs);
for (unsigned int a = 0; a < vsArgs.size(); a++) {
pNetwork->AddServer(vsArgs[a].Trim_n());
for (const CString& sServer : vsArgs) {
pNetwork->AddServer(sServer.Trim_n());
}
WebSock.GetRawParam("fingerprints").Split("\n", vsArgs);
@@ -1055,8 +1047,7 @@ public:
}
WebSock.GetParamValues("channel", vsArgs);
for (unsigned int a = 0; a < vsArgs.size(); a++) {
const CString& sChan = vsArgs[a];
for (const CString& sChan : vsArgs) {
CChan *pChan = pNetwork->FindChan(sChan.TrimRight_n("\r"));
if (pChan) {
pChan->SetInConfig(WebSock.GetParam("save_" + sChan).ToBool());
@@ -1066,9 +1057,9 @@ public:
set<CString> ssArgs;
WebSock.GetParamValues("loadmod", ssArgs);
if (spSession->IsAdmin() || !pUser->DenyLoadMod()) {
for (set<CString>::iterator it = ssArgs.begin(); it != ssArgs.end(); ++it) {
for (const CString& s : ssArgs) {
CString sModRet;
CString sModName = (*it).TrimRight_n("\r");
CString sModName = s.TrimRight_n("\r");
CString sModLoadError;
if (!sModName.empty()) {
@@ -1097,16 +1088,14 @@ public:
const CModules& vCurMods = pNetwork->GetModules();
set<CString> ssUnloadMods;
for (unsigned int a = 0; a < vCurMods.size(); a++) {
CModule* pCurMod = vCurMods[a];
for (const CModule* pCurMod : vCurMods) {
if (ssArgs.find(pCurMod->GetModName()) == ssArgs.end() && pCurMod->GetModName() != GetModName()) {
ssUnloadMods.insert(pCurMod->GetModName());
}
}
for (set<CString>::iterator it2 = ssUnloadMods.begin(); it2 != ssUnloadMods.end(); ++it2) {
pNetwork->GetModules().UnloadModule(*it2);
for (const CString& sMod : ssUnloadMods) {
pNetwork->GetModules().UnloadModule(sMod);
}
CTemplate TmplMod;
@@ -1227,28 +1216,28 @@ public:
Tmpl["MaxQueryBuffers"] = CString(pUser->MaxQueryBuffers());
const set<CString>& ssAllowedHosts = pUser->GetAllowedHosts();
for (set<CString>::const_iterator it = ssAllowedHosts.begin(); it != ssAllowedHosts.end(); ++it) {
for (const CString& sHost : ssAllowedHosts) {
CTemplate& l = Tmpl.AddRow("AllowedHostLoop");
l["Host"] = *it;
l["Host"] = sHost;
}
const vector<CIRCNetwork*>& vNetworks = pUser->GetNetworks();
for (unsigned int a = 0; a < vNetworks.size(); a++) {
for (const CIRCNetwork* pNetwork : vNetworks) {
CTemplate& l = Tmpl.AddRow("NetworkLoop");
l["Name"] = vNetworks[a]->GetName();
l["Name"] = pNetwork->GetName();
l["Username"] = pUser->GetUserName();
l["Clients"] = CString(vNetworks[a]->GetClients().size());
l["IRCNick"] = vNetworks[a]->GetIRCNick().GetNick();
CServer* pServer = vNetworks[a]->GetCurrentServer();
l["Clients"] = CString(pNetwork->GetClients().size());
l["IRCNick"] = pNetwork->GetIRCNick().GetNick();
CServer* pServer = pNetwork->GetCurrentServer();
if (pServer) {
l["Server"] = pServer->GetName() + ":" + (pServer->IsSSL() ? "+" : "") + CString(pServer->GetPort());
}
}
const MCString& msCTCPReplies = pUser->GetCTCPReplies();
for (MCString::const_iterator it2 = msCTCPReplies.begin(); it2 != msCTCPReplies.end(); ++it2) {
for (const auto& it : msCTCPReplies) {
CTemplate& l = Tmpl.AddRow("CTCPLoop");
l["CTCP"] = it2->first + " " + it2->second;
l["CTCP"] = it.first + " " + it.second;
}
} else {
Tmpl["Action"] = "adduser";
@@ -1257,9 +1246,9 @@ public:
}
SCString ssTimezones = CUtils::GetTimezones();
for (SCString::iterator i = ssTimezones.begin(); i != ssTimezones.end(); ++i) {
for (const CString& sTZ : ssTimezones) {
CTemplate& l = Tmpl.AddRow("TZLoop");
l["TZ"] = *i;
l["TZ"] = sTZ;
}
#ifdef HAVE_ICU
@@ -1297,8 +1286,7 @@ public:
} else {
bool bFoundBindHost = false;
bool bFoundDCCBindHost = false;
for (unsigned int b = 0; b < vsBindHosts.size(); b++) {
const CString& sBindHost = vsBindHosts[b];
for (const CString& sBindHost : vsBindHosts) {
CTemplate& l = Tmpl.AddRow("BindHostLoop");
CTemplate& k = Tmpl.AddRow("DCCBindHostLoop");
@@ -1335,8 +1323,7 @@ public:
vector<CString> vDirs;
WebSock.GetAvailSkins(vDirs);
for (unsigned int d = 0; d < vDirs.size(); d++) {
const CString& SubDir = vDirs[d];
for (const CString& SubDir : vDirs) {
CTemplate& l = Tmpl.AddRow("SkinLoop");
l["Name"] = SubDir;
@@ -1348,8 +1335,7 @@ public:
set<CModInfo> ssUserMods;
CZNC::Get().GetModules().GetAvailableMods(ssUserMods);
for (set<CModInfo>::iterator it = ssUserMods.begin(); it != ssUserMods.end(); ++it) {
const CModInfo& Info = *it;
for (const CModInfo& Info : ssUserMods) {
CTemplate& l = Tmpl.AddRow("ModuleLoop");
l["Name"] = Info.GetName();
@@ -1364,8 +1350,7 @@ public:
// Check if module is loaded by all or some networks
const vector<CIRCNetwork*>& userNetworks = pUser->GetNetworks();
unsigned int networksWithRenderedModuleCount = 0;
for (unsigned int networkIndex = 0; networkIndex < userNetworks.size(); ++networkIndex) {
const CIRCNetwork* pCurrentNetwork = userNetworks[networkIndex];
for (const CIRCNetwork* pCurrentNetwork : userNetworks) {
const CModules& networkModules = pCurrentNetwork->GetModules();
if (networkModules.FindModule(Info.GetName())) {
networksWithRenderedModuleCount++;
@@ -1523,17 +1508,15 @@ public:
Tmpl["Title"] = "Manage Users";
Tmpl["Action"] = "listusers";
unsigned int a = 0;
for (map<CString,CUser*>::const_iterator it = msUsers.begin(); it != msUsers.end(); ++it, a++) {
for (const auto& it : msUsers) {
CTemplate& l = Tmpl.AddRow("UserLoop");
CUser& User = *it->second;
CUser* pUser = it.second;
l["Username"] = User.GetUserName();
l["Clients"] = CString(User.GetAllClients().size());
l["Networks"] = CString(User.GetNetworks().size());
l["Username"] = pUser->GetUserName();
l["Clients"] = CString(pUser->GetAllClients().size());
l["Networks"] = CString(pUser->GetNetworks().size());
if (&User == spSession->GetUser()) {
if (pUser == spSession->GetUser()) {
l["IsSelf"] = "true";
}
}
@@ -1550,12 +1533,11 @@ public:
size_t uiNetworks = 0, uiAttached = 0, uiClients = 0, uiServers = 0;
for (map<CString,CUser*>::const_iterator it = msUsers.begin(); it != msUsers.end(); ++it) {
CUser& User = *it->second;
vector<CIRCNetwork*> vNetworks = User.GetNetworks();
for (const auto& it : msUsers) {
CUser* pUser = it.second;
vector<CIRCNetwork*> vNetworks = pUser->GetNetworks();
for (vector<CIRCNetwork*>::const_iterator it2 = vNetworks.begin(); it2 != vNetworks.end(); ++it2) {
CIRCNetwork *pNetwork = *it2;
for (const CIRCNetwork* pNetwork : vNetworks) {
uiNetworks++;
if (pNetwork->IsIRCConnected()) {
@@ -1569,7 +1551,7 @@ public:
uiClients += pNetwork->GetClients().size();
}
uiClients += User.GetUserClients().size();
uiClients += pUser->GetUserClients().size();
}
Tmpl["TotalNetworks"] = CString(uiNetworks);
@@ -1579,15 +1561,14 @@ public:
CZNC::TrafficStatsPair Users, ZNC, Total;
CZNC::TrafficStatsMap traffic = CZNC::Get().GetTrafficStats(Users, ZNC, Total);
CZNC::TrafficStatsMap::const_iterator it;
for (it = traffic.begin(); it != traffic.end(); ++it) {
for (const auto& it : traffic) {
CTemplate& l = Tmpl.AddRow("TrafficLoop");
l["Username"] = it->first;
l["In"] = CString::ToByteStr(it->second.first);
l["Out"] = CString::ToByteStr(it->second.second);
l["Total"] = CString::ToByteStr(it->second.first + it->second.second);
l["Username"] = it.first;
l["In"] = CString::ToByteStr(it.second.first);
l["Out"] = CString::ToByteStr(it.second.second);
l["Total"] = CString::ToByteStr(it.second.first + it.second.second);
}
Tmpl["UserIn"] = CString::ToByteStr(Users.first);
@@ -1712,20 +1693,19 @@ public:
Tmpl["HideVersion"] = CString(CZNC::Get().GetHideVersion());
const VCString& vsBindHosts = CZNC::Get().GetBindHosts();
for (unsigned int a = 0; a < vsBindHosts.size(); a++) {
for (const CString& sHost : vsBindHosts) {
CTemplate& l = Tmpl.AddRow("BindHostLoop");
l["BindHost"] = vsBindHosts[a];
l["BindHost"] = sHost;
}
const VCString& vsMotd = CZNC::Get().GetMotd();
for (unsigned int b = 0; b < vsMotd.size(); b++) {
for (const CString& sMotd : vsMotd) {
CTemplate& l = Tmpl.AddRow("MOTDLoop");
l["Line"] = vsMotd[b];
l["Line"] = sMotd;
}
const vector<CListener*>& vpListeners = CZNC::Get().GetListeners();
for (unsigned int c = 0; c < vpListeners.size(); c++) {
CListener* pListener = vpListeners[c];
for (const CListener* pListener : vpListeners) {
CTemplate& l = Tmpl.AddRow("ListenLoop");
l["Port"] = CString(pListener->GetPort());
@@ -1768,8 +1748,7 @@ public:
vector<CString> vDirs;
WebSock.GetAvailSkins(vDirs);
for (unsigned int d = 0; d < vDirs.size(); d++) {
const CString& SubDir = vDirs[d];
for (const CString& SubDir : vDirs) {
CTemplate& l = Tmpl.AddRow("SkinLoop");
l["Name"] = SubDir;
@@ -1781,8 +1760,7 @@ public:
set<CModInfo> ssGlobalMods;
CZNC::Get().GetModules().GetAvailableMods(ssGlobalMods, CModInfo::GlobalModule);
for (set<CModInfo>::iterator it = ssGlobalMods.begin(); it != ssGlobalMods.end(); ++it) {
const CModInfo& Info = *it;
for (const CModInfo& Info : ssGlobalMods) {
CTemplate& l = Tmpl.AddRow("ModuleLoop");
CModule *pModule = CZNC::Get().GetModules().FindModule(Info.GetName());
@@ -1805,20 +1783,19 @@ public:
unsigned int networksWithRenderedModuleCount = 0;
unsigned int networksCount = 0;
const map<CString,CUser*>& allUsers = CZNC::Get().GetUserMap();
for (map<CString,CUser*>::const_iterator usersIt = allUsers.begin(); usersIt != allUsers.end(); ++usersIt) {
const CUser& User = *usersIt->second;
for (const auto& it : allUsers) {
const CUser* pUser = it.second;
// Count users which has loaded a render module
const CModules& userModules = User.GetModules();
const CModules& userModules = pUser->GetModules();
if (userModules.FindModule(Info.GetName())) {
usersWithRenderedModuleCount++;
}
// Count networks which has loaded a render module
const vector<CIRCNetwork*>& userNetworks = User.GetNetworks();
const vector<CIRCNetwork*>& userNetworks = pUser->GetNetworks();
networksCount += userNetworks.size();
for (unsigned int networkIndex = 0; networkIndex < userNetworks.size(); ++networkIndex)
for (const CIRCNetwork* pCurrentNetwork : userNetworks)
{
const CIRCNetwork *pCurrentNetwork = userNetworks[networkIndex];
if (pCurrentNetwork->GetModules().FindModule(Info.GetName())) {
networksWithRenderedModuleCount++;
}
@@ -1849,16 +1826,15 @@ public:
WebSock.GetRawParam("motd").Split("\n", vsArgs);
CZNC::Get().ClearMotd();
unsigned int a = 0;
for (a = 0; a < vsArgs.size(); a++) {
CZNC::Get().AddMotd(vsArgs[a].TrimRight_n());
for (const CString& sMotd : vsArgs) {
CZNC::Get().AddMotd(sMotd.TrimRight_n());
}
WebSock.GetRawParam("bindhosts").Split("\n", vsArgs);
CZNC::Get().ClearBindHosts();
for (a = 0; a < vsArgs.size(); a++) {
CZNC::Get().AddBindHost(vsArgs[a].Trim_n());
for (const CString& sHost : vsArgs) {
CZNC::Get().AddBindHost(sHost.Trim_n());
}
CZNC::Get().SetSkinName(WebSock.GetParam("skin"));
@@ -1866,9 +1842,9 @@ public:
set<CString> ssArgs;
WebSock.GetParamValues("loadmod", ssArgs);
for (set<CString>::iterator it = ssArgs.begin(); it != ssArgs.end(); ++it) {
for (const CString& s : ssArgs) {
CString sModRet;
CString sModName = (*it).TrimRight_n("\r");
CString sModName = s.TrimRight_n("\r");
CString sModLoadError;
if (!sModName.empty()) {
@@ -1895,17 +1871,15 @@ public:
const CModules& vCurMods = CZNC::Get().GetModules();
set<CString> ssUnloadMods;
for (a = 0; a < vCurMods.size(); a++) {
CModule* pCurMod = vCurMods[a];
for (const CModule* pCurMod : vCurMods) {
if (ssArgs.find(pCurMod->GetModName()) == ssArgs.end() &&
(CModInfo::GlobalModule != GetType() || pCurMod->GetModName() != GetModName())) {
ssUnloadMods.insert(pCurMod->GetModName());
}
}
for (set<CString>::iterator it2 = ssUnloadMods.begin(); it2 != ssUnloadMods.end(); ++it2) {
CZNC::Get().GetModules().UnloadModule(*it2);
for (const CString& sMod : ssUnloadMods) {
CZNC::Get().GetModules().UnloadModule(sMod);
}
if (!CZNC::Get().WriteConfig()) {