Added concept of Admin to users

git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@526 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
prozacx
2005-09-24 04:29:11 +00:00
parent a03cbe95c6
commit ef1c8de55a
5 changed files with 64 additions and 11 deletions
+24
View File
@@ -445,6 +445,8 @@ bool CZNC::WriteNewConfig(const CString& sConfig) {
CUtils::PrintMessage("Now we need to setup a user...");
CUtils::PrintMessage("");
bool bFirstUser = true;
do {
vsLines.push_back("");
CString sNick;
@@ -454,6 +456,13 @@ bool CZNC::WriteNewConfig(const CString& sConfig) {
vsLines.push_back("<User " + sUser + ">");
sAnswer = CUtils::GetHashPass(); vsLines.push_back("\tPass = " + sAnswer + " -");
if (CUtils::GetBoolInput("Would you like this user to be an admin?", bFirstUser)) {
vsLines.push_back("\tAdmin = true");
} else {
vsLines.push_back("\tAdmin = false");
}
CUtils::GetInput("Nick", sNick, sUser); vsLines.push_back("\tNick = " + sNick);
CUtils::GetInput("Alt Nick", sAnswer, sNick + "_"); if (!sAnswer.empty()) { vsLines.push_back("\tAltNick = " + sAnswer); }
CUtils::GetInput("Ident", sAnswer, sNick); vsLines.push_back("\tIdent = " + sAnswer);
@@ -564,6 +573,7 @@ bool CZNC::WriteNewConfig(const CString& sConfig) {
vsLines.push_back("</User>");
CUtils::PrintMessage("");
bFirstUser = false;
} while (CUtils::GetBoolInput("Would you like to setup another user?", false));
// !User
@@ -842,6 +852,9 @@ bool CZNC::ParseConfig(const CString& sConfig) {
} else if (sName.CaseCmp("DenyLoadMod") == 0) {
pUser->SetDenyLoadMod((sValue.CaseCmp("TRUE") == 0));
continue;
} else if (sName.CaseCmp("Admin") == 0) {
pUser->SetAdmin((sValue.CaseCmp("TRUE") == 0));
continue;
} else if (sName.CaseCmp("StatusPrefix") == 0) {
if (!pUser->SetStatusPrefix(sValue)) {
CUtils::PrintError("Invalid StatusPrefix [" + sValue + "] Must be 1-5 chars, no spaces.");
@@ -1045,6 +1058,17 @@ bool CZNC::RemVHost(const CString& sHost) {
return true;
}
void CZNC::Broadcast(const CString& sMessage, CUser* pUser) {
for (map<CString,CUser*>::iterator a = m_msUsers.begin(); a != m_msUsers.end(); a++) {
if (a->second != pUser) {
CUser* m_pUser = a->second; // This is a semi-hack because MODULECALLCONT below expects the user to be stored in m_pUser
CString sMsg = sMessage;
MODULECALLCONT(OnBroadcast(sMsg));
a->second->PutStatusNotice("*** " + sMsg);
}
}
}
CString CZNC::FindModPath(const CString& sModule) const {
CString sModPath = GetCurPath() + "/modules/" + sModule;
sModPath += (sModule.find(".") == CString::npos) ? ".so" : "";