]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/nickserv.c
Fix bug discovered by Wharf in new style code (.users without login causes core)
[irc/evilnet/x3.git] / src / nickserv.c
index ade655da7eb09d114f4831de024d212911a50c1c..c7214e44d7323158c4adce56f59fd518ce08aed0 100644 (file)
@@ -72,6 +72,7 @@
 #define KEY_COOKIE_TIMEOUT "cookie_timeout"
 #define KEY_ACCOUNTS_PER_EMAIL "accounts_per_email"
 #define KEY_EMAIL_SEARCH_LEVEL "email_search_level"
+#define KEY_DEFAULT_STYLE "default_style"
 
 #define KEY_ID "id"
 #define KEY_PASSWD "passwd"
@@ -407,6 +408,7 @@ static struct {
     unsigned char hard_maxlogins;
     const char *auto_oper;
     const char *auto_admin;
+    char default_style;
 } nickserv_conf;
 
 /* We have 2^32 unique account IDs to use. */
@@ -718,6 +720,7 @@ is_registerable_nick(const char *nick)
     }
     return 1;
 }
+/*  this has been replaced with one in tools.c
 
 static int
 is_valid_email_addr(const char *email)
@@ -725,6 +728,8 @@ is_valid_email_addr(const char *email)
     return strchr(email, '@') != NULL;
 }
 
+*/ 
+
 static const char *
 visible_email_addr(struct userNode *user, struct handle_info *hi)
 {
@@ -1295,7 +1300,7 @@ static NICKSERV_FUNC(cmd_register)
         email_addr = argv[3];
 
         /* Check that the email address looks valid.. */
-        if (!is_valid_email_addr(email_addr)) {
+        if (!valid_email(email_addr)) {
             reply("NSMSG_BAD_EMAIL_ADDR");
             return 0;
         }
@@ -1394,7 +1399,7 @@ static NICKSERV_FUNC(cmd_oregister)
     }
 
     if (nickserv_conf.email_required) {
-        if (!is_valid_email_addr(argv[4])) {
+        if (!valid_email(argv[4])) {
             reply("NSMSG_BAD_EMAIL_ADDR");
             return 0;
         }
@@ -2405,7 +2410,7 @@ 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", */
+        "INFO", "WIDTH", "TABLEWIDTH", "COLOR", "PRIVMSG", "STYLE",
         "EMAIL", "ANNOUNCEMENTS", "AUTOHIDE", "MAXLOGINS", "LANGUAGE",
         "FAKEHOST", "TITLE", "EPITHET"
     };
@@ -2556,31 +2561,34 @@ static OPTION_FUNC(opt_autohide)
     return 1;
 }
 
-/*
 static OPTION_FUNC(opt_style)
 {
     char *style;
 
     if (argc > 1) {
-       if (!irccasecmp(argv[1], "Zoot"))
-           hi->userlist_style = HI_STYLE_ZOOT;
-       else if (!irccasecmp(argv[1], "def"))
-           hi->userlist_style = HI_STYLE_DEF;
-    }
+        if (!irccasecmp(argv[1], "Clean"))
+            hi->userlist_style = HI_STYLE_CLEAN;
+        else if (!irccasecmp(argv[1], "Advanced"))
+            hi->userlist_style = HI_STYLE_ADVANCED;
+        else  /* Default to normal */
+            hi->userlist_style = HI_STYLE_NORMAL;
+    } /* TODO: give error if unknow style is chosen */
 
     switch (hi->userlist_style) {
-    case HI_STYLE_DEF:
-       style = "def";
-       break;
-    case HI_STYLE_ZOOT:
-    default:
-       style = "Zoot";
+        case HI_STYLE_ADVANCED:
+            style = "Advanced";
+            break;
+        case HI_STYLE_CLEAN:
+            style = "Clean";
+            break;
+        case HI_STYLE_NORMAL:
+        default:
+        style = "Normal";
     }
 
     send_message(user, nickserv, "NSMSG_SET_STYLE", style);
     return 1;
 }
-*/
 
 static OPTION_FUNC(opt_announcements)
 {
@@ -2654,7 +2662,7 @@ static OPTION_FUNC(opt_email)
 {
     if (argc > 1) {
         const char *str;
-        if (!is_valid_email_addr(argv[1])) {
+        if (!valid_email(argv[1])) {
             send_message(user, nickserv, "NSMSG_BAD_EMAIL_ADDR");
             return 0;
         }
@@ -3661,7 +3669,7 @@ nickserv_db_read_handle(const char *handle, dict_t obj)
             hi->flags |= 1 << (handle_inverse_flags[(unsigned char)str[ii]] - 1);
     }
     str = database_get_data(obj, KEY_USERLIST_STYLE, RECDB_QSTRING);
-    hi->userlist_style = str ? str[0] : HI_STYLE_ZOOT;
+    hi->userlist_style = str ? str[0] : HI_DEFAULT_STYLE;
     str = database_get_data(obj, KEY_ANNOUNCEMENTS, RECDB_QSTRING);
     hi->announcements = str ? str[0] : '?';
     str = database_get_data(obj, KEY_SCREEN_WIDTH, RECDB_QSTRING);
@@ -3972,6 +3980,9 @@ nickserv_conf_read(void)
     str = database_get_data(conf_node, KEY_TITLEHOST_SUFFIX, RECDB_QSTRING);
     nickserv_conf.titlehost_suffix = str ? str : "example.net";
 
+    str = database_get_data(conf_node, KEY_DEFAULT_STYLE, RECDB_QSTRING);
+    nickserv_conf.default_style = str ? str[0] : HI_DEFAULT_STYLE;
+
     str = database_get_data(conf_node, KEY_AUTO_OPER, RECDB_QSTRING);
     nickserv_conf.auto_oper = str ? str : "";
 
@@ -4238,7 +4249,7 @@ init_nickserv(const char *nick)
     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, "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);