summaryrefslogtreecommitdiff
path: root/src/nickserv.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nickserv.c')
-rw-r--r--src/nickserv.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/nickserv.c b/src/nickserv.c
index 1ca4a90e7..932a1b82f 100644
--- a/src/nickserv.c
+++ b/src/nickserv.c
@@ -1930,12 +1930,13 @@ static int do_help(User * u)
static int do_register(User * u)
{
NickRequest *nr = NULL, *anr = NULL;
+ NickCore *nc = NULL;
int prefixlen = strlen(NSGuestNickPrefix);
int nicklen = strlen(u->nick);
char *pass = strtok(NULL, " ");
char *email = strtok(NULL, " ");
char passcode[11];
- int idx, min = 1, max = 62;
+ int idx, min = 1, max = 62, i = 0;
int chars[] =
{ ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
@@ -1976,6 +1977,27 @@ static int do_register(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 (!pass || (NSForceEmail && !email)) {
syntax_error(s_NickServ, u, "REGISTER",
NICK_REGISTER_SYNTAX_EMAIL);