]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - src/s_conf.c
ssl sync with http://hg.angelforce.ru/charybdis-old
[irc/rqf/shadowircd.git] / src / s_conf.c
index 47141e89c488ceebcbe273f7ee3c2396bab1a100..d35eed45d71e436790ba7e998b4c737a258c9f00 100644 (file)
@@ -48,6 +48,7 @@
 #include "reject.h"
 #include "cache.h"
 #include "blacklist.h"
+#include "sslproc.h"
 
 struct config_server_hide ConfigServerHide;
 
@@ -194,7 +195,7 @@ check_client(struct Client *client_p, struct Client *source_p, const char *usern
                        source_p->name, IsGotId(source_p) ? "" : "~",
                        source_p->username, source_p->sockhost);        
 
-               ServerStats->is_ref++;
+               ServerStats.is_ref++;
                exit_client(client_p, source_p, &me, "Too many host connections (local)");
                break;
 
@@ -208,7 +209,7 @@ check_client(struct Client *client_p, struct Client *source_p, const char *usern
                        source_p->name, IsGotId(source_p) ? "" : "~",
                        source_p->username, source_p->sockhost);
 
-               ServerStats->is_ref++;
+               ServerStats.is_ref++;
                exit_client(client_p, source_p, &me, "Too many host connections (global)");
                break;
 
@@ -222,7 +223,7 @@ check_client(struct Client *client_p, struct Client *source_p, const char *usern
                        source_p->name, IsGotId(source_p) ? "" : "~",
                        source_p->username, source_p->sockhost);
 
-               ServerStats->is_ref++;
+               ServerStats.is_ref++;
                exit_client(client_p, source_p, &me, "Too many user connections (global)");
                break;
 
@@ -237,7 +238,7 @@ check_client(struct Client *client_p, struct Client *source_p, const char *usern
                        source_p->name, IsGotId(source_p) ? "" : "~",
                        source_p->username, source_p->sockhost);
 
-               ServerStats->is_ref++;
+               ServerStats.is_ref++;
                exit_client(client_p, source_p, &me,
                            "No more connections allowed in your connection class");
                break;
@@ -245,14 +246,14 @@ check_client(struct Client *client_p, struct Client *source_p, const char *usern
        case NOT_AUTHORISED:
                {
                        int port = -1;
-#ifdef IPV6
+#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);
                        
-                       ServerStats->is_ref++;
+                       ServerStats.is_ref++;
                        /* jdc - lists server name & port connections are on */
                        /*       a purely cosmetical change */
                        /* why ipaddr, and not just source_p->sockhost? --fl */
@@ -280,7 +281,7 @@ check_client(struct Client *client_p, struct Client *source_p, const char *usern
                }
        case BANNED_CLIENT:
                exit_client(client_p, client_p, &me, "*** Banned ");
-               ServerStats->is_ref++;
+               ServerStats.is_ref++;
                break;
 
        case 0:
@@ -721,7 +722,7 @@ set_default_conf(void)
 
        memset(&ServerInfo.ip, 0, sizeof(ServerInfo.ip));
        ServerInfo.specific_ipv4_vhost = 0;
-#ifdef IPV6
+#ifdef RB_IPV6
        memset(&ServerInfo.ip6, 0, sizeof(ServerInfo.ip6));
        ServerInfo.specific_ipv6_vhost = 0;
 #endif
@@ -838,7 +839,7 @@ set_default_conf(void)
        ConfigFileEntry.reject_duration = 120;
        ConfigFileEntry.max_unknown_ip = 2;
 
-       ServerInfo.max_clients = maxconnections - MAX_BUFFER;
+       ServerInfo.default_max_clients = MAXCONNECTIONS;
 }
 
 #undef YES
@@ -882,6 +883,26 @@ validate_conf(void)
        if(ServerInfo.network_desc == NULL)
                ServerInfo.network_desc = rb_strdup(NETWORK_DESC_DEFAULT);
 
+       if(ServerInfo.ssld_count < 1)\r
+               ServerInfo.ssld_count = 1;
+
+       if(!rb_setup_ssl_server(ServerInfo.ssl_cert, ServerInfo.ssl_private_key, ServerInfo.ssl_dh_params))\r
+       {\r
+               ilog(L_MAIN, "WARNING: Unable to setup SSL.");\r
+               ssl_ok = 0;\r
+       } else {\r
+               ssl_ok = 1;\r
+               send_new_ssl_certs(ServerInfo.ssl_cert, ServerInfo.ssl_private_key, ServerInfo.ssl_dh_params);\r
+       }\r
+\r
+       if(ServerInfo.ssld_count > get_ssld_count())\r
+       {\r
+               int start = ServerInfo.ssld_count - get_ssld_count();\r
+               /* start up additional ssld if needed */\r
+               start_ssldaemon(start, ServerInfo.ssl_cert, ServerInfo.ssl_private_key, ServerInfo.ssl_dh_params);\r
+                               \r
+       }
+
        if((ConfigFileEntry.client_flood < CLIENT_FLOOD_MIN) ||
           (ConfigFileEntry.client_flood > CLIENT_FLOOD_MAX))
                ConfigFileEntry.client_flood = CLIENT_FLOOD_MAX;
@@ -1240,6 +1261,8 @@ clear_out_old_conf(void)
        rb_free(ServerInfo.network_desc);
        ServerInfo.network_desc = NULL;
 
+       ServerInfo.ssld_count = 1;
+
        /* clean out AdminInfo */
        rb_free(AdminInfo.name);
        AdminInfo.name = NULL;