summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2009-11-11 07:20:44 +0000
committerAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2009-11-11 07:20:44 +0000
commit0264072b537e3059f56ac98f9719efd80836adb6 (patch)
tree36d8df4ca14e206c79f36ff27f29443dc9805c0e /src
parent0bd3141407c7701beed90b8e560a07126db64f25 (diff)
Made disabling chanserv levels *really* disable them so noone can use them (even founder), and have the ability to set it to 10000 for founders.
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2641 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r--src/channels.c2
-rw-r--r--src/chanserv.c24
-rw-r--r--src/core/cs_access.c2
3 files changed, 14 insertions, 14 deletions
diff --git a/src/channels.c b/src/channels.c
index b8f0e081d..57c9917e1 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -1771,7 +1771,7 @@ void chan_set_correct_modes(User * user, Channel * c, int give_modes)
*/
if (give_modes && (get_ignore(user->nick) == NULL)
&& (!user->nc || !user->nc->HasFlag(NI_AUTOOP))) {
- if (owner && (IsFounder(user, ci) || check_access(user, ci, CA_AUTOOWNER)))
+ if (owner && check_access(user, ci, CA_AUTOOWNER))
add_modes |= CUS_OWNER;
else if (admin && check_access(user, ci, CA_AUTOPROTECT))
add_modes |= CUS_PROTECT;
diff --git a/src/chanserv.c b/src/chanserv.c
index 491c60e48..e961921b1 100644
--- a/src/chanserv.c
+++ b/src/chanserv.c
@@ -29,14 +29,14 @@ static int def_levels[][2] = {
{ CA_NOJOIN, -2 },
{ CA_INVITE, 5 },
{ CA_AKICK, 10 },
- { CA_SET, ACCESS_INVALID },
- { CA_CLEAR, ACCESS_INVALID },
+ { CA_SET, ACCESS_FOUNDER },
+ { CA_CLEAR, ACCESS_FOUNDER },
{ CA_UNBAN, 5 },
{ CA_OPDEOP, 5 },
{ CA_ACCESS_LIST, 1 },
{ CA_ACCESS_CHANGE, 10 },
{ CA_MEMO, 10 },
- { CA_ASSIGN, ACCESS_INVALID },
+ { CA_ASSIGN, ACCESS_FOUNDER },
{ CA_BADWORDS, 10 },
{ CA_NOKICK, 1 },
{ CA_FANTASIA, 3 },
@@ -51,17 +51,17 @@ static int def_levels[][2] = {
{ CA_HALFOPME, 4 },
{ CA_HALFOP, 5 },
{ CA_PROTECTME, 10 },
- { CA_PROTECT, ACCESS_INVALID },
+ { CA_PROTECT, ACCESS_FOUNDER },
{ CA_KICKME, 5 },
{ CA_KICK, 5 },
- { CA_SIGNKICK, ACCESS_INVALID },
+ { CA_SIGNKICK, ACCESS_FOUNDER },
{ CA_BANME, 5 },
{ CA_BAN, 5 },
- { CA_TOPIC, ACCESS_INVALID },
- { CA_INFO, ACCESS_INVALID },
- { CA_AUTOOWNER, ACCESS_INVALID },
- { CA_OWNER, ACCESS_INVALID },
- { CA_OWNERME, ACCESS_INVALID },
+ { CA_TOPIC, ACCESS_FOUNDER },
+ { CA_INFO, ACCESS_FOUNDER },
+ { CA_AUTOOWNER, ACCESS_FOUNDER },
+ { CA_OWNER, ACCESS_FOUNDER },
+ { CA_OWNERME, ACCESS_FOUNDER },
{ -1 }
};
@@ -1562,6 +1562,8 @@ int check_access(User * user, ChannelInfo * ci, int what)
if (level > 0)
ci->last_used = time(NULL);
+ if (limit == ACCESS_INVALID)
+ return 0;
if (what == ACCESS_FOUNDER)
return IsFounder(user, ci);
if (level >= ACCESS_FOUNDER)
@@ -1569,8 +1571,6 @@ int check_access(User * user, ChannelInfo * ci, int what)
/* Hacks to make flags work */
if (what == CA_AUTODEOP && (ci->HasFlag(CI_SECUREOPS)) && level == 0)
return 1;
- if (limit == ACCESS_INVALID)
- return 0;
if (what == CA_AUTODEOP || what == CA_NOJOIN)
return level <= ci->levels[what];
else
diff --git a/src/core/cs_access.c b/src/core/cs_access.c
index 83ea0f0f7..b8792bfca 100644
--- a/src/core/cs_access.c
+++ b/src/core/cs_access.c
@@ -202,7 +202,7 @@ class CommandCSAccess : public Command
notice_lang(s_ChanServ, u, CHAN_ACCESS_NICKS_ONLY);
return MOD_CONT;
}
- if (na->HasFlag(NS_FORBIDDEN));
+ else if (na->HasFlag(NS_FORBIDDEN))
{
notice_lang(s_ChanServ, u, NICK_X_FORBIDDEN, nick);
return MOD_CONT;