summaryrefslogtreecommitdiff
path: root/modules/commands/cs_access.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2011-09-04 21:04:37 -0400
committerAdam <Adam@anope.org>2011-09-10 02:06:31 -0400
commitdc5d1fa21c20000b77bf713585333c79121a8df0 (patch)
tree8661b0e4e8266c3fdf370d0bff0e5b7c900d9b24 /modules/commands/cs_access.cpp
parent563d158e49754a7226b4bbcc8fa0c7f45a559cba (diff)
Made ChanServ privileges configurable
Diffstat (limited to 'modules/commands/cs_access.cpp')
-rw-r--r--modules/commands/cs_access.cpp27
1 files changed, 14 insertions, 13 deletions
diff --git a/modules/commands/cs_access.cpp b/modules/commands/cs_access.cpp
index c5f8313f0..2821ba5c3 100644
--- a/modules/commands/cs_access.cpp
+++ b/modules/commands/cs_access.cpp
@@ -19,12 +19,12 @@ enum
ACCESS_FOUNDER = 10001
};
-static std::map<Anope::string, int16> defaultLevels;
+static std::map<Anope::string, int16, std::less<ci::string> > defaultLevels;
static void reset_levels(ChannelInfo *ci)
{
ci->ClearLevels();
- for (std::map<Anope::string, int16>::iterator it = defaultLevels.begin(), it_end = defaultLevels.end(); it != it_end; ++it)
+ for (std::map<Anope::string, int16, std::less<ci::string> >::iterator it = defaultLevels.begin(), it_end = defaultLevels.end(); it != it_end; ++it)
ci->SetLevel(it->first, it->second);
}
@@ -849,26 +849,27 @@ class CSAccess : public Module
void OnReload()
{
- std::vector<Privilege> &privs = PrivilegeManager::GetPrivileges();
- std::map<Anope::string, int16> tLevels;
+ defaultLevels.clear();
ConfigReader config;
- for (unsigned i = 0; i < privs.size(); ++i)
+ for (int i = 0; i < config.Enumerate("privilege"); ++i)
{
- Privilege &p = privs[i];
+ const Anope::string &pname = config.ReadValue("privilege", "name", "", i);
+
+ Privilege *p = PrivilegeManager::FindPrivilege(pname);
+ if (p == NULL)
+ continue;
- const Anope::string &value = config.ReadValue("chanserv", "level_" + p.name.lower(), "", 0);
+ const Anope::string &value = config.ReadValue("privilege", "level", "", i);
if (value.empty())
- throw ConfigException("The value for <chanserv:level_" + p.name.lower() + "> must not be empty!");
+ continue;
else if (value.equals_ci("founder"))
- tLevels[p.name] = ACCESS_FOUNDER;
+ defaultLevels[p->name] = ACCESS_FOUNDER;
else if (value.equals_ci("disabled"))
- tLevels[p.name] = ACCESS_INVALID;
+ defaultLevels[p->name] = ACCESS_INVALID;
else
- tLevels[p.name] = config.ReadInteger("chanserv", "level_" + p.name.lower(), 0, false);
+ defaultLevels[p->name] = config.ReadInteger("privilege", "level", i, false);
}
-
- defaultLevels = tLevels;
}
void OnCreateChan(ChannelInfo *ci)