diff options
| author | trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-10-06 03:31:37 +0000 |
|---|---|---|
| committer | trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-10-06 03:31:37 +0000 |
| commit | a2e4eeb6669b6b35954d3fbdaf6c814c719345b4 (patch) | |
| tree | 38bddce33efb6d919029a34b2156c62f5b8c2912 /src/nickserv.c | |
| parent | f150f55ef0e7d4a26d4879faacccd18d27b5b258 (diff) | |
BUILD : 1.7.5 (371) BUGS : 175? NOTES : Fixed some ircd protcol mistakes, clean up clear modes, also a patch form DrStein
git-svn-id: svn://svn.anope.org/anope/trunk@371 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@241 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/nickserv.c')
| -rw-r--r-- | src/nickserv.c | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/src/nickserv.c b/src/nickserv.c index b8fbe0642..f96268483 100644 --- a/src/nickserv.c +++ b/src/nickserv.c @@ -3337,6 +3337,7 @@ static int do_info(User * u) int need_comma = 0; int nick_online = 0; int show_hidden = 0; + time_t expt; /* Is the real owner of the nick we're looking up online? -TheShadow */ if (na->status & (NS_RECOGNIZED | NS_IDENTIFIED)) @@ -3464,8 +3465,17 @@ 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_NO_EXPIRE) + if (na->status & NS_NO_EXPIRE) { notice_lang(s_NickServ, u, NICK_INFO_NO_EXPIRE); + } else { + if (is_services_admin(u)) { + expt = na->last_seen + NSExpire; + tm = localtime(&expt); + strftime_lang(buf, sizeof(buf), na->u, + STRFTIME_DATE_TIME_FORMAT, tm); + notice_lang(s_NickServ, u, NICK_INFO_EXPIRE, buf); + } + } } if (!show_hidden @@ -3643,7 +3653,9 @@ static int do_glist(User * u) NickAlias *na, *na2; int i; - if ((nick ? !is_services_admin(u) : !nick_identified(u))) { + if ((nick ? (stricmp(nick, u->nick) ? !is_services_admin(u) + : !nick_identified(u)) + : !nick_identified(u))) { notice_lang(s_NickServ, u, ACCESS_DENIED); } else if ((!nick ? !(na = u->na) : !(na = findnick(nick)))) { notice_lang(s_NickServ, u, @@ -3652,15 +3664,25 @@ static int do_glist(User * u) } else if (na->status & NS_VERBOTEN) { notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, na->nick); } else { + time_t expt; + struct tm *tm; + char buf[BUFSIZE]; notice_lang(s_NickServ, u, nick ? NICK_GLIST_HEADER_X : NICK_GLIST_HEADER, na->nc->display); for (i = 0; i < na->nc->aliases.count; i++) { na2 = na->nc->aliases.list[i]; - if (na2->nc == na->nc) - notice_user(s_NickServ, u, " %c%s", + if (na2->nc == na->nc) { + expt = na2->last_seen + NSExpire; + tm = localtime(&expt); + strftime_lang(buf, sizeof(buf), na2->u, + STRFTIME_DATE_TIME_FORMAT, tm); + notice_lang(s_NickServ, u, + (is_services_admin(u) ? NICK_GLIST_REPLY_ADMIN + : NICK_GLIST_REPLY), ((na2->status & NS_NO_EXPIRE) ? '!' : ' '), - na2->nick); + na2->nick, buf); + } } notice_lang(s_NickServ, u, NICK_GLIST_FOOTER, na->nc->aliases.count); @@ -3935,13 +3957,13 @@ static int do_status(User * u) while ((nick = strtok(NULL, " ")) && (i++ < 16)) { if (!(u2 = finduser(nick))) - notice_user(s_NickServ, u, "STATUS %s 0", nick); + notice_lang(s_NickServ, u, NICK_STATUS_0, nick); else if (nick_identified(u2)) - notice_user(s_NickServ, u, "STATUS %s 3", nick); + notice_lang(s_NickServ, u, NICK_STATUS_3, nick); else if (nick_recognized(u2)) - notice_user(s_NickServ, u, "STATUS %s 2", nick); + notice_lang(s_NickServ, u, NICK_STATUS_2, nick); else - notice_user(s_NickServ, u, "STATUS %s 1", nick); + notice_lang(s_NickServ, u, NICK_STATUS_1, nick); } return MOD_CONT; } |
