]> jfr.im git - solanum.git/blobdiff - ircd/s_conf.c
wsockd: more progress on output
[solanum.git] / ircd / s_conf.c
index d952981b427856e45386ece170a390ecafa8e2aa..10d11becb8084952dd8171257f2dcc24c4cee482 100644 (file)
@@ -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"
 #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 = 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);
        }
 
@@ -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();