X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/fe037171d6c2b5e9d28ac10a015a13ca5e011cee..a4db1d4784bfda4e2fa7e4f7dd1899c90efe8bd3:/ircd/bandbi.c diff --git a/ircd/bandbi.c b/ircd/bandbi.c index aa9410d2..cc709484 100644 --- a/ircd/bandbi.c +++ b/ircd/bandbi.c @@ -46,6 +46,9 @@ #include "msg.h" /* XXX: MAXPARA */ #include "operhash.h" +static void +bandb_handle_failure(rb_helper *helper, char **parv, int parc) __attribute__((noreturn)); + static char bandb_add_letter[LAST_BANDB_TYPE] = { 'K', 'D', 'X', 'R' }; @@ -74,27 +77,21 @@ static int start_bandb(void) { char fullpath[PATH_MAX + 1]; -#ifdef _WIN32 - const char *suffix = ".exe"; -#else - const char *suffix = ""; -#endif - rb_setenv("BANDB_DBPATH", PKGLOCALSTATEDIR "/ban.db", 1); + rb_setenv("BANDB_DBPATH", ircd_paths[IRCD_PATH_BANDB], 1); if(bandb_path == NULL) { - snprintf(fullpath, sizeof(fullpath), "%s/bandb%s", PKGLIBEXECDIR, suffix); + snprintf(fullpath, sizeof(fullpath), "%s/bandb", ircd_paths[IRCD_PATH_LIBEXEC]); if(access(fullpath, X_OK) == -1) { - snprintf(fullpath, sizeof(fullpath), "%s/bin/bandb%s", - ConfigFileEntry.dpath, suffix); + snprintf(fullpath, sizeof(fullpath), "%s/bin/bandb", ConfigFileEntry.dpath); if(access(fullpath, X_OK) == -1) { ilog(L_MAIN, - "Unable to execute bandb%s in %s or %s/bin", - suffix, PKGLIBEXECDIR, ConfigFileEntry.dpath); + "Unable to execute bandb in %s or %s/bin", + ircd_paths[IRCD_PATH_LIBEXEC], ConfigFileEntry.dpath); return 0; } } @@ -107,11 +104,13 @@ start_bandb(void) if(bandb_helper == NULL) { ilog(L_MAIN, "Unable to start bandb: %s", strerror(errno)); - sendto_realops_snomask(SNO_GENERAL, L_ALL, "Unable to start bandb: %s", + sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "Unable to start bandb helper: %s", strerror(errno)); return 1; } + ilog(L_MAIN, "bandb helper started"); + sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "bandb helper started"); rb_helper_run(bandb_helper); return 0; } @@ -223,11 +222,9 @@ bandb_check_kline(struct ConfItem *aconf) if(aftype != HM_HOST) { -#ifdef RB_IPV6 if(aftype == HM_IPV6) aftype = AF_INET6; else -#endif aftype = AF_INET; kconf = find_conf_by_address(aconf->host, NULL, NULL, (struct sockaddr *)&daddr, @@ -326,7 +323,7 @@ bandb_handle_finish(void) struct ConfItem *aconf; rb_dlink_node *ptr, *next_ptr; - clear_out_address_conf_bans(); + clear_out_address_conf(AC_BANDB); clear_s_newconf_bans(); RB_DLINK_FOREACH_SAFE(ptr, next_ptr, bandb_pending.head) @@ -389,7 +386,7 @@ bandb_handle_failure(rb_helper *helper, char **parv, int parc) fprintf(stderr, "bandb - bandb failure: %s\n", parv[1]); ilog(L_MAIN, "bandb - bandb failure: %s", parv[1]); - sendto_realops_snomask(SNO_GENERAL, L_ALL, "bandb - bandb failure: %s", parv[1]); + sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "bandb - bandb failure: %s", parv[1]); exit(1); } @@ -397,12 +394,12 @@ static void bandb_parse(rb_helper *helper) { static char buf[READBUF_SIZE]; - char *parv[MAXPARA + 1]; + char *parv[MAXPARA]; int len, parc; while((len = rb_helper_read(helper, buf, sizeof(buf)))) { - parc = rb_string_to_array(buf, parv, MAXPARA); + parc = rb_string_to_array(buf, parv, sizeof(parv)); if(parc < 1) continue; @@ -439,9 +436,9 @@ bandb_rehash_bans(void) static void bandb_restart_cb(rb_helper *helper) { - ilog(L_MAIN, "bandb - bandb_restart_cb called, bandb helper died?"); - sendto_realops_snomask(SNO_GENERAL, L_ALL, - "bandb - bandb_restart_cb called, bandb helper died?"); + ilog(L_MAIN, "bandb helper died - attempting to restart"); + sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, + "bandb helper died - attempting to restart"); if(helper != NULL) { rb_helper_close(helper);