fix TODO list, services without "description" fields
authorEntrope <entrope@clan-dk.org>
Tue, 24 Feb 2004 03:55:22 +0000 (03:55 +0000)
committerEntrope <entrope@clan-dk.org>
Tue, 24 Feb 2004 03:55:22 +0000 (03:55 +0000)
Remove items in the TODO list that have been done

Restore the ability to use a default description for services when a
"nick" but no "description" is present in srvx.conf
git-archimport-id: srvx@srvx.net--2004-srvx/srvx--devo--1.3--patch-5

TODO
src/chanserv.c
src/global.c
src/main.c
src/nickserv.c
src/opserv.c

diff --git a/TODO b/TODO
index b6f432e84ef5c477db330f340e6dcdf4d3174dfa..6c9b1c6cadc310dd5e17af3f400f68d71031e736 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,22 +1,12 @@
-ServerSpy.net
-[FEATREQ] finish ServerSpy.net support
-
-Core
-[FEATREQ] per-service "set privmsg" option
-
 ---------
 
-<def|office> featreq: is_authed criteria for trace
-<Zoot> featreq: disallow the use of the channel criteria in addalert
 <myriad> [featreq] something to turn off security override after a set period of time
-<word-up_Wwv> [FEATREQ] how about adding a suspended symbol to the authserv channelaccesslist, would be handy and informative
 <adam> [featreq] an account flag that disallows users from using /ns kill (or some other way to prevent/deter nick holding on an account-level)
 <Byte> [featreq] people cant !invite over a timeban
 <Commander> [featreq] allow srvx to listen on a port for an ircd to connect to it
 [adam(m@myriad.lackofdiscipline.com)] yeah, and possibly another flag or some way to stop a hostmask range from registering any new nicks
 [adam(m@myriad.lackofdiscipline.com)] we're having people grab nicks of other users who don't understand how the system works
 [msg(adam)] yeah, blocking account or nick registrations for an address (or block of addresses) was another featreq on the web page
-<Incutio> put notes into the /msg o chaninfo output
 
 ---------
 
@@ -31,8 +21,4 @@ Core
 
 [FEATREQ] Suspension durations and/or comments when suspending user access to a channel
 
-[FEATREQ] Timestamps for channel notes and DNRs
-
 [FEATREQ] support "unregistered": ?ctrace print mode +s unregistered
-
-[FEATREQ] move "version" command into modcmd core; register module versions with modcmd
index f23ff34c66fc14f1dc129b8e742e149cae7d3b04..1a4c6d6f011082f70a1adbc939a153fcb047ec1e 100644 (file)
@@ -6197,7 +6197,8 @@ chanserv_conf_read(void)
     str = database_get_data(conf_node, KEY_MAX_CHAN_BANS, RECDB_QSTRING);
     chanserv_conf.max_chan_bans = str ? atoi(str) : 512;
     str = database_get_data(conf_node, KEY_NICK, RECDB_QSTRING);
-    if(str) NickChange(chanserv, str, 0);
+    if(chanserv && str)
+        NickChange(chanserv, str, 0);
     str = database_get_data(conf_node, KEY_REFRESH_PERIOD, RECDB_QSTRING);
     chanserv_conf.refresh_period = str ? ParseInterval(str) : 3*60*60;
     str = database_get_data(conf_node, KEY_CTCP_SHORT_BAN_DURATION, RECDB_QSTRING);
@@ -6897,7 +6898,6 @@ chanserv_db_cleanup(void) {
 void
 init_chanserv(const char *nick)
 {
-    chanserv = AddService(nick, "Channel Services");
     CS_LOG = log_register_type("ChanServ", "file:chanserv.log");
     conf_register_reload(chanserv_conf_read);
 
@@ -7056,8 +7056,13 @@ init_chanserv(const char *nick)
 
     note_types = dict_new();
     dict_set_free_data(note_types, chanserv_deref_note_type);
+    if(nick)
+    {
+        chanserv = AddService(nick, "Channel Services");
+        service_register(chanserv, '!');
+        reg_chanmsg_func('\001', chanserv, chanserv_ctcp_check);
+    }
     saxdb_register("ChanServ", chanserv_saxdb_read, chanserv_saxdb_write);
-    reg_chanmsg_func('\001', chanserv, chanserv_ctcp_check);
 
     if(chanserv_conf.channel_expire_frequency)
        timeq_add(now + chanserv_conf.channel_expire_frequency, expire_channels, NULL);
index 575dac2b0c97711b2276b3c11dd98041d125610d..cd6a43c1b081ce4a9a6f0470eeec267cdcc7aee6 100644 (file)
@@ -591,7 +591,7 @@ global_conf_read(void)
     global_conf.announcements_default = str ? enabled_string(str) : 1;
 
     str = database_get_data(conf_node, KEY_NICK, RECDB_QSTRING);
-    if(str)
+    if(global && str)
         NickChange(global, str, 0);
 }
 
@@ -653,13 +653,13 @@ global_saxdb_write(struct saxdb_context *ctx)
 static void
 global_db_cleanup(void)
 {
-    while (messageList) message_del(messageList);
+    while(messageList)
+        message_del(messageList);
 }
 
 void
 init_global(const char *nick)
 {
-    global = AddService(nick, "Global Services");
     G_LOG = log_register_type("Global", "file:global.log");
     reg_new_user_func(global_process_user);
     reg_auth_func(global_process_auth);
@@ -674,7 +674,11 @@ init_global(const char *nick)
     modcmd_register(global_module, "NOTICE", cmd_notice, 3, MODCMD_REQUIRE_AUTHED, "flags", "+oper", NULL);
     modcmd_register(global_module, "REMOVE", cmd_remove, 2, MODCMD_REQUIRE_AUTHED, "flags", "+oper", NULL);
 
-    global_service = service_register(global, 0);
+    if(nick)
+    {
+        global = AddService(nick, "Global Services");
+        global_service = service_register(global, 0);
+    }
     saxdb_register("Global", global_saxdb_read, global_saxdb_write);
     reg_exit_func(global_db_cleanup);
     message_register_table(msgtab);
index 5bc704e4383c2eb1b1e4bfac4b9f5a2cbfc09ecb..a8312eeb3e5ea7937cdde9a5a56994d50a6458db 100644 (file)
@@ -506,16 +506,19 @@ conf_globals(void)
     dict_t dict;
 
     info = conf_get_data("services/global/nick", RECDB_QSTRING);
-    if (info && (info[0] != '.'))
-        init_global(info);
+    if (info[0] == '.')
+        info = NULL;
+    init_global(info);
 
     info = conf_get_data("services/nickserv/nick", RECDB_QSTRING);
-    if (info && (info[0] != '.'))
-        init_nickserv(info);
+    if (info[0] == '.')
+        info = NULL;
+    init_nickserv(info);
 
     info = conf_get_data("services/chanserv/nick", RECDB_QSTRING);
-    if (info && (info[0] != '.'))
-        init_chanserv(info);
+    if (info[0] == '.')
+        info = NULL;
+    init_chanserv(info);
 
     god_policer_params = policer_params_new();
     if ((dict = conf_get_data("policers/commands-god", RECDB_OBJECT))) {
@@ -540,8 +543,9 @@ conf_globals(void)
     }
 
     info = conf_get_data("services/opserv/nick", RECDB_QSTRING);
-    if (info)
-        init_opserv(info);
+    if (info[0] == '.')
+        info = NULL;
+    init_opserv(info);
 }
 
 #ifdef HAVE_SYS_RESOURCE_H
index e62f7377649ae1f7927a5546275604de4943d613..a91d8a4a61d625484227b163b08c9bf5a208766c 100644 (file)
@@ -3381,7 +3381,7 @@ nickserv_conf_read(void)
     if (str)
         nickserv_load_dict(str);
     str = database_get_data(conf_node, KEY_NICK, RECDB_QSTRING);
-    if (str)
+    if (nickserv && str)
         NickChange(nickserv, str, 0);
     str = database_get_data(conf_node, KEY_AUTOGAG_ENABLED, RECDB_QSTRING);
     nickserv_conf.autogag_enabled = str ? strtoul(str, NULL, 0) : 1;
@@ -3569,7 +3569,6 @@ void
 init_nickserv(const char *nick)
 {
     unsigned int i;
-    nickserv = AddService(nick, "Nick Services");
     NS_LOG = log_register_type("NickServ", "file:nickserv.log");
     reg_new_user_func(handle_new_user);
     reg_nick_change_func(handle_nick_change);
@@ -3662,7 +3661,10 @@ init_nickserv(const char *nick)
 
     userList_init(&curr_helpers);
 
-    nickserv_service = service_register(nickserv, 0);
+    if (nick) {
+        nickserv = AddService(nick, "Nick Services");
+        nickserv_service = service_register(nickserv, 0);
+    }
     saxdb_register("NickServ", nickserv_saxdb_read, nickserv_saxdb_write);
     reg_exit_func(nickserv_db_cleanup);
     if(nickserv_conf.handle_expire_frequency)
index 3da6e3e086d04af349ba076413eb850413d7c2d6..6a5336bfb6111445b8effe7dafb11a09e8c31078 100644 (file)
@@ -262,7 +262,6 @@ static dict_t opserv_user_alerts; /* data is struct opserv_user_alert* */
 static dict_t opserv_nick_based_alerts; /* data is struct opserv_user_alert* */
 static dict_t opserv_channel_alerts; /* data is struct opserv_user_alert* */
 static struct module *opserv_module;
-static struct service *opserv_service;
 static struct log_type *OS_LOG;
 static unsigned int new_user_flood;
 static char *level_strings[1001];
@@ -365,11 +364,6 @@ opserv_free_user_alert(void *data)
     free(alert);
 }
 
-static struct svccmd *
-opserv_get_command(const char *name) {
-    return dict_find(opserv_service->commands, name, NULL);
-}
-
 #define opserv_debug(format...) do { if (opserv_conf.debug_channel) send_channel_notice(opserv_conf.debug_channel , opserv , ## format); } while (0)
 #define opserv_alert(format...) do { if (opserv_conf.alert_channel) send_channel_notice(opserv_conf.alert_channel , opserv , ## format); } while (0)
 
@@ -2303,22 +2297,27 @@ static MODCMD_FUNC(cmd_clone)
 static struct helpfile_expansion
 opserv_help_expand(const char *variable)
 {
+    extern struct userNode *message_source;
     struct helpfile_expansion exp;
+    struct service *service;
     struct svccmd *cmd;
     dict_iterator_t it;
     int row;
     unsigned int level;
 
-    if (!irccasecmp(variable, "index")) {
+    if (!(service = service_find(message_source->nick))) {
+        exp.type = HF_STRING;
+        exp.value.str = NULL;
+    } else if (!irccasecmp(variable, "index")) {
         exp.type = HF_TABLE;
         exp.value.table.length = 1;
         exp.value.table.width = 2;
         exp.value.table.flags = TABLE_REPEAT_HEADERS | TABLE_REPEAT_ROWS;
-        exp.value.table.contents = calloc(dict_size(opserv_service->commands)+1, sizeof(char**));
+        exp.value.table.contents = calloc(dict_size(service->commands)+1, sizeof(char**));
         exp.value.table.contents[0] = calloc(exp.value.table.width, sizeof(char*));
         exp.value.table.contents[0][0] = "Command";
         exp.value.table.contents[0][1] = "Level";
-        for (it=dict_first(opserv_service->commands); it; it=iter_next(it)) {
+        for (it=dict_first(service->commands); it; it=iter_next(it)) {
             cmd = iter_data(it);
             row = exp.value.table.length++;
             exp.value.table.contents[row] = calloc(exp.value.table.width, sizeof(char*));
@@ -2331,7 +2330,7 @@ opserv_help_expand(const char *variable)
             exp.value.table.contents[row][1] = level_strings[level];
         }
     } else if (!strncasecmp(variable, "level", 5)) {
-        cmd = opserv_get_command(variable+6);
+        cmd = dict_find(service->commands, variable+6, NULL);
         exp.type = HF_STRING;
         if (cmd) {
             level = cmd->min_opserv_level;
@@ -3308,7 +3307,7 @@ static MODCMD_FUNC(cmd_trace)
     char buf[MAXLEN];
 
     sprintf(buf, "trace %s", argv[1]);
-    if (!(subcmd = opserv_get_command(buf))) {
+    if (!(subcmd = dict_find(cmd->parent->commands, buf, NULL))) {
        reply("OSMSG_BAD_ACTION", argv[1]);
         return 0;
     }
@@ -3529,7 +3528,7 @@ static MODCMD_FUNC(cmd_csearch)
     }
 
     sprintf(buf, "%s %s", argv[0], argv[0]);
-    if ((subcmd = opserv_get_command(buf))
+    if ((subcmd = dict_find(cmd->parent->commands, buf, NULL))
         && !svccmd_can_invoke(user, cmd->parent->bot, subcmd, channel, SVCCMD_NOISY)) {
         return 0;
     }
@@ -3619,7 +3618,7 @@ static MODCMD_FUNC(cmd_gtrace)
         return 0;
     }
     sprintf(buf, "%s %s", argv[0], argv[0]);
-    if ((subcmd = opserv_get_command(buf))
+    if ((subcmd = dict_find(cmd->parent->commands, buf, NULL))
         && !svccmd_can_invoke(user, cmd->parent->bot, subcmd, channel, SVCCMD_NOISY)) {
         return 0;
     }
@@ -3834,7 +3833,7 @@ static MODCMD_FUNC(cmd_addalert)
 
     name = argv[1];
     sprintf(buf, "addalert %s", argv[2]);
-    if (!(subcmd = opserv_get_command(buf))) {
+    if (!(subcmd = dict_find(cmd->parent->commands, buf, NULL))) {
        reply("OSMSG_UNKNOWN_REACTION", argv[2]);
        return 0;
     }
@@ -3885,7 +3884,7 @@ opserv_conf_read(void)
     }
     conf_node = rd->d.object;
     str = database_get_data(conf_node, KEY_DEBUG_CHANNEL, RECDB_QSTRING);
-    if (str) {
+    if (opserv && str) {
         str2 = database_get_data(conf_node, KEY_DEBUG_CHANNEL_MODES, RECDB_QSTRING);
         if (!str2)
             str2 = "+tinms";
@@ -3895,7 +3894,7 @@ opserv_conf_read(void)
        opserv_conf.debug_channel = NULL;
     }
     str = database_get_data(conf_node, KEY_ALERT_CHANNEL, RECDB_QSTRING);
-    if (str) {
+    if (opserv && str) {
         str2 = database_get_data(conf_node, KEY_ALERT_CHANNEL_MODES, RECDB_QSTRING);
         if (!str2)
             str2 = "+tns";
@@ -3905,7 +3904,7 @@ opserv_conf_read(void)
        opserv_conf.alert_channel = NULL;
     }
     str = database_get_data(conf_node, KEY_STAFF_AUTH_CHANNEL, RECDB_QSTRING);
-    if (str) {
+    if (opserv && str) {
         str2 = database_get_data(conf_node, KEY_STAFF_AUTH_CHANNEL_MODES, RECDB_QSTRING);
         if (!str2)
             str2 = "+timns";
@@ -3923,7 +3922,7 @@ opserv_conf_read(void)
     str = database_get_data(conf_node, KEY_JOIN_FLOOD_MODERATE_THRESH, RECDB_QSTRING);
     opserv_conf.join_flood_moderate_threshold = str ? strtoul(str, NULL, 0) : 50;
     str = database_get_data(conf_node, KEY_NICK, RECDB_QSTRING);
-    if (str)
+    if (opserv && str)
         NickChange(opserv, str, 0);
     str = database_get_data(conf_node, KEY_CLONE_GLINE_DURATION, RECDB_QSTRING);
     opserv_conf.clone_gline_duration = str ? ParseInterval(str) : 3600;
@@ -4007,7 +4006,6 @@ opserv_db_cleanup(void)
 void
 init_opserv(const char *nick)
 {
-    opserv = AddService(nick, "Oper Services");
     OS_LOG = log_register_type("OpServ", "file:opserv.log");
     conf_register_reload(opserv_conf_read);
 
@@ -4117,7 +4115,11 @@ init_opserv(const char *nick)
 
     opserv_db_init();
     saxdb_register("OpServ", opserv_saxdb_read, opserv_saxdb_write);
-    opserv_service = service_find(opserv->nick);
+    if(nick)
+    {
+        opserv = AddService(nick, "Oper Services");
+        service_register(opserv, '?');
+    }
 
     reg_exit_func(opserv_db_cleanup);
     message_register_table(msgtab);