diff options
Diffstat (limited to 'src/nickserv.c')
-rw-r--r-- | src/nickserv.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/nickserv.c b/src/nickserv.c index 8e3974ef8..784efa341 100644 --- a/src/nickserv.c +++ b/src/nickserv.c @@ -2319,6 +2319,7 @@ static int do_confirm(User * u) static int do_group(User * u) { NickAlias *na, *target; + NickCore *nc; char *nick = strtok(NULL, " "); char *pass = strtok(NULL, " "); int i; @@ -2338,6 +2339,30 @@ static int do_group(User * u) return MOD_CONT; } + if (RestrictOperNicks) { + for (i = 0; i < RootNumber; i++) { + if (strstr(u->nick, ServicesRoots[i]) && !is_oper(u)) { + notice_lang(s_NickServ, u, NICK_CANNOT_BE_REGISTERED, + u->nick); + return MOD_CONT; + } + } + for (i = 0; i < servadmins.count && (nc = servadmins.list[i]); i++) { + if (strstr(u->nick, nc->display) && !is_oper(u)) { + notice_lang(s_NickServ, u, NICK_CANNOT_BE_REGISTERED, + u->nick); + return MOD_CONT; + } + } + for (i = 0; i < servopers.count && (nc = servopers.list[i]); i++) { + if (strstr(u->nick, nc->display) && !is_oper(u)) { + notice_lang(s_NickServ, u, NICK_CANNOT_BE_REGISTERED, + u->nick); + return MOD_CONT; + } + } + } + if (!nick || !pass) { syntax_error(s_NickServ, u, "GROUP", NICK_GROUP_SYNTAX); } else if (time(NULL) < u->lastnickreg + NSRegDelay) { |