summaryrefslogtreecommitdiff
path: root/nickserv.c
diff options
context:
space:
mode:
authorcertus certus@31f1291d-b8d6-0310-a050-a5561fc1590b <certus certus@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2004-04-08 19:48:21 +0000
committercertus certus@31f1291d-b8d6-0310-a050-a5561fc1590b <certus certus@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2004-04-08 19:48:21 +0000
commita9c609678f1de663b0f662daa43afed499fcd289 (patch)
treee8ce8d06efb867a802e8d6ee0f29bad34d461cc5 /nickserv.c
parent0197854015f920b67deec7dbb8e6bcc5bb1e7d87 (diff)
BUILD : 1.7.0 (36) BUGS : NOTES : 1. Added "is a services root administrator" to /ns info. 2. Added option for SOs and above to hide their services access status in /ns info.
git-svn-id: svn://svn.anope.org/anope/trunk@36 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@26 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'nickserv.c')
-rw-r--r--nickserv.c36
1 files changed, 32 insertions, 4 deletions
diff --git a/nickserv.c b/nickserv.c
index 0890494ac..c5311f349 100644
--- a/nickserv.c
+++ b/nickserv.c
@@ -2995,6 +2995,10 @@ static int do_set_hide(User * u, NickCore * nc, char *param)
flag = NI_HIDE_MASK;
onmsg = NICK_SET_HIDE_MASK_ON;
offmsg = NICK_SET_HIDE_MASK_OFF;
+ } else if (stricmp(param, "STATUS") == 0) {
+ flag = NI_HIDE_STATUS;
+ onmsg = NICK_SET_HIDE_STATUS_ON;
+ offmsg = NICK_SET_HIDE_STATUS_OFF;
} else if (stricmp(param, "QUIT") == 0) {
flag = NI_HIDE_QUIT;
onmsg = NICK_SET_HIDE_QUIT_ON;
@@ -3243,10 +3247,34 @@ static int do_info(User * u)
notice_lang(s_NickServ, u, NICK_INFO_REALNAME, na->nick,
na->last_realname);
- if (nick_is_services_admin(na->nc)) /* This will also include the services root(s) */
- notice_lang(s_NickServ, u, NICK_INFO_SERVICES_ADMIN, na->nick);
- else if (nick_is_services_oper(na->nc))
- notice_lang(s_NickServ, u, NICK_INFO_SERVICES_OPER, na->nick);
+ if ((nick_identified(u) && (na->nc == u->na->nc)) || is_servadmin) {
+
+ if (nick_is_services_root(na->nc))
+ notice_lang(s_NickServ, u, NICK_INFO_SERVICES_ROOT,
+ na->nick);
+ else if (nick_is_services_admin(na->nc))
+ notice_lang(s_NickServ, u, NICK_INFO_SERVICES_ADMIN,
+ na->nick);
+ else if (nick_is_services_oper(na->nc))
+ notice_lang(s_NickServ, u, NICK_INFO_SERVICES_OPER,
+ na->nick);
+
+ } else {
+
+ if (nick_is_services_root(na->nc)
+ && !(na->nc->flags & NI_HIDE_STATUS))
+ notice_lang(s_NickServ, u, NICK_INFO_SERVICES_ROOT,
+ na->nick);
+ else if (nick_is_services_admin(na->nc)
+ && !(na->nc->flags & NI_HIDE_STATUS))
+ notice_lang(s_NickServ, u, NICK_INFO_SERVICES_ADMIN,
+ na->nick);
+ else if (nick_is_services_oper(na->nc)
+ && !(na->nc->flags & NI_HIDE_STATUS))
+ notice_lang(s_NickServ, u, NICK_INFO_SERVICES_OPER,
+ na->nick);
+
+ }
if (nick_online) {