mirror of
https://github.com/znc/znc.git
synced 2026-07-04 17:01:23 +02:00
Merge branch 'master' of github.com:znc/znc
This commit is contained in:
+19
-22
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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.");
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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()) {
|
||||
|
||||
Reference in New Issue
Block a user