X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/cf91d0c9d8a6860dd5dca06aee4edefb3b7e2ee8..979a6d5a5123d7263a86d6856e67f9ba2c47c5f1:/src/s_newconf.c diff --git a/src/s_newconf.c b/src/s_newconf.c index 86d20b9..36e94a5 100644 --- a/src/s_newconf.c +++ b/src/s_newconf.c @@ -318,54 +318,6 @@ find_oper_conf(const char *username, const char *host, const char *locip, const return NULL; } -struct oper_flags -{ - int flag; - const char *name; -}; -static struct oper_flags oper_flagtable[] = -{ - { OPER_KLINE, "kline" }, - { OPER_XLINE, "xline" }, - { OPER_RESV, "resv" }, - { OPER_GLOBKILL, "global_kill" }, - { OPER_LOCKILL, "local_kill" }, - { OPER_REMOTE, "remote" }, - { OPER_UNKLINE, "unkline" }, - { OPER_REHASH, "rehash" }, - { OPER_DIE, "die" }, - { OPER_ADMIN, "admin" }, - { OPER_HADMIN, "hidden_admin" }, - { OPER_NICKS, "nick_changes" }, - { OPER_OPERWALL, "operwall" }, - { OPER_SPY, "spy" }, - { OPER_INVIS, "hidden_oper" }, - { OPER_REMOTEBAN, "remoteban" }, - { OPER_MASSNOTICE, "mass_notice" }, - { 0, NULL } -}; - -const char * -get_oper_privs(int flags) -{ - static char buf[BUFSIZE]; - char *p; - int i; - - p = buf; - *p = '\0'; - - for(i = 0; oper_flagtable[i].flag; i++) - { - if(i) - rb_strlcat(buf, ", ", sizeof(buf)); - - rb_strlcat(buf, oper_flagtable[i].name, sizeof(buf)); - } - - return buf; -} - struct server_conf * make_server_conf(void) { @@ -487,7 +439,7 @@ detach_server_conf(struct Client *client_p) } void -set_server_conf_autoconn(struct Client *source_p, char *name, int newval) +set_server_conf_autoconn(struct Client *source_p, const char *name, int newval) { struct server_conf *server_p; @@ -506,6 +458,24 @@ set_server_conf_autoconn(struct Client *source_p, char *name, int newval) sendto_one_notice(source_p, ":Can't find %s", name); } +void +disable_server_conf_autoconn(const char *name) +{ + struct server_conf *server_p; + + server_p = find_server_conf(name); + if(server_p != NULL && server_p->flags & SERVER_AUTOCONN) + { + server_p->flags &= ~SERVER_AUTOCONN; + + sendto_realops_snomask(SNO_GENERAL, L_ALL, + "Disabling AUTOCONN for %s because of error", + name); + ilog(L_SERVER, "Disabling AUTOCONN for %s because of error", + name); + } +} + struct ConfItem * find_xline(const char *gecos, int counter) { @@ -516,7 +486,7 @@ find_xline(const char *gecos, int counter) { aconf = ptr->data; - if(match_esc(aconf->name, gecos)) + if(match_esc(aconf->host, gecos)) { if(counter) aconf->port++; @@ -537,7 +507,7 @@ find_xline_mask(const char *gecos) { aconf = ptr->data; - if(!irccmp(aconf->name, gecos)) + if(!irccmp(aconf->host, gecos)) return aconf; } @@ -554,7 +524,7 @@ find_nick_resv(const char *name) { aconf = ptr->data; - if(match_esc(aconf->name, name)) + if(match_esc(aconf->host, name)) { aconf->port++; return aconf; @@ -574,7 +544,7 @@ find_nick_resv_mask(const char *name) { aconf = ptr->data; - if(!irccmp(aconf->name, name)) + if(!irccmp(aconf->host, name)) return aconf; } @@ -681,6 +651,7 @@ valid_temp_time(const char *p) return(result * 60); } +/* Propagated bans are expired elsewhere. */ static void expire_temp_rxlines(void *unused) { @@ -693,12 +664,14 @@ expire_temp_rxlines(void *unused) { aconf = ptr->data; + if(aconf->lifetime != 0) + continue; if(aconf->hold && aconf->hold <= rb_current_time()) { if(ConfigFileEntry.tkline_expire_notices) sendto_realops_snomask(SNO_GENERAL, L_ALL, "Temporary RESV for [%s] expired", - aconf->name); + aconf->host); free_conf(aconf); rb_dlinkDestroy(ptr, &resvTable[i]); @@ -710,12 +683,14 @@ expire_temp_rxlines(void *unused) { aconf = ptr->data; + if(aconf->lifetime != 0) + continue; if(aconf->hold && aconf->hold <= rb_current_time()) { if(ConfigFileEntry.tkline_expire_notices) sendto_realops_snomask(SNO_GENERAL, L_ALL, "Temporary RESV for [%s] expired", - aconf->name); + aconf->host); free_conf(aconf); rb_dlinkDestroy(ptr, &resv_conf_list); } @@ -725,12 +700,14 @@ expire_temp_rxlines(void *unused) { aconf = ptr->data; + if(aconf->lifetime != 0) + continue; if(aconf->hold && aconf->hold <= rb_current_time()) { if(ConfigFileEntry.tkline_expire_notices) sendto_realops_snomask(SNO_GENERAL, L_ALL, "Temporary X-line for [%s] expired", - aconf->name); + aconf->host); free_conf(aconf); rb_dlinkDestroy(ptr, &xline_conf_list); }