diff options
author | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2010-05-17 18:12:40 +0000 |
---|---|---|
committer | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2010-05-17 18:12:40 +0000 |
commit | 79c3a70ed75d29987b35d087ef739e17169ee57c (patch) | |
tree | c2dc067a79612a776773bdb02738666e1b526e47 /src | |
parent | f9c4baf8fc5b61f9dfce5d78d9d86c70ecd6beb8 (diff) |
Made is possible to change levels back to founder only and made founder only levels only apply to the real founder. Changed the defaults for things such as autoowner to ACCESS_QOP
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2965 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r-- | src/chanserv.c | 18 | ||||
-rw-r--r-- | src/core/cs_access.c | 15 |
2 files changed, 21 insertions, 12 deletions
diff --git a/src/chanserv.c b/src/chanserv.c index 4df46d1ef..2c60ec004 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -29,7 +29,7 @@ static int def_levels[][2] = { { CA_NOJOIN, -2 }, { CA_INVITE, 5 }, { CA_AKICK, 10 }, - { CA_SET, ACCESS_FOUNDER }, + { CA_SET, ACCESS_QOP }, { CA_CLEAR, ACCESS_FOUNDER }, { CA_UNBAN, 5 }, { CA_OPDEOP, 5 }, @@ -51,17 +51,17 @@ static int def_levels[][2] = { { CA_HALFOPME, 4 }, { CA_HALFOP, 5 }, { CA_PROTECTME, 10 }, - { CA_PROTECT, ACCESS_FOUNDER }, + { CA_PROTECT, ACCESS_QOP }, { CA_KICKME, 5 }, { CA_KICK, 5 }, { CA_SIGNKICK, ACCESS_FOUNDER }, { CA_BANME, 5 }, { CA_BAN, 5 }, { CA_TOPIC, ACCESS_FOUNDER }, - { CA_INFO, ACCESS_FOUNDER }, - { CA_AUTOOWNER, ACCESS_FOUNDER }, + { CA_INFO, ACCESS_QOP }, + { CA_AUTOOWNER, ACCESS_QOP }, { CA_OWNER, ACCESS_FOUNDER }, - { CA_OWNERME, ACCESS_FOUNDER }, + { CA_OWNERME, ACCESS_QOP }, { -1 } }; @@ -856,10 +856,10 @@ int check_access(User * user, ChannelInfo * ci, int what) if (limit == ACCESS_INVALID) return 0; - if (what == ACCESS_FOUNDER) - return IsFounder(user, ci); - if (level >= ACCESS_FOUNDER) - return (what == CA_AUTODEOP || what == CA_NOJOIN) ? 0 : 1; + if (limit > ACCESS_FOUNDER) + return 1; + if (limit == ACCESS_FOUNDER) + return (what == CA_AUTODEOP || what == CA_NOJOIN ? !IsRealFounder(user, ci) : IsRealFounder(user, ci)); /* Hacks to make flags work */ if (what == CA_AUTODEOP && (ci->HasFlag(CI_SECUREOPS)) && level == 0) return 1; diff --git a/src/core/cs_access.c b/src/core/cs_access.c index bc05695a2..3da39cf0d 100644 --- a/src/core/cs_access.c +++ b/src/core/cs_access.c @@ -456,12 +456,18 @@ class CommandCSLevels : public Command else if (cmd == "SET") { level = strtol(s, &error, 10); + if (!stricmp(s, "FOUNDER")) + { + level = ACCESS_FOUNDER; + *error = '\0'; + } + if (*error != '\0') { this->OnSyntaxError(u, "SET"); return MOD_CONT; } - if (level <= ACCESS_INVALID || level >= ACCESS_FOUNDER) { + if (level <= ACCESS_INVALID || level > ACCESS_FOUNDER) { notice_lang(Config.s_ChanServ, u, CHAN_LEVELS_RANGE, ACCESS_INVALID + 1, ACCESS_FOUNDER - 1); return MOD_CONT; @@ -473,8 +479,11 @@ class CommandCSLevels : public Command Alog() << Config.s_ChanServ << ": " << u->GetMask() << " set level " << levelinfo[i].name << " on channel " << ci->name << " to " << level; - notice_lang(Config.s_ChanServ, u, CHAN_LEVELS_CHANGED, - levelinfo[i].name, chan, level); + if (level == ACCESS_FOUNDER) + notice_lang(Config.s_ChanServ, u, CHAN_LEVELS_CHANGED_FOUNDER, levelinfo[i].name, ci->name.c_str()); + else + notice_lang(Config.s_ChanServ, u, CHAN_LEVELS_CHANGED, + levelinfo[i].name, ci->name.c_str(), level); return MOD_CONT; } } |