X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/5203cba5cea34030f9775b6fac1263aacfa37b82..e688bcbdaf186fe438f59dbeb6c8389cb5078030:/ircd/s_conf.c diff --git a/ircd/s_conf.c b/ircd/s_conf.c index 03776789..10d11bec 100644 --- a/ircd/s_conf.c +++ b/ircd/s_conf.c @@ -20,8 +20,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA - * - * $Id: s_conf.c 3550 2007-08-09 06:47:26Z nenolod $ */ #include "stdinc.h" @@ -34,7 +32,6 @@ #include "channel.h" #include "class.h" #include "client.h" -#include "common.h" #include "hash.h" #include "match.h" #include "ircd.h" @@ -46,15 +43,15 @@ #include "send.h" #include "reject.h" #include "cache.h" -#include "blacklist.h" #include "privilege.h" #include "sslproc.h" +#include "wsproc.h" #include "bandbi.h" #include "operhash.h" #include "chmode.h" #include "hook.h" #include "s_assert.h" -#include "authd.h" +#include "authproc.h" struct config_server_hide ConfigServerHide; @@ -171,7 +168,7 @@ free_conf(struct ConfItem *aconf) * inputs - pointer to client * output - 0 = Success * NOT_AUTHORISED (-1) = Access denied (no I line match) - * SOCKET_ERROR (-2) = Bad socket. + * I_SOCKET_ERROR (-2) = Bad socket. * I_LINE_FULL (-3) = I-line is full * TOO_MANY (-4) = Too many connections from hostname * BANNED_CLIENT (-5) = K-lined @@ -192,7 +189,7 @@ check_client(struct Client *client_p, struct Client *source_p, const char *usern switch (i) { - case SOCKET_ERROR: + case I_SOCKET_ERROR: exit_client(client_p, source_p, &me, "Socket Error"); break; @@ -262,12 +259,7 @@ check_client(struct Client *client_p, struct Client *source_p, const char *usern case NOT_AUTHORISED: { int port = -1; -#ifdef RB_IPV6 - if(source_p->localClient->ip.ss_family == AF_INET6) - port = ntohs(((struct sockaddr_in6 *)&source_p->localClient->listener->addr)->sin6_port); - else -#endif - port = ntohs(((struct sockaddr_in *)&source_p->localClient->listener->addr)->sin_port); + port = ntohs(GET_SS_PORT(&source_p->localClient->listener->addr)); ServerStats.is_ref++; /* jdc - lists server name & port connections are on */ @@ -396,7 +388,7 @@ find_address_conf_by_client(struct Client *client_p, const char *username) aconf = find_address_conf(client_p->host, client_p->sockhost, client_p->username, client_p->username, (struct sockaddr *) &client_p->localClient->ip, - client_p->localClient->ip.ss_family, + GET_SS_FAMILY(&client_p->localClient->ip), client_p->localClient->auth_user); } else @@ -406,7 +398,7 @@ find_address_conf_by_client(struct Client *client_p, const char *username) aconf = find_address_conf(client_p->host, client_p->sockhost, non_ident, client_p->username, (struct sockaddr *) &client_p->localClient->ip, - client_p->localClient->ip.ss_family, + GET_SS_FAMILY(&client_p->localClient->ip), client_p->localClient->auth_user); } return aconf; @@ -638,10 +630,10 @@ attach_conf(struct Client *client_p, struct ConfItem *aconf) * as a result of an operator issuing this command, else assume it has been * called as a result of the server receiving a HUP signal. */ -int -rehash(int sig) +bool +rehash(bool sig) { - if(sig != 0) + if(sig) { sendto_realops_snomask(SNO_GENERAL, L_ALL, "Got signal SIGHUP, reloading ircd conf. file"); @@ -649,7 +641,7 @@ rehash(int sig) rehash_authd(); /* don't close listeners until we know we can go ahead with the rehash */ - read_conf_files(NO); + read_conf_files(false); if(ServerInfo.description != NULL) rb_strlcpy(me.info, ServerInfo.description, sizeof(me.info)); @@ -657,11 +649,11 @@ rehash(int sig) rb_strlcpy(me.info, "unknown", sizeof(me.info)); open_logfiles(); - return (0); + return false; } void -rehash_bans(int sig) +rehash_bans(void) { bandb_rehash_bans(); } @@ -677,10 +669,6 @@ rehash_bans(int sig) * of values later, put them in validate_conf(). */ -#define YES 1 -#define NO 0 -#define UNSET -1 - static void set_default_conf(void) { @@ -696,8 +684,6 @@ set_default_conf(void) ServerInfo.specific_ipv6_vhost = 0; #endif - /* Don't reset hub, as that will break lazylinks */ - /* ServerInfo.hub = NO; */ AdminInfo.name = NULL; AdminInfo.email = NULL; AdminInfo.description = NULL; @@ -708,39 +694,39 @@ set_default_conf(void) ConfigFileEntry.sasl_service = NULL; ConfigFileEntry.default_umodes = UMODE_INVISIBLE; - ConfigFileEntry.failed_oper_notice = YES; - ConfigFileEntry.anti_nick_flood = NO; - ConfigFileEntry.disable_fake_channels = NO; + ConfigFileEntry.failed_oper_notice = true; + ConfigFileEntry.anti_nick_flood = false; + ConfigFileEntry.disable_fake_channels = false; ConfigFileEntry.max_nick_time = 20; ConfigFileEntry.max_nick_changes = 5; ConfigFileEntry.max_accept = 20; ConfigFileEntry.max_monitor = 60; ConfigFileEntry.nick_delay = 900; /* 15 minutes */ - ConfigFileEntry.target_change = YES; + ConfigFileEntry.target_change = true; ConfigFileEntry.anti_spam_exit_message_time = 0; ConfigFileEntry.ts_warn_delta = TS_WARN_DELTA_DEFAULT; ConfigFileEntry.ts_max_delta = TS_MAX_DELTA_DEFAULT; - ConfigFileEntry.client_exit = YES; - ConfigFileEntry.dline_with_reason = YES; - ConfigFileEntry.kline_with_reason = YES; + ConfigFileEntry.client_exit = true; + ConfigFileEntry.dline_with_reason = true; + ConfigFileEntry.kline_with_reason = true; ConfigFileEntry.kline_delay = 0; - ConfigFileEntry.warn_no_nline = YES; - ConfigFileEntry.non_redundant_klines = YES; - ConfigFileEntry.stats_e_disabled = NO; - ConfigFileEntry.stats_o_oper_only = NO; + ConfigFileEntry.warn_no_nline = true; + ConfigFileEntry.non_redundant_klines = true; + ConfigFileEntry.stats_e_disabled = false; + ConfigFileEntry.stats_o_oper_only = false; ConfigFileEntry.stats_k_oper_only = 1; /* masked */ ConfigFileEntry.stats_i_oper_only = 1; /* masked */ - ConfigFileEntry.stats_P_oper_only = NO; - ConfigFileEntry.stats_c_oper_only = NO; - ConfigFileEntry.stats_y_oper_only = NO; - ConfigFileEntry.stats_h_oper_only = NO; - ConfigFileEntry.map_oper_only = YES; - ConfigFileEntry.operspy_admin_only = NO; + ConfigFileEntry.stats_P_oper_only = false; + ConfigFileEntry.stats_c_oper_only = false; + ConfigFileEntry.stats_y_oper_only = false; + ConfigFileEntry.stats_h_oper_only = false; + ConfigFileEntry.map_oper_only = true; + ConfigFileEntry.operspy_admin_only = false; ConfigFileEntry.pace_wait = 10; ConfigFileEntry.caller_id_wait = 60; ConfigFileEntry.pace_wait_simple = 1; - ConfigFileEntry.short_motd = NO; - ConfigFileEntry.no_oper_flood = NO; + ConfigFileEntry.short_motd = false; + ConfigFileEntry.no_oper_flood = false; ConfigFileEntry.fname_userlog = NULL; ConfigFileEntry.fname_fuserlog = NULL; ConfigFileEntry.fname_operlog = NULL; @@ -750,17 +736,17 @@ set_default_conf(void) ConfigFileEntry.fname_klinelog = NULL; ConfigFileEntry.fname_operspylog = NULL; ConfigFileEntry.fname_ioerrorlog = NULL; - ConfigFileEntry.hide_spoof_ips = YES; + ConfigFileEntry.hide_spoof_ips = true; ConfigFileEntry.hide_error_messages = 1; ConfigFileEntry.dots_in_ident = 0; ConfigFileEntry.max_targets = MAX_TARGETS_DEFAULT; - ConfigFileEntry.use_whois_actually = YES; - ConfigFileEntry.burst_away = NO; - ConfigFileEntry.collision_fnc = YES; - ConfigFileEntry.resv_fnc = YES; - ConfigFileEntry.global_snotices = YES; - ConfigFileEntry.operspy_dont_care_user_info = NO; - ConfigFileEntry.use_propagated_bans = YES; + ConfigFileEntry.use_whois_actually = true; + ConfigFileEntry.burst_away = false; + ConfigFileEntry.collision_fnc = true; + ConfigFileEntry.resv_fnc = true; + ConfigFileEntry.global_snotices = true; + ConfigFileEntry.operspy_dont_care_user_info = false; + ConfigFileEntry.use_propagated_bans = true; ConfigFileEntry.max_ratelimit_tokens = 30; ConfigFileEntry.away_interval = 30; @@ -773,27 +759,27 @@ set_default_conf(void) ConfigFileEntry.oper_only_umodes = UMODE_SERVNOTICE; ConfigFileEntry.oper_snomask = SNO_GENERAL; - ConfigChannel.use_except = YES; - ConfigChannel.use_invex = YES; - ConfigChannel.use_forward = YES; - ConfigChannel.use_knock = YES; + ConfigChannel.use_except = true; + ConfigChannel.use_invex = true; + ConfigChannel.use_forward = true; + ConfigChannel.use_knock = true; ConfigChannel.knock_delay = 300; ConfigChannel.knock_delay_channel = 60; ConfigChannel.max_chans_per_user = 15; ConfigChannel.max_chans_per_user_large = 60; ConfigChannel.max_bans = 25; ConfigChannel.max_bans_large = 500; - ConfigChannel.only_ascii_channels = NO; - ConfigChannel.burst_topicwho = NO; - ConfigChannel.kick_on_split_riding = NO; + ConfigChannel.only_ascii_channels = false; + ConfigChannel.burst_topicwho = false; + ConfigChannel.kick_on_split_riding = false; ConfigChannel.default_split_user_count = 15000; ConfigChannel.default_split_server_count = 10; - ConfigChannel.no_join_on_split = NO; - ConfigChannel.no_create_on_split = YES; - ConfigChannel.resv_forcepart = YES; - ConfigChannel.channel_target_change = YES; - ConfigChannel.disable_local_channels = NO; + ConfigChannel.no_join_on_split = false; + ConfigChannel.no_create_on_split = true; + ConfigChannel.resv_forcepart = true; + ConfigChannel.channel_target_change = true; + ConfigChannel.disable_local_channels = false; ConfigChannel.displayed_usercount = 3; ConfigChannel.autochanmodes = MODE_TOPICLIMIT | MODE_NOPRIVMSGS; @@ -828,12 +814,9 @@ set_default_conf(void) ConfigFileEntry.hide_opers_in_whois = 0; if (!alias_dict) - alias_dict = irc_dictionary_create("alias", strcasecmp); + alias_dict = rb_dictionary_create("alias", strcasecmp); } -#undef YES -#undef NO - /* * read_conf() * @@ -874,12 +857,15 @@ validate_conf(void) if(ServerInfo.ssld_count < 1) ServerInfo.ssld_count = 1; + /* XXX: configurable? */ + ServerInfo.wsockd_count = 1; + if(!rb_setup_ssl_server(ServerInfo.ssl_cert, ServerInfo.ssl_private_key, ServerInfo.ssl_dh_params, ServerInfo.ssl_cipher_list)) { ilog(L_MAIN, "WARNING: Unable to setup SSL."); - ssl_ok = 0; + ircd_ssl_ok = false; } else { - ssl_ok = 1; + ircd_ssl_ok = true; send_new_ssl_certs(ServerInfo.ssl_cert, ServerInfo.ssl_private_key, ServerInfo.ssl_dh_params, ServerInfo.ssl_cipher_list); } @@ -890,6 +876,12 @@ validate_conf(void) start_ssldaemon(start, ServerInfo.ssl_cert, ServerInfo.ssl_private_key, ServerInfo.ssl_dh_params, ServerInfo.ssl_cipher_list); } + if(ServerInfo.wsockd_count > get_wsockd_count()) + { + int start = ServerInfo.wsockd_count - get_wsockd_count(); + start_wsockd(start); + } + /* General conf */ if (ConfigFileEntry.default_operstring == NULL) ConfigFileEntry.default_operstring = rb_strdup("is an IRC operator"); @@ -1366,12 +1358,12 @@ get_printable_kline(struct Client *source_p, struct ConfItem *aconf, /* * read_conf_files * - * inputs - cold start YES or NO + * inputs - cold start * output - none * side effects - read all conf files needed, ircd.conf kline.conf etc. */ void -read_conf_files(int cold) +read_conf_files(bool cold) { const char *filename; @@ -1428,7 +1420,7 @@ read_conf_files(int cold) * free an alias{} entry. */ static void -free_alias_cb(struct DictionaryElement *ptr, void *unused) +free_alias_cb(rb_dictionary_element *ptr, void *unused) { struct alias_entry *aptr = ptr->data; @@ -1534,11 +1526,11 @@ clear_out_old_conf(void) /* remove any aliases... -- nenolod */ if (alias_dict != NULL) { - irc_dictionary_destroy(alias_dict, free_alias_cb, NULL); + rb_dictionary_destroy(alias_dict, free_alias_cb, NULL); alias_dict = NULL; } - destroy_blacklists(); + del_blacklist_all(); privilegeset_mark_all_illegal();