diff options
| author | geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2005-04-07 17:45:03 +0000 |
|---|---|---|
| committer | geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2005-04-07 17:45:03 +0000 |
| commit | 4a051a7fe1367874d1dca2206ade5f6f1f7256d6 (patch) | |
| tree | 6f8fd1661d62d86ba1c49e259bbd3d1be2d61702 /src/nickserv.c | |
| parent | ce2c4d02c824552076bff61daee7824c46edc46d (diff) | |
BUILD : 1.7.8 (657) BUGS : 346 351 341 328 345 NOTES : Added channame to XOP/ACCESS/AKICK CLEAR, added checks to /hs off, fixed guest nick to take an unused nick, added SVN revision to win32 versions, fixed /ns alist to not accept invalid access levels, improved Config script, fixed responses for /ns glist/alist -- ty qa ;)
git-svn-id: svn://svn.anope.org/anope/trunk@657 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@505 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/nickserv.c')
| -rw-r--r-- | src/nickserv.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/src/nickserv.c b/src/nickserv.c index 54629c9d7..586362c9e 100644 --- a/src/nickserv.c +++ b/src/nickserv.c @@ -1761,8 +1761,11 @@ static void collide(NickAlias * na, int from_timeout) */ if (ircd->svsnick) { - snprintf(guestnick, sizeof(guestnick), "%s%d", NSGuestNickPrefix, - guestnum++); + /* We need to make sure the guestnick is free -- heinz */ + do { + snprintf(guestnick, sizeof(guestnick), "%s%d%d", + NSGuestNickPrefix, getrandom32(), getrandom32()); + } while (finduser(guestnick)); notice_lang(s_NickServ, na->u, FORCENICKCHANGE_CHANGING, guestnick); anope_cmd_svsnick(na->nick, guestnick, time(NULL)); @@ -3777,12 +3780,15 @@ static int do_glist(User * u) char *nick = strtok(NULL, " "); NickAlias *na, *na2; + int is_servadmin = is_services_admin(u); + int nick_ided = nick_identified(u); int i; - if ((nick ? (stricmp(nick, u->nick) ? !is_services_admin(u) - : !nick_identified(u)) - : !nick_identified(u))) { - notice_lang(s_NickServ, u, ACCESS_DENIED); + if ((nick ? (stricmp(nick, u->nick) ? !is_servadmin : !nick_ided) + : !nick_ided)) { + notice_lang(s_NickServ, u, + (nick_ided ? ACCESS_DENIED : + NICK_IDENTIFY_REQUIRED), s_NickServ); } else if ((!nick ? !(na = u->na) : !(na = findnick(nick)))) { notice_lang(s_NickServ, u, (!nick ? NICK_NOT_REGISTERED : NICK_X_NOT_REGISTERED), @@ -3879,11 +3885,14 @@ static int do_alist(User * u) } if (!nick_identified(u)) { - notice_lang(s_NickServ, u, ACCESS_DENIED); + notice_lang(s_NickServ, u, NICK_IDENTIFY_REQUIRED, s_NickServ); } else if (is_servadmin && nick && !na) { 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 (min_level <= ACCESS_INVALID || min_level >= ACCESS_FOUNDER) { + notice_lang(s_NickServ, u, CHAN_ACCESS_LEVEL_RANGE, + ACCESS_INVALID + 1, ACCESS_FOUNDER - 1); } else { int i, level; int chan_count = 0; |
