]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/nickserv.c
an initial fix to the vsend error, now we just need to do the reg_auth_func bits...
[irc/evilnet/x3.git] / src / nickserv.c
index e03e9847703a51d6a38401f890788083088ebd4d..fe50e2ceb6d0877622b98df93b4b840156fab360 100644 (file)
@@ -288,6 +288,7 @@ static const struct message_entry msgtab[] = {
     { "NSMSG_SET_PRIVMSG", "$bPRIVMSG:      $b%s" },
     { "NSMSG_SET_STYLE", "$bSTYLE:        $b%s" },
     { "NSMSG_SET_ANNOUNCEMENTS", "$bANNOUNCEMENTS: $b%s" },
+    { "NSMSG_SET_AUTOHIDE", "$bAUTOHIDE: $b%s" },
     { "NSMSG_SET_PASSWORD", "$bPASSWORD:     $b%s" },
     { "NSMSG_SET_FLAGS", "$bFLAGS:        $b%s" },
     { "NSMSG_SET_EMAIL", "$bEMAIL:        $b%s" },
@@ -802,6 +803,8 @@ is_secure_password(const char *handle, const char *pass, struct userNode *user)
 {
     unsigned int i, len;
     unsigned int cnt_digits = 0, cnt_upper = 0, cnt_lower = 0;
+    int p;
+
     len = strlen(pass);
     if (len < nickserv_conf.password_min_length) {
         if (user)
@@ -813,8 +816,8 @@ is_secure_password(const char *handle, const char *pass, struct userNode *user)
             send_message(user, nickserv, "NSMSG_PASSWORD_ACCOUNT");
         return 0;
     }
-    dict_find(nickserv_conf.weak_password_dict, pass, &i);
-    if (i) {
+    dict_find(nickserv_conf.weak_password_dict, pass, &p);
+    if (p) {
         if (user)
             send_message(user, nickserv, "NSMSG_PASSWORD_DICTIONARY");
         return 0;
@@ -942,8 +945,12 @@ set_user_handle_info(struct userNode *user, struct handle_info *hi, int stamp)
     user->handle_info = hi;
     if (hi && !hi->users && !hi->opserv_level)
         HANDLE_CLEAR_FLAG(hi, HELPING);
-    for (n=0; n<auth_func_used; n++)
-        auth_func_list[n](user, old_info);
+
+    if (GetUserH(user->nick)) {
+        for (n=0; n<auth_func_used; n++)
+            auth_func_list[n](user, old_info);
+    }
+
     if (hi) {
         struct nick_info *ni;
 
@@ -953,6 +960,7 @@ set_user_handle_info(struct userNode *user, struct handle_info *hi, int stamp)
             for (other = hi->users; other; other = other->next_authed)
                 send_message(other, nickserv, "NSMSG_CLONE_AUTH", user->nick, user->ident, user->hostname);
         }
+
        user->next_authed = hi->users;
        hi->users = user;
        hi->lastseen = now;
@@ -1808,7 +1816,12 @@ static NICKSERV_FUNC(cmd_auth)
 
     reply("NSMSG_AUTH_SUCCESS");
 
-    if(!IsOper(user))
+    
+    /* Set +x if autohide is on */
+    if(HANDLE_FLAGGED(hi, AUTOHIDE))
+        irc_umode(user, "+x");
+
+    if(!IsOper(user)) /* If they arnt already opered.. */
     {
         /* Auto Oper users with Opserv access -Life4Christ 8-10-2005  */
         if( nickserv_conf.auto_admin[0] && hi->opserv_level >= opserv_conf_admin_level())
@@ -2323,7 +2336,7 @@ set_list(struct userNode *user, struct handle_info *hi, int override)
     unsigned int i;
     char *set_display[] = {
         "INFO", "WIDTH", "TABLEWIDTH", "COLOR", "PRIVMSG", /* "STYLE", */
-        "EMAIL", "ANNOUNCEMENTS", "MAXLOGINS", "LANGUAGE",
+        "EMAIL", "ANNOUNCEMENTS", "AUTOHIDE", "MAXLOGINS", "LANGUAGE",
         "FAKEHOST", "TITLE", "EPITHET"
     };
 
@@ -2456,6 +2469,23 @@ static OPTION_FUNC(opt_privmsg)
     return 1;
 }
 
+static OPTION_FUNC(opt_autohide)
+{
+    if (argc > 1) {
+       if (enabled_string(argv[1]))
+           HANDLE_SET_FLAG(hi, AUTOHIDE);
+        else if (disabled_string(argv[1]))
+           HANDLE_CLEAR_FLAG(hi, AUTOHIDE);
+       else {
+           send_message(user, nickserv, "MSG_INVALID_BINARY", argv[1]);
+           return 0;
+       }
+    }
+
+    send_message(user, nickserv, "NSMSG_SET_AUTOHIDE", user_find_message(user, HANDLE_FLAGGED(hi, AUTOHIDE) ? "MSG_ON" : "MSG_OFF"));
+    return 1;
+}
+
 /*
 static OPTION_FUNC(opt_style)
 {
@@ -4086,6 +4116,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, "AUTOHIDE", opt_autohide);
 /*    dict_insert(nickserv_opt_dict, "STYLE", opt_style); */
     dict_insert(nickserv_opt_dict, "PASS", opt_password);
     dict_insert(nickserv_opt_dict, "PASSWORD", opt_password);