#include "ircd.h"
#include "snomask.h"
#include "blacklist.h"
+#include "sslproc.h"
#define CF_TYPE(x) ((x) & CF_MTYPE)
static void
conf_set_serverinfo_vhost6(void *data)
{
-#ifdef IPV6
+#ifdef RB_IPV6
if(inetpton(AF_INET6, (char *) data, &ServerInfo.ip6.sin6_addr) <= 0)
{
conf_report_error("Invalid netmask for server IPv6 vhost (%s)", (char *) data);
{ "compressed", SERVER_COMPRESSED },
{ "encrypted", SERVER_ENCRYPTED },
{ "topicburst", SERVER_TB },
+ { "ssl", SERVER_SSL },
{ NULL, 0 },
};
static void
conf_set_class_cidr_bitlen(void *data)
{
-#ifdef IPV6
+#ifdef RB_IPV6
unsigned int maxsize = 128;
#else
unsigned int maxsize = 32;
return 0;
}
+
+
static void
-conf_set_listen_port(void *data)
+conf_set_listen_port_both(void *data, int ssl)
{
conf_parm_t *args = data;
for (; args; args = args->next)
}
if(listener_address == NULL)
{
- add_listener(args->v.number, listener_address, AF_INET);
-#ifdef IPV6
- add_listener(args->v.number, listener_address, AF_INET6);
+ add_listener(args->v.number, listener_address, AF_INET, ssl);
+#ifdef RB_IPV6
+ add_listener(args->v.number, listener_address, AF_INET6, ssl);
#endif
}
else
{
int family;
-#ifdef IPV6
+#ifdef RB_IPV6
if(strchr(listener_address, ':') != NULL)
family = AF_INET6;
else
#endif
family = AF_INET;
- add_listener(args->v.number, listener_address, family);
+ add_listener(args->v.number, listener_address, family, ssl);
}
}
}
+static void\r
+conf_set_listen_port(void *data)\r
+{\r
+ conf_set_listen_port_both(data, 0);\r
+}\r
+\r
+static void\r
+conf_set_listen_sslport(void *data)\r
+{\r
+ conf_set_listen_port_both(data, 1);\r
+}
+
static void
conf_set_listen_address(void *data)
{
yy_server->flags &= ~SERVER_COMPRESSED;
}
#endif
+ if(ServerConfCompressed(yy_server) && ServerConfSSL(yy_server))\r
+ {\r
+ conf_report_error("Ignoring compressed for connect block %s -- "\r
+ "ssl and compressed are mutually exclusive (OpenSSL does its own compression)", \r
+ yy_server->name);\r
+ yy_server->flags &= ~SERVER_COMPRESSED;\r
+ }
add_server_conf(yy_server);
rb_dlinkAdd(yy_server, &yy_server->node, &server_conf_list);
if(strcasecmp(aft, "ipv4") == 0)
yy_server->aftype = AF_INET;
-#ifdef IPV6
+#ifdef RB_IPV6
else if(strcasecmp(aft, "ipv6") == 0)
yy_server->aftype = AF_INET6;
#endif
{ "vhost", CF_QSTRING, conf_set_serverinfo_vhost, 0, NULL },
{ "vhost6", CF_QSTRING, conf_set_serverinfo_vhost6, 0, NULL },
- { "max_clients", CF_INT, NULL, 0, &ServerInfo.max_clients },
+ { "ssl_private_key", CF_QSTRING, NULL, 0, &ServerInfo.ssl_private_key },\r
+ { "ssl_ca_cert", CF_QSTRING, NULL, 0, &ServerInfo.ssl_ca_cert },\r
+ { "ssl_cert", CF_QSTRING, NULL, 0, &ServerInfo.ssl_cert }, \r
+ { "ssl_dh_params", CF_QSTRING, NULL, 0, &ServerInfo.ssl_dh_params },\r
+ { "ssld_count", CF_INT, NULL, 0, &ServerInfo.ssld_count },
+
+ { "default_max_clients",CF_INT, NULL, 0, &ServerInfo.default_max_clients },
{ "\0", 0, NULL, 0, NULL }
};
add_top_conf("listen", conf_begin_listen, conf_end_listen, NULL);
add_conf_item("listen", "port", CF_INT | CF_FLIST, conf_set_listen_port);
+ add_conf_item("listen", "sslport", CF_INT | CF_FLIST, conf_set_listen_sslport);
add_conf_item("listen", "ip", CF_QSTRING, conf_set_listen_address);
add_conf_item("listen", "host", CF_QSTRING, conf_set_listen_address);