From 79c3a70ed75d29987b35d087ef739e17169ee57c Mon Sep 17 00:00:00 2001 From: Adam- Date: Mon, 17 May 2010 18:12:40 +0000 Subject: 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 --- src/chanserv.c | 18 +++++++++--------- src/core/cs_access.c | 15 ++++++++++++--- 2 files changed, 21 insertions(+), 12 deletions(-) (limited to 'src') 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; } } -- cgit