X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/503727d1eee9910d0219fa5e5eed054e2cbbd3a0..e688bcbdaf186fe438f59dbeb6c8389cb5078030:/ircd/s_conf.c diff --git a/ircd/s_conf.c b/ircd/s_conf.c index aaa9f867..10d11bec 100644 --- a/ircd/s_conf.c +++ b/ircd/s_conf.c @@ -32,7 +32,6 @@ #include "channel.h" #include "class.h" #include "client.h" -#include "common.h" #include "hash.h" #include "match.h" #include "ircd.h" @@ -44,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; @@ -169,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 @@ -190,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; @@ -260,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 */ @@ -394,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 @@ -404,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; @@ -636,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"); @@ -647,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)); @@ -655,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(); } @@ -690,8 +684,6 @@ set_default_conf(void) ServerInfo.specific_ipv6_vhost = 0; #endif - /* Don't reset hub, as that will break lazylinks */ - /* ServerInfo.hub = false; */ AdminInfo.name = NULL; AdminInfo.email = NULL; AdminInfo.description = NULL; @@ -865,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 = false; + ircd_ssl_ok = false; } else { - ssl_ok = true; + ircd_ssl_ok = true; send_new_ssl_certs(ServerInfo.ssl_cert, ServerInfo.ssl_private_key, ServerInfo.ssl_dh_params, ServerInfo.ssl_cipher_list); } @@ -881,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"); @@ -1419,7 +1420,7 @@ read_conf_files(bool 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; @@ -1529,7 +1530,7 @@ clear_out_old_conf(void) alias_dict = NULL; } - destroy_blacklists(); + del_blacklist_all(); privilegeset_mark_all_illegal();