diff options
author | ribosome ribosome@31f1291d-b8d6-0310-a050-a5561fc1590b <ribosome ribosome@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2005-03-28 00:25:26 +0000 |
---|---|---|
committer | ribosome ribosome@31f1291d-b8d6-0310-a050-a5561fc1590b <ribosome ribosome@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2005-03-28 00:25:26 +0000 |
commit | dca8847adc8d9592e1a5411b7ca090340556de72 (patch) | |
tree | 95a9605f920a539287f6662cc0556330b68c77ec /src | |
parent | baaef792830339ea84411a16f4f0a8ae9aa28796 (diff) |
BUILD : 1.7.8 (644) BUGS : 330 NOTES : Fixed bugs with nickserv suspend
git-svn-id: svn://svn.anope.org/anope/trunk@644 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@492 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r-- | src/nickserv.c | 36 | ||||
-rw-r--r-- | src/servers.c | 1 | ||||
-rw-r--r-- | src/users.c | 2 |
3 files changed, 28 insertions, 11 deletions
diff --git a/src/nickserv.c b/src/nickserv.c index a334d61db..db4c23840 100644 --- a/src/nickserv.c +++ b/src/nickserv.c @@ -140,7 +140,7 @@ void moduleAddNickServCmds(void) { c = createCommand("GETEMAIL", do_getemail, is_services_admin, -1,-1, -1,NICK_SERVADMIN_HELP_GETEMAIL, NICK_SERVADMIN_HELP_GETEMAIL); addCoreCommand(NICKSERV,c); c = createCommand("FORBID", do_forbid, is_services_admin, -1,-1, -1,NICK_SERVADMIN_HELP_FORBID, NICK_SERVADMIN_HELP_FORBID); addCoreCommand(NICKSERV,c); c = createCommand("SUSPEND", do_suspend, is_services_admin, -1,-1, -1,NICK_SERVADMIN_HELP_SUSPEND, NICK_SERVADMIN_HELP_SUSPEND); addCoreCommand(NICKSERV,c); - c = createCommand("UNSUSPEND",do_unsuspend,is_services_admin, -1,-1, -1,NICK_SERVADMIN_HELP_SUSPEND, NICK_SERVADMIN_HELP_SUSPEND); addCoreCommand(NICKSERV,c); + c = createCommand("UNSUSPEND",do_unsuspend,is_services_admin, -1,-1, -1,NICK_SERVADMIN_HELP_UNSUSPEND, NICK_SERVADMIN_HELP_UNSUSPEND); addCoreCommand(NICKSERV,c); } /* *INDENT-ON* */ /*************************************************************************/ @@ -1063,6 +1063,12 @@ int validate_user(User * u) return 0; } + if (na->nc->flags & NI_SUSPENDED) { + notice_lang(s_NickServ, u, NICK_X_SUSPENDED, u->nick); + collide(na, 0); + return 0; + } + on_access = is_on_access(u, na->nc); if (on_access) na->status |= NS_ON_ACCESS; @@ -2403,12 +2409,20 @@ static int do_group(User * u) alog("%s: %s@%s tried to use GROUP from FORBIDden nick %s", s_NickServ, u->username, u->host, u->nick); notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, u->nick); + } else if (u->na && (u->na->nc->flags & NI_SUSPENDED)) { + alog("%s: %s@%s tried to use GROUP from SUSPENDED nick %s", + s_NickServ, u->username, u->host, u->nick); + notice_lang(s_NickServ, u, NICK_X_SUSPENDED, u->nick); } else if (u->na && NSNoGroupChange) { notice_lang(s_NickServ, u, NICK_GROUP_CHANGE_DISABLED, s_NickServ); } else if (u->na && !nick_identified(u)) { notice_lang(s_NickServ, u, NICK_IDENTIFY_REQUIRED, s_NickServ); } else if (!(target = findnick(nick))) { notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, nick); + } else if (target && (target->nc->flags & NI_SUSPENDED)) { + alog("%s: %s@%s tried to use GROUP from SUSPENDED nick %s", + s_NickServ, u->username, u->host, u->nick); + notice_lang(s_NickServ, u, NICK_X_SUSPENDED, target->nick); } else if (target->status & NS_VERBOTEN) { notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, nick); } else if (u->na && target->nc == u->na->nc) { @@ -2545,7 +2559,7 @@ static int do_identify(User * u) } } else if (na->status & NS_VERBOTEN) { notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, na->nick); - } else if (na->status & NS_SUSPENDED) { + } else if (na->nc->flags & NI_SUSPENDED) { notice_lang(s_NickServ, u, NICK_X_SUSPENDED, na->nick); } else if (nick_identified(u)) { notice_lang(s_NickServ, u, NICK_ALREADY_IDENTIFIED); @@ -2851,7 +2865,7 @@ static int do_set(User * u) notice_lang(s_NickServ, u, NICK_NOT_REGISTERED); } else if (na->status & NS_VERBOTEN) { notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, na->nick); - } else if (na->status & NS_SUSPENDED) { + } else if (na->nc->flags & NI_SUSPENDED) { notice_lang(s_NickServ, u, NICK_X_SUSPENDED, na->nick); } else if (!is_servadmin && !nick_identified(u)) { notice_lang(s_NickServ, u, NICK_IDENTIFY_REQUIRED, s_NickServ); @@ -3291,7 +3305,7 @@ static int do_access(User * u) return MOD_CONT; } - if (na->status & NS_SUSPENDED) { + if (na->nc->flags & NI_SUSPENDED) { notice_lang(s_NickServ, u, NICK_X_SUSPENDED, na->nick); return MOD_CONT; } @@ -3319,7 +3333,7 @@ static int do_access(User * u) } else if (na->status & NS_VERBOTEN) { notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, na->nick); - } else if (na->status & NS_SUSPENDED) { + } else if (na->nc->flags & NI_SUSPENDED) { notice_lang(s_NickServ, u, NICK_X_SUSPENDED, na->nick); } else if (!nick_identified(u)) { @@ -3572,7 +3586,7 @@ static int do_info(User * u) notice_lang(s_NickServ, u, NICK_INFO_OPTIONS, *buf ? buf : getstring(u->na, NICK_INFO_OPT_NONE)); - if (na->status & NS_SUSPENDED) { + if (na->nc->flags & NI_SUSPENDED) { notice_lang(s_NickServ, u, NICK_INFO_SUSPENDED, na->last_quit); } @@ -3938,7 +3952,7 @@ static int do_recover(User * u) notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, nick); } else if (na->status & NS_VERBOTEN) { notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, na->nick); - } else if (na->status & NS_SUSPENDED) { + } else if (na->nc->flags & NI_SUSPENDED) { notice_lang(s_NickServ, u, NICK_X_SUSPENDED, na->nick); } else if (stricmp(nick, u->nick) == 0) { notice_lang(s_NickServ, u, NICK_NO_RECOVER_SELF); @@ -3984,7 +3998,7 @@ static int do_release(User * u) notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, nick); } else if (na->status & NS_VERBOTEN) { notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, na->nick); - } else if (na->status & NS_SUSPENDED) { + } else if (na->nc->flags & NI_SUSPENDED) { notice_lang(s_NickServ, u, NICK_X_SUSPENDED, na->nick); } else if (!(na->status & NS_KILL_HELD)) { notice_lang(s_NickServ, u, NICK_RELEASE_NOT_HELD, nick); @@ -4030,7 +4044,7 @@ static int do_ghost(User * u) notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, nick); } else if (na->status & NS_VERBOTEN) { notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, na->nick); - } else if (na->status & NS_SUSPENDED) { + } else if (na->nc->flags & NI_SUSPENDED) { notice_lang(s_NickServ, u, NICK_X_SUSPENDED, na->nick); } else if (stricmp(nick, u->nick) == 0) { notice_lang(s_NickServ, u, NICK_NO_GHOST_SELF); @@ -4340,7 +4354,7 @@ static int do_suspend(User * u) } if (na) { - na->status |= NS_SUSPENDED; + na->nc->flags |= NI_SUSPENDED; na->nc->flags |= NI_SECURE; na->status &= ~(NS_IDENTIFIED | NS_RECOGNIZED); na->nc->flags &= ~(NI_KILLPROTECT | NI_KILL_QUICK | NI_KILL_IMMED); @@ -4397,7 +4411,7 @@ static int do_unsuspend(User * u) } if (na) { - na->status &= ~NS_SUSPENDED; + na->nc->flags &= ~NI_SUSPENDED; if (WallForbid) anope_cmd_global(s_NickServ, "\2%s\2 used UNSUSPEND on \2%s\2", diff --git a/src/servers.c b/src/servers.c index e5579bca0..5c8e253f6 100644 --- a/src/servers.c +++ b/src/servers.c @@ -167,6 +167,7 @@ static void delete_server(Server * serv, const char *quitreason) unext = nextuser(); if (u->server == serv) { if ((na = u->na) && !(na->status & NS_VERBOTEN) + && (!(na->nc->flags & NI_SUSPENDED)) && (na->status & (NS_IDENTIFIED | NS_RECOGNIZED))) { na->last_seen = time(NULL); if (na->last_quit) diff --git a/src/users.c b/src/users.c index 784876728..af95c067c 100644 --- a/src/users.c +++ b/src/users.c @@ -821,6 +821,7 @@ void do_quit(const char *source, int ac, char **av) alog("debug: %s quits", source); } if ((na = user->na) && (!(na->status & NS_VERBOTEN)) + && (!(na->nc->flags & NI_SUSPENDED)) && (na->status & (NS_IDENTIFIED | NS_RECOGNIZED))) { na->last_seen = time(NULL); if (na->last_quit) @@ -856,6 +857,7 @@ void do_kill(char *nick, char *msg) alog("debug: %s killed", nick); } if ((na = user->na) && (!(na->status & NS_VERBOTEN)) + && (!(na->nc->flags & NI_SUSPENDED)) && (na->status & (NS_IDENTIFIED | NS_RECOGNIZED))) { na->last_seen = time(NULL); if (na->last_quit) |