Fix *controlpanel not checking whether the bindhost is in the whitelist

(cherry picked from commit e77edb409e)
This commit is contained in:
Richard Schwab
2014-03-17 14:32:31 +01:00
committed by Alexey Sokolov
parent b7e5525f70
commit 7366edfe14
+46
View File
@@ -244,6 +244,29 @@ class CAdminMod : public CModule {
}
else if (sVar == "bindhost") {
if(!pUser->DenySetBindHost() || m_pUser->IsAdmin()) {
if (sValue.Equals(m_pUser->GetBindHost())) {
PutModule("This bind host is already set!");
return;
}
const VCString& vsHosts = CZNC::Get().GetBindHosts();
if (!m_pUser->IsAdmin() && !vsHosts.empty()) {
VCString::const_iterator it;
bool bFound = false;
for (it = vsHosts.begin(); it != vsHosts.end(); ++it) {
if (sValue.Equals(*it)) {
bFound = true;
break;
}
}
if (!bFound) {
PutModule("You may not use this bind host. See /msg " + m_pUser->GetStatusPrefix() + "status ListBindHosts for a list");
return;
}
}
pUser->SetBindHost(sValue);
PutModule("BindHost = " + sValue);
} else {
@@ -465,6 +488,29 @@ class CAdminMod : public CModule {
PutModule("RealName = " + pNetwork->GetRealName());
} else if (sVar.Equals("bindhost")) {
if(!pUser->DenySetBindHost() || m_pUser->IsAdmin()) {
if (sValue.Equals(pNetwork->GetBindHost())) {
PutModule("This bind host is already set!");
return;
}
const VCString& vsHosts = CZNC::Get().GetBindHosts();
if (!m_pUser->IsAdmin() && !vsHosts.empty()) {
VCString::const_iterator it;
bool bFound = false;
for (it = vsHosts.begin(); it != vsHosts.end(); ++it) {
if (sValue.Equals(*it)) {
bFound = true;
break;
}
}
if (!bFound) {
PutModule("You may not use this bind host. See /msg " + m_pUser->GetStatusPrefix() + "status ListBindHosts for a list");
return;
}
}
pNetwork->SetBindHost(sValue);
PutModule("BindHost = " + sValue);
} else {