]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/nickserv.c
found out from Kyle what b flag is.
[irc/evilnet/x3.git] / src / nickserv.c
index 8dc1c4a00383db274e97b691e33f19abee69f134..4794e953708bbf6a0a385af64c84d32f179ca06a 100644 (file)
@@ -110,7 +110,7 @@ DEFINE_LIST(handle_info_list, struct handle_info*);
 #define NICKSERV_MIN_PARMS(N) do { \
   if (argc < N) { \
     reply("MSG_MISSING_PARAMS", argv[0]); \
-    svccmd_send_help(user, nickserv, cmd); \
+    svccmd_send_help_brief(user, nickserv, cmd); \
     return 0; \
   } } while (0)
 
@@ -134,7 +134,7 @@ static const struct message_entry msgtab[] = {
     { "NSMSG_HANDLE_TOLONG", "The account name %s is too long. Account names must be %lu charactors or less."},
     { "NSMSG_PASSWORD_SHORT", "Your password must be at least %lu characters long." },
     { "NSMSG_PASSWORD_ACCOUNT", "Your password may not be the same as your account name." },
-    { "NSMSG_PASSWORD_DICTIONARY", "Your password should not be the word \"password\", or any other dictionary word." },
+    { "NSMSG_PASSWORD_DICTIONARY", "Your password is too simple. You must choose a password that is not just a word or name." },
     { "NSMSG_PASSWORD_READABLE", "Your password must have at least %lu digit(s), %lu capital letter(s), and %lu lower-case letter(s)." },
     { "NSMSG_PARTIAL_REGISTER", "Account has been registered to you; nick was already registered to someone else." },
     { "NSMSG_OREGISTER_VICTIM", "%s has registered a new account for you (named %s)." },
@@ -157,7 +157,7 @@ static const struct message_entry msgtab[] = {
     { "NSMSG_HANDLE_ACTIVATED", "Your account is now activated (with the password you entered when you registered).  You are now authenticated to your account." },
     { "NSMSG_PASSWORD_CHANGED", "You have successfully changed your password to what you requested with the $bresetpass$b command." },
     { "NSMSG_EMAIL_PROHIBITED", "%s may not be used as an email address: %s" },
-    { "NSMSG_EMAIL_OVERUSED", "There are already the maximum number of accounts associated with that email address." },
+    { "NSMSG_EMAIL_OVERUSED", "That email address already has an account. Use RESETPASS if you forgot your password." },
     { "NSMSG_EMAIL_SAME", "That is the email address already there; no need to change it." },
     { "NSMSG_EMAIL_CHANGED", "You have successfully changed your email address." },
     { "NSMSG_BAD_COOKIE_TYPE", "Your account had bad cookie type %d; sorry.  I am confused.  Please report this bug." },
@@ -274,7 +274,9 @@ static const struct message_entry msgtab[] = {
     { "NSMSG_RECLAIMED_SVSNICK", "Forcibly changed %s's nick." },
     { "NSMSG_RECLAIMED_KILL",  "Disconnected %s from the network." },
     { "NSMSG_CLONE_AUTH", "Warning: %s (%s@%s) authed to your account." },
-    { "NSMSG_SETTING_LIST", "$b$N account settings:$b" },
+    { "NSMSG_SETTING_LIST", "$b$N account settings$b" },
+    { "NSMSG_SETTING_LIST_HEADER", "----------------------------------------" },
+    { "NSMSG_SETTING_LIST_END",    "-------------End Of Settings------------" },
     { "NSMSG_INVALID_OPTION", "$b%s$b is an invalid account setting." },
     { "NSMSG_INVALID_ANNOUNCE", "$b%s$b is an invalid announcements value." },
     { "NSMSG_SET_INFO", "$bINFO:         $b%s" },
@@ -1319,6 +1321,9 @@ static NICKSERV_FUNC(cmd_register)
       SyncLog("REGISTER %s %s %s %s", hi->handle, syncpass, email_addr ? email_addr : "0", user->info);
     }
 
+    /* this wont work if email is required .. */
+    process_adduser_pending(user);
+
     return 1;
 }
 
@@ -1408,8 +1413,10 @@ static NICKSERV_FUNC(cmd_handleinfo)
             reply("NSMSG_HANDLEINFO_DNR", dnr->setter, dnr->reason);
         if (!oper_outranks(user, hi))
             return 1;
-    } else if (hi != user->handle_info)
+    } else if (hi != user->handle_info) {
+        reply("NSMSG_HANDLEINFO_END");
         return 1;
+    }
 
     if (nickserv_conf.email_enabled)
         reply("NSMSG_HANDLEINFO_EMAIL_ADDR", visible_email_addr(user, hi));
@@ -1719,7 +1726,7 @@ static NICKSERV_FUNC(cmd_auth)
         pw_arg = 1;
     } else {
         reply("MSG_MISSING_PARAMS", argv[0]);
-        svccmd_send_help(user, nickserv, cmd);
+        svccmd_send_help_brief(user, nickserv, cmd);
         return 0;
     }
     if (!hi) {
@@ -1787,6 +1794,8 @@ static NICKSERV_FUNC(cmd_auth)
     if (hi->passwd[0] != '$')
         cryptpass(passwd, hi->passwd);
     reply("NSMSG_AUTH_SUCCESS");
+
+    process_adduser_pending(user);
     argv[pw_arg] = "****";
     return 1;
 }
@@ -2050,6 +2059,8 @@ static NICKSERV_FUNC(cmd_cookie)
 
     nickserv_eat_cookie(hi->cookie);
 
+    process_adduser_pending(user);
+
     return 1;
 }
 
@@ -2283,16 +2294,19 @@ set_list(struct userNode *user, struct handle_info *hi, int override)
     option_func_t *opt;
     unsigned int i;
     char *set_display[] = {
-        "INFO", "WIDTH", "TABLEWIDTH", "COLOR", "PRIVMSG", "STYLE",
-        "EMAIL", "ANNOUNCEMENTS", "MAXLOGINS", "LANGUAGE"
+        "INFO", "WIDTH", "TABLEWIDTH", "COLOR", "PRIVMSG", /* "STYLE", */
+        "EMAIL", "ANNOUNCEMENTS", "MAXLOGINS", "LANGUAGE",
+        "FAKEHOST", "TITLE", "EPITHET"
     };
 
     send_message(user, nickserv, "NSMSG_SETTING_LIST");
+    send_message(user, nickserv, "NSMSG_SETTING_LIST_HEADER");
 
     /* Do this so options are presented in a consistent order. */
     for (i = 0; i < ArrayLength(set_display); ++i)
        if ((opt = dict_find(nickserv_opt_dict, set_display[i], NULL)))
            opt(user, hi, override, 0, NULL);
+    send_message(user, nickserv, "NSMSG_SETTING_LIST_END");
 }
 
 static NICKSERV_FUNC(cmd_set)
@@ -2414,6 +2428,7 @@ static OPTION_FUNC(opt_privmsg)
     return 1;
 }
 
+/*
 static OPTION_FUNC(opt_style)
 {
     char *style;
@@ -2437,6 +2452,7 @@ static OPTION_FUNC(opt_style)
     send_message(user, nickserv, "NSMSG_SET_STYLE", style);
     return 1;
 }
+*/
 
 static OPTION_FUNC(opt_announcements)
 {
@@ -2603,13 +2619,15 @@ static OPTION_FUNC(opt_level)
 
 static OPTION_FUNC(opt_epithet)
 {
-    if (!override) {
-        send_message(user, nickserv, "MSG_SETTING_PRIVILEGED", argv[0]);
-        return 0;
-    }
-
     if ((argc > 1) && oper_has_access(user, nickserv, nickserv_conf.set_epithet_level, 0)) {
-        char *epithet = unsplit_string(argv+1, argc-1, NULL);
+        char *epithet;
+        if (!override) {
+            send_message(user, nickserv, "MSG_SETTING_PRIVILEGED", argv[0]);
+            return 0;
+        }
+
+        epithet = unsplit_string(argv+1, argc-1, NULL);
+
         if (hi->epithet)
             free(hi->epithet);
         if ((epithet[0] == '*') && !epithet[1])
@@ -2629,12 +2647,12 @@ static OPTION_FUNC(opt_title)
 {
     const char *title;
 
-    if (!override) {
-        send_message(user, nickserv, "MSG_SETTING_PRIVILEGED", argv[0]);
-        return 0;
-    }
-
     if ((argc > 1) && oper_has_access(user, nickserv, nickserv_conf.set_title_level, 0)) {
+        if (!override) {
+            send_message(user, nickserv, "MSG_SETTING_PRIVILEGED", argv[0]);
+            return 0;
+        }
+
         title = argv[1];
         if (strchr(title, '.')) {
             send_message(user, nickserv, "NSMSG_TITLE_INVALID");
@@ -2669,12 +2687,12 @@ static OPTION_FUNC(opt_fakehost)
 {
     const char *fake;
 
-    if (!override) {
-        send_message(user, nickserv, "MSG_SETTING_PRIVILEGED", argv[0]);
-        return 0;
-    }
-
     if ((argc > 1) && oper_has_access(user, nickserv, nickserv_conf.set_fakehost_level, 0)) {
+        if (!override) {
+            send_message(user, nickserv, "MSG_SETTING_PRIVILEGED", argv[0]);
+            return 0;
+        }
+
         fake = argv[1];
         if ((strlen(fake) > HOSTLEN) || (fake[0] == '.')) {
             send_message(user, nickserv, "NSMSG_FAKEHOST_INVALID", HOSTLEN);
@@ -3418,6 +3436,7 @@ nickserv_db_read_handle(const char *handle, dict_t obj)
     struct string_list *masks, *slist;
     struct handle_info *hi;
     struct userNode *authed_users;
+    struct userData *channels;
     unsigned long int id;
     unsigned int ii;
     dict_t subdb;
@@ -3431,10 +3450,13 @@ nickserv_db_read_handle(const char *handle, dict_t obj)
     }
     if ((hi = get_handle_info(handle))) {
         authed_users = hi->users;
+        channels = hi->channels;
         hi->users = NULL;
+        hi->channels = NULL;
         dict_remove(nickserv_handle_dict, hi->handle);
     } else {
         authed_users = NULL;
+        channels = NULL;
     }
     hi = register_handle(handle, str, id);
     if (authed_users) {
@@ -3444,6 +3466,7 @@ nickserv_db_read_handle(const char *handle, dict_t obj)
             authed_users = authed_users->next_authed;
         }
     }
+    hi->channels = channels;
     masks = database_get_data(obj, KEY_MASKS, RECDB_STRING_LIST);
     hi->masks = masks ? string_list_copy(masks) : alloc_string_list(1);
     str = database_get_data(obj, KEY_MAXLOGINS, RECDB_QSTRING);
@@ -4028,7 +4051,7 @@ init_nickserv(const char *nick)
     dict_insert(nickserv_opt_dict, "TABLEWIDTH", opt_tablewidth);
     dict_insert(nickserv_opt_dict, "COLOR", opt_color);
     dict_insert(nickserv_opt_dict, "PRIVMSG", opt_privmsg);
-    dict_insert(nickserv_opt_dict, "STYLE", opt_style);
+/*    dict_insert(nickserv_opt_dict, "STYLE", opt_style); */
     dict_insert(nickserv_opt_dict, "PASS", opt_password);
     dict_insert(nickserv_opt_dict, "PASSWORD", opt_password);
     dict_insert(nickserv_opt_dict, "FLAGS", opt_flags);