summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2010-05-17 18:12:40 +0000
committerAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2010-05-17 18:12:40 +0000
commit79c3a70ed75d29987b35d087ef739e17169ee57c (patch)
treec2dc067a79612a776773bdb02738666e1b526e47 /src
parentf9c4baf8fc5b61f9dfce5d78d9d86c70ecd6beb8 (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.c18
-rw-r--r--src/core/cs_access.c15
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;
}
}