From: Entrope Date: Tue, 24 Feb 2004 03:55:22 +0000 (+0000) Subject: fix TODO list, services without "description" fields X-Git-Tag: v1.4.0-rc1~271 X-Git-Url: http://git.pk910.de/?p=srvx.git;a=commitdiff_plain;h=9c6be56bf819c624f8e7b0a0ebbe77fe14cb3e0f fix TODO list, services without "description" fields 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 --- diff --git a/TODO b/TODO index b6f432e..6c9b1c6 100644 --- a/TODO +++ b/TODO @@ -1,22 +1,12 @@ -ServerSpy.net -[FEATREQ] finish ServerSpy.net support - -Core -[FEATREQ] per-service "set privmsg" option - --------- - featreq: is_authed criteria for trace - featreq: disallow the use of the channel criteria in addalert [featreq] something to turn off security override after a set period of time - [FEATREQ] how about adding a suspended symbol to the authserv channelaccesslist, would be handy and informative [featreq] an account flag that disallows users from using /ns kill (or some other way to prevent/deter nick holding on an account-level) [featreq] people cant !invite over a timeban [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 - 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 diff --git a/src/chanserv.c b/src/chanserv.c index f23ff34..1a4c6d6 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -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); diff --git a/src/global.c b/src/global.c index 575dac2..cd6a43c 100644 --- a/src/global.c +++ b/src/global.c @@ -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); diff --git a/src/main.c b/src/main.c index 5bc704e..a8312ee 100644 --- a/src/main.c +++ b/src/main.c @@ -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 diff --git a/src/nickserv.c b/src/nickserv.c index e62f737..a91d8a4 100644 --- a/src/nickserv.c +++ b/src/nickserv.c @@ -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) diff --git a/src/opserv.c b/src/opserv.c index 3da6e3e..6a5336b 100644 --- a/src/opserv.c +++ b/src/opserv.c @@ -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);