]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - src/newconf.c
Fix some split servers not appearing in oper /map.
[irc/rqf/shadowircd.git] / src / newconf.c
index 8c1e52b565ca79950b434f79e2d75807c3c744d6..6f1c5f1e2ac5362d8361fed37d22806cfc93f88d 100644 (file)
@@ -85,7 +85,7 @@ add_top_conf(const char *name, int (*sfunc) (struct TopConf *),
 
        tc = MyMalloc(sizeof(struct TopConf));
 
-       DupString(tc->tc_name, name);
+       tc->tc_name = name;
        tc->tc_sfunc = sfunc;
        tc->tc_efunc = efunc;
        tc->tc_entries = items;
@@ -153,7 +153,6 @@ remove_top_conf(char *name)
                return -1;
 
        dlinkDestroy(ptr, &conf_items);
-       MyFree(tc->tc_name);
        MyFree(tc);
 
        return 0;
@@ -308,7 +307,7 @@ static struct mode_table umode_table[] = {
        {NULL, 0}
 };
 
-static struct mode_table flag_table[] = {
+static struct mode_table oper_table[] = {
        {"encrypted",           OPER_ENCRYPTED          },
        {"local_kill",          OPER_LOCKILL            },
        {"global_kill",         OPER_GLOBKILL|OPER_LOCKILL      },
@@ -322,10 +321,12 @@ static struct mode_table flag_table[] = {
        {"admin",               OPER_ADMIN              },
        {"hidden_admin",        OPER_HADMIN             },
        {"xline",               OPER_XLINE              },
+       {"resv",                OPER_RESV               },
        {"operwall",            OPER_OPERWALL           },
        {"oper_spy",            OPER_SPY                },
        {"hidden_oper",         OPER_INVIS              },
        {"remoteban",           OPER_REMOTEBAN          },
+       {"mass_notice",         OPER_MASSNOTICE         },
        {NULL, 0}
 };
 
@@ -466,7 +467,7 @@ conf_begin_oper(struct TopConf *tc)
        }
 
        yy_oper = make_oper_conf();
-       yy_oper->flags |= OPER_ENCRYPTED|OPER_OPERWALL|OPER_REMOTEBAN;
+       yy_oper->flags |= OPER_ENCRYPTED|OPER_RESV|OPER_OPERWALL|OPER_REMOTEBAN|OPER_MASSNOTICE;
 
        return 0;
 }
@@ -537,7 +538,7 @@ conf_end_oper(struct TopConf *tc)
                        yy_tmpoper->rsa_pubkey =
                                (RSA *) PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
 
-                       BIO_set_close(file, BIO_CLOSE);
+                       (void)BIO_set_close(file, BIO_CLOSE);
                        BIO_free(file);
 
                        if(yy_tmpoper->rsa_pubkey == NULL)
@@ -565,7 +566,7 @@ conf_set_oper_flags(void *data)
 {
        conf_parm_t *args = data;
 
-       set_modes_from_table(&yy_oper->flags, "flag", flag_table, args);
+       set_modes_from_table(&yy_oper->flags, "flag", oper_table, args);
 }
 
 static void
@@ -1528,14 +1529,6 @@ conf_set_serverhide_links_delay(void *data)
 {
        int val = *(unsigned int *) data;
 
-       if((val > 0) && ConfigServerHide.links_disabled == 1)
-       {
-               eventAddIsh("cache_links", cache_links, NULL, val);
-               ConfigServerHide.links_disabled = 0;
-       }
-       else if(val != ConfigServerHide.links_delay)
-               eventUpdate("cache_links", val);
-
        ConfigServerHide.links_delay = val;
 }
 
@@ -1588,20 +1581,6 @@ conf_set_service_name(void *data)
                target_p->flags |= FLAGS_SERVICE;
 }
 
-static int
-alias_hash(const char *p)
-{
-       int hash_val = 0;
-
-       while (*p)
-       {
-               hash_val += ((int) (*p) & 0xDF);
-               p++;
-       }
-
-       return (hash_val % MAX_MSG_HASH);
-}
-
 static int
 conf_begin_alias(struct TopConf *tc)
 {
@@ -1619,8 +1598,6 @@ conf_begin_alias(struct TopConf *tc)
 static int
 conf_end_alias(struct TopConf *tc)
 {
-       int hashval;
-
        if (yy_alias == NULL)
                return -1;
 
@@ -1642,9 +1619,10 @@ conf_end_alias(struct TopConf *tc)
                return -1;
        }
 
-       hashval = alias_hash(yy_alias->name);
+       if (!alias_dict)
+               alias_dict = irc_dictionary_create(strcasecmp);
 
-       dlinkAddAlloc(yy_alias, &alias_hash_table[hashval]);
+       irc_dictionary_add(alias_dict, yy_alias->name, yy_alias);
 
        return 0;
 }
@@ -1872,7 +1850,7 @@ add_conf_item(const char *topconf, const char *name, int type, void (*func) (voi
 
        cf = MyMalloc(sizeof(struct ConfEntry));
 
-       DupString(cf->cf_name, name);
+       cf->cf_name = name;
        cf->cf_type = type;
        cf->cf_func = func;
        cf->cf_arg = NULL;
@@ -2034,7 +2012,6 @@ static struct ConfEntry conf_general_table[] =
        { "connect_timeout",    CF_TIME,  NULL, 0, &ConfigFileEntry.connect_timeout     },
        { "default_floodcount", CF_INT,   NULL, 0, &ConfigFileEntry.default_floodcount  },
        { "disable_auth",       CF_YESNO, NULL, 0, &ConfigFileEntry.disable_auth        },
-       { "dot_in_ip6_addr",    CF_YESNO, NULL, 0, &ConfigFileEntry.dot_in_ip6_addr     },
        { "dots_in_ident",      CF_INT,   NULL, 0, &ConfigFileEntry.dots_in_ident       },
        { "failed_oper_notice", CF_YESNO, NULL, 0, &ConfigFileEntry.failed_oper_notice  },
        { "glines",             CF_YESNO, NULL, 0, &ConfigFileEntry.glines              },
@@ -2042,7 +2019,6 @@ static struct ConfEntry conf_general_table[] =
        { "gline_min_cidr6",    CF_INT,   NULL, 0, &ConfigFileEntry.gline_min_cidr6     },
        { "gline_time",         CF_TIME,  NULL, 0, &ConfigFileEntry.gline_time          },
        { "global_snotices",    CF_YESNO, NULL, 0, &ConfigFileEntry.global_snotices     },
-       { "idletime",           CF_TIME,  NULL, 0, &ConfigFileEntry.idletime            },
        { "hide_spoof_ips",     CF_YESNO, NULL, 0, &ConfigFileEntry.hide_spoof_ips      },
        { "dline_with_reason",  CF_YESNO, NULL, 0, &ConfigFileEntry.dline_with_reason   },
        { "kline_with_reason",  CF_YESNO, NULL, 0, &ConfigFileEntry.kline_with_reason   },