X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/cc200171d7c40be3b204460f9c14d5d37e771866..45be325cd2a8fcedc7fe71adbe70208d0d16aec2:/src/newconf.c diff --git a/src/newconf.c b/src/newconf.c index 825a6d3..5e72684 100644 --- a/src/newconf.c +++ b/src/newconf.c @@ -11,9 +11,8 @@ #include "newconf.h" #include "ircd_defs.h" -#include "sprintf_irc.h" #include "common.h" -#include "s_log.h" +#include "logger.h" #include "s_conf.h" #include "s_user.h" #include "s_newconf.h" @@ -28,6 +27,7 @@ #include "ircd.h" #include "snomask.h" #include "blacklist.h" +#include "sslproc.h" #define CF_TYPE(x) ((x) & CF_MTYPE) @@ -80,7 +80,7 @@ add_top_conf(const char *name, int (*sfunc) (struct TopConf *), { struct TopConf *tc; - tc = MyMalloc(sizeof(struct TopConf)); + tc = rb_malloc(sizeof(struct TopConf)); tc->tc_name = name; tc->tc_sfunc = sfunc; @@ -150,7 +150,7 @@ remove_top_conf(char *name) return -1; rb_dlinkDestroy(ptr, &conf_items); - MyFree(tc); + rb_free(tc); return 0; } @@ -191,7 +191,7 @@ conf_set_serverinfo_name(void *data) /* the ircd will exit() in main() if we dont set one */ if(strlen(s) <= HOSTLEN) - DupString(ServerInfo.name, (char *) data); + ServerInfo.name = rb_strdup((char *) data); } } @@ -222,14 +222,14 @@ conf_set_serverinfo_network_name(void *data) if((p = strchr((char *) data, ' '))) *p = '\0'; - MyFree(ServerInfo.network_name); - DupString(ServerInfo.network_name, (char *) data); + rb_free(ServerInfo.network_name); + ServerInfo.network_name = rb_strdup((char *) data); } static void conf_set_serverinfo_vhost(void *data) { - if(inetpton(AF_INET, (char *) data, &ServerInfo.ip.sin_addr) <= 0) + if(rb_inet_pton(AF_INET, (char *) data, &ServerInfo.ip.sin_addr) <= 0) { conf_report_error("Invalid netmask for server IPv4 vhost (%s)", (char *) data); return; @@ -241,8 +241,8 @@ conf_set_serverinfo_vhost(void *data) static void conf_set_serverinfo_vhost6(void *data) { -#ifdef IPV6 - if(inetpton(AF_INET6, (char *) data, &ServerInfo.ip6.sin6_addr) <= 0) +#ifdef RB_IPV6 + if(rb_inet_pton(AF_INET6, (char *) data, &ServerInfo.ip6.sin6_addr) <= 0) { conf_report_error("Invalid netmask for server IPv6 vhost (%s)", (char *) data); return; @@ -268,7 +268,7 @@ conf_set_modules_module(void *data) load_one_module((char *) data, 0); - MyFree(m_bn); + rb_free(m_bn); #else conf_report_error("Ignoring modules::module -- loadable module support not present."); #endif @@ -311,7 +311,6 @@ static struct mode_table oper_table[] = { {"remote", OPER_REMOTE }, {"kline", OPER_KLINE }, {"unkline", OPER_UNKLINE }, - {"gline", OPER_GLINE }, {"nick_changes", OPER_NICKS }, {"rehash", OPER_REHASH }, {"die", OPER_DIE }, @@ -333,7 +332,6 @@ static struct mode_table auth_table[] = { {"exceed_limit", CONF_FLAGS_NOLIMIT }, {"dnsbl_exempt", CONF_FLAGS_EXEMPTDNSBL }, {"kline_exempt", CONF_FLAGS_EXEMPTKLINE }, - {"gline_exempt", CONF_FLAGS_EXEMPTGLINE }, {"flood_exempt", CONF_FLAGS_EXEMPTFLOOD }, {"spambot_exempt", CONF_FLAGS_EXEMPTSPAMBOT }, {"shide_exempt", CONF_FLAGS_EXEMPTSHIDE }, @@ -351,6 +349,7 @@ static struct mode_table connect_table[] = { { "compressed", SERVER_COMPRESSED }, { "encrypted", SERVER_ENCRYPTED }, { "topicburst", SERVER_TB }, + { "ssl", SERVER_SSL }, { NULL, 0 }, }; @@ -374,6 +373,10 @@ static struct mode_table shared_table[] = { "kline", SHARED_PKLINE|SHARED_TKLINE }, { "xline", SHARED_PXLINE|SHARED_TXLINE }, { "resv", SHARED_PRESV|SHARED_TRESV }, + { "dline", SHARED_PDLINE|SHARED_TDLINE }, + { "tdline", SHARED_TDLINE }, + { "pdline", SHARED_PDLINE }, + { "undline", SHARED_UNDLINE }, { "tkline", SHARED_TKLINE }, { "unkline", SHARED_UNKLINE }, { "txline", SHARED_TXLINE }, @@ -481,7 +484,7 @@ conf_end_oper(struct TopConf *tc) if(strlen(conf_cur_block_name) > OPERNICKLEN) conf_cur_block_name[OPERNICKLEN] = '\0'; - DupString(yy_oper->name, conf_cur_block_name); + yy_oper->name = rb_strdup(conf_cur_block_name); } if(EmptyString(yy_oper->name)) @@ -509,11 +512,11 @@ conf_end_oper(struct TopConf *tc) { yy_tmpoper = ptr->data; - DupString(yy_tmpoper->name, yy_oper->name); + yy_tmpoper->name = rb_strdup(yy_oper->name); /* could be an rsa key instead.. */ if(!EmptyString(yy_oper->passwd)) - DupString(yy_tmpoper->passwd, yy_oper->passwd); + yy_tmpoper->passwd = rb_strdup(yy_oper->passwd); yy_tmpoper->flags = yy_oper->flags; yy_tmpoper->umodes = yy_oper->umodes; @@ -579,14 +582,14 @@ conf_set_oper_user(void *data) { *p++ = '\0'; - DupString(yy_tmpoper->username, host); - DupString(yy_tmpoper->host, p); + yy_tmpoper->username = rb_strdup(host); + yy_tmpoper->host = rb_strdup(p); } else { - DupString(yy_tmpoper->username, "*"); - DupString(yy_tmpoper->host, host); + yy_tmpoper->username = rb_strdup("*"); + yy_tmpoper->host = rb_strdup(host); } if(EmptyString(yy_tmpoper->username) || EmptyString(yy_tmpoper->host)) @@ -605,18 +608,18 @@ conf_set_oper_password(void *data) if(yy_oper->passwd) { memset(yy_oper->passwd, 0, strlen(yy_oper->passwd)); - MyFree(yy_oper->passwd); + rb_free(yy_oper->passwd); } - DupString(yy_oper->passwd, (char *) data); + yy_oper->passwd = rb_strdup((char *) data); } static void conf_set_oper_rsa_public_key_file(void *data) { #ifdef HAVE_LIBCRYPTO - MyFree(yy_oper->rsa_pubkey_file); - DupString(yy_oper->rsa_pubkey_file, (char *) data); + rb_free(yy_oper->rsa_pubkey_file); + yy_oper->rsa_pubkey_file = rb_strdup((char *) data); #else conf_report_error("Warning -- ignoring rsa_public_key_file (OpenSSL support not available"); #endif @@ -648,7 +651,7 @@ static int conf_end_class(struct TopConf *tc) { if(conf_cur_block_name != NULL) - DupString(yy_class->class_name, conf_cur_block_name); + yy_class->class_name = rb_strdup(conf_cur_block_name); if(EmptyString(yy_class->class_name)) { @@ -670,7 +673,7 @@ conf_set_class_ping_time(void *data) static void conf_set_class_cidr_bitlen(void *data) { -#ifdef IPV6 +#ifdef RB_IPV6 unsigned int maxsize = 128; #else unsigned int maxsize = 32; @@ -731,7 +734,7 @@ static char *listener_address; static int conf_begin_listen(struct TopConf *tc) { - MyFree(listener_address); + rb_free(listener_address); listener_address = NULL; return 0; } @@ -739,13 +742,15 @@ conf_begin_listen(struct TopConf *tc) static int conf_end_listen(struct TopConf *tc) { - MyFree(listener_address); + rb_free(listener_address); listener_address = NULL; 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) @@ -758,33 +763,45 @@ conf_set_listen_port(void *data) } 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 +conf_set_listen_port(void *data) +{ + conf_set_listen_port_both(data, 0); +} + +static void +conf_set_listen_sslport(void *data) +{ + conf_set_listen_port_both(data, 1); +} + static void conf_set_listen_address(void *data) { - MyFree(listener_address); - DupString(listener_address, data); + rb_free(listener_address); + listener_address = rb_strdup(data); } static int @@ -816,7 +833,7 @@ conf_end_auth(struct TopConf *tc) rb_dlink_node *next_ptr; if(EmptyString(yy_aconf->name)) - DupString(yy_aconf->name, "NOMATCH"); + yy_aconf->name = rb_strdup("NOMATCH"); /* didnt even get one ->host? */ if(EmptyString(yy_aconf->host)) @@ -836,13 +853,13 @@ conf_end_auth(struct TopConf *tc) yy_tmp = ptr->data; if(yy_aconf->passwd) - DupString(yy_tmp->passwd, yy_aconf->passwd); + yy_tmp->passwd = rb_strdup(yy_aconf->passwd); /* this will always exist.. */ - DupString(yy_tmp->name, yy_aconf->name); + yy_tmp->name = rb_strdup(yy_aconf->name); if(yy_aconf->className) - DupString(yy_tmp->className, yy_aconf->className); + yy_tmp->className = rb_strdup(yy_aconf->className); yy_tmp->flags = yy_aconf->flags; yy_tmp->port = yy_aconf->port; @@ -879,13 +896,13 @@ conf_set_auth_user(void *data) { *p++ = '\0'; - DupString(yy_tmp->user, data); - DupString(yy_tmp->host, p); + yy_tmp->user = rb_strdup(data); + yy_tmp->host = rb_strdup(p); } else { - DupString(yy_tmp->user, "*"); - DupString(yy_tmp->host, data); + yy_tmp->user = rb_strdup("*"); + yy_tmp->host = rb_strdup(data); } if(yy_aconf != yy_tmp) @@ -897,8 +914,8 @@ conf_set_auth_passwd(void *data) { if(yy_aconf->passwd) memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd)); - MyFree(yy_aconf->passwd); - DupString(yy_aconf->passwd, data); + rb_free(yy_aconf->passwd); + yy_aconf->passwd = rb_strdup(data); } static void @@ -957,8 +974,8 @@ conf_set_auth_spoof(void *data) return; } - MyFree(yy_aconf->name); - DupString(yy_aconf->name, data); + rb_free(yy_aconf->name); + yy_aconf->name = rb_strdup(data); yy_aconf->flags |= CONF_FLAGS_SPOOF_IP; } @@ -974,8 +991,8 @@ static void conf_set_auth_redir_serv(void *data) { yy_aconf->flags |= CONF_FLAGS_REDIR; - MyFree(yy_aconf->name); - DupString(yy_aconf->name, data); + rb_free(yy_aconf->name); + yy_aconf->name = rb_strdup(data); } static void @@ -990,8 +1007,8 @@ conf_set_auth_redir_port(void *data) static void conf_set_auth_class(void *data) { - MyFree(yy_aconf->className); - DupString(yy_aconf->className, data); + rb_free(yy_aconf->className); + yy_aconf->className = rb_strdup(data); } /* ok, shared_oper handles the stacking, shared_flags handles adding @@ -1038,11 +1055,11 @@ conf_set_shared_oper(void *data) return; } - DupString(yy_shared->server, args->v.string); + yy_shared->server = rb_strdup(args->v.string); args = args->next; } else - DupString(yy_shared->server, "*"); + yy_shared->server = rb_strdup("*"); if((args->type & CF_MTYPE) != CF_QSTRING) { @@ -1060,14 +1077,14 @@ conf_set_shared_oper(void *data) *p++ = '\0'; if(EmptyString(p)) - DupString(yy_shared->host, "*"); + yy_shared->host = rb_strdup("*"); else - DupString(yy_shared->host, p); + yy_shared->host = rb_strdup(p); if(EmptyString(username)) - DupString(yy_shared->username, "*"); + yy_shared->username = rb_strdup("*"); else - DupString(yy_shared->username, username); + yy_shared->username = rb_strdup(username); rb_dlinkAddAlloc(yy_shared, &yy_shared_list); yy_shared = NULL; @@ -1108,7 +1125,7 @@ conf_begin_connect(struct TopConf *tc) yy_server->flags |= SERVER_TB; if(conf_cur_block_name != NULL) - DupString(yy_server->name, conf_cur_block_name); + yy_server->name = rb_strdup(conf_cur_block_name); return 0; } @@ -1150,6 +1167,13 @@ conf_end_connect(struct TopConf *tc) yy_server->flags &= ~SERVER_COMPRESSED; } #endif + if(ServerConfCompressed(yy_server) && ServerConfSSL(yy_server)) + { + conf_report_error("Ignoring compressed for connect block %s -- " + "ssl and compressed are mutually exclusive (OpenSSL does its own compression)", + yy_server->name); + yy_server->flags &= ~SERVER_COMPRESSED; + } add_server_conf(yy_server); rb_dlinkAdd(yy_server, &yy_server->node, &server_conf_list); @@ -1161,8 +1185,8 @@ conf_end_connect(struct TopConf *tc) static void conf_set_connect_host(void *data) { - MyFree(yy_server->host); - DupString(yy_server->host, data); + rb_free(yy_server->host); + yy_server->host = rb_strdup(data); if (strchr(yy_server->host, ':')) yy_server->aftype = AF_INET6; } @@ -1170,7 +1194,7 @@ conf_set_connect_host(void *data) static void conf_set_connect_vhost(void *data) { - if(inetpton_sock(data, (struct sockaddr *)&yy_server->my_ipnum) <= 0) + if(rb_inet_pton_sock(data, (struct sockaddr *)&yy_server->my_ipnum) <= 0) { conf_report_error("Invalid netmask for server vhost (%s)", (char *) data); @@ -1186,10 +1210,10 @@ conf_set_connect_send_password(void *data) if(yy_server->spasswd) { memset(yy_server->spasswd, 0, strlen(yy_server->spasswd)); - MyFree(yy_server->spasswd); + rb_free(yy_server->spasswd); } - DupString(yy_server->spasswd, data); + yy_server->spasswd = rb_strdup(data); } static void @@ -1198,9 +1222,9 @@ conf_set_connect_accept_password(void *data) if(yy_server->passwd) { memset(yy_server->passwd, 0, strlen(yy_server->passwd)); - MyFree(yy_server->passwd); + rb_free(yy_server->passwd); } - DupString(yy_server->passwd, data); + yy_server->passwd = rb_strdup(data); } static void @@ -1221,7 +1245,7 @@ conf_set_connect_aftype(void *data) 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 @@ -1251,8 +1275,8 @@ conf_set_connect_hub_mask(void *data) yy_hub = make_remote_conf(); yy_hub->flags = CONF_HUB; - DupString(yy_hub->host, data); - DupString(yy_hub->server, yy_server->name); + yy_hub->host = rb_strdup(data); + yy_hub->server = rb_strdup(yy_server->name); rb_dlinkAdd(yy_hub, &yy_hub->node, &hubleaf_conf_list); } @@ -1267,16 +1291,16 @@ conf_set_connect_leaf_mask(void *data) yy_leaf = make_remote_conf(); yy_leaf->flags = CONF_LEAF; - DupString(yy_leaf->host, data); - DupString(yy_leaf->server, yy_server->name); + yy_leaf->host = rb_strdup(data); + yy_leaf->server = rb_strdup(yy_server->name); rb_dlinkAdd(yy_leaf, &yy_leaf->node, &hubleaf_conf_list); } static void conf_set_connect_class(void *data) { - MyFree(yy_server->class_name); - DupString(yy_server->class_name, data); + rb_free(yy_server->class_name); + yy_server->class_name = rb_strdup(data); } static void @@ -1291,8 +1315,8 @@ conf_set_exempt_ip(void *data) } yy_tmp = make_conf(); - DupString(yy_tmp->passwd, "*"); - DupString(yy_tmp->host, data); + yy_tmp->passwd = rb_strdup("*"); + yy_tmp->host = rb_strdup(data); yy_tmp->status = CONF_EXEMPTDLINE; add_conf_by_address(yy_tmp->host, CONF_EXEMPTDLINE, NULL, yy_tmp); } @@ -1324,7 +1348,7 @@ conf_set_cluster_name(void *data) free_remote_conf(yy_shared); yy_shared = make_remote_conf(); - DupString(yy_shared->server, data); + yy_shared->server = rb_strdup(data); rb_dlinkAddAlloc(yy_shared, &yy_cluster_list); yy_shared = NULL; @@ -1572,7 +1596,7 @@ conf_set_service_name(void *data) return; } - DupString(tmp, data); + tmp = rb_strdup(data); rb_dlinkAddAlloc(tmp, &service_list); if((target_p = find_server(NULL, tmp))) @@ -1582,10 +1606,10 @@ conf_set_service_name(void *data) static int conf_begin_alias(struct TopConf *tc) { - yy_alias = MyMalloc(sizeof(struct alias_entry)); + yy_alias = rb_malloc(sizeof(struct alias_entry)); if (conf_cur_block_name != NULL) - DupString(yy_alias->name, conf_cur_block_name); + yy_alias->name = rb_strdup(conf_cur_block_name); yy_alias->flags = 0; yy_alias->hits = 0; @@ -1603,7 +1627,7 @@ conf_end_alias(struct TopConf *tc) { conf_report_error("Ignoring alias -- must have a name."); - MyFree(yy_alias); + rb_free(yy_alias); return -1; } @@ -1612,7 +1636,7 @@ conf_end_alias(struct TopConf *tc) { conf_report_error("Ignoring alias -- must have a target."); - MyFree(yy_alias); + rb_free(yy_alias); return -1; } @@ -1631,7 +1655,7 @@ conf_set_alias_name(void *data) if (data == NULL || yy_alias == NULL) /* this shouldn't ever happen */ return; - DupString(yy_alias->name, data); + yy_alias->name = rb_strdup(data); } static void @@ -1640,25 +1664,25 @@ conf_set_alias_target(void *data) if (data == NULL || yy_alias == NULL) /* this shouldn't ever happen */ return; - DupString(yy_alias->target, data); + yy_alias->target = rb_strdup(data); } static void conf_set_blacklist_host(void *data) { - DupString(yy_blacklist_host, data); + yy_blacklist_host = rb_strdup(data); } static void conf_set_blacklist_reason(void *data) { - DupString(yy_blacklist_reason, data); + yy_blacklist_reason = rb_strdup(data); if (yy_blacklist_host && yy_blacklist_reason) { new_blacklist(yy_blacklist_host, yy_blacklist_reason); - MyFree(yy_blacklist_host); - MyFree(yy_blacklist_reason); + rb_free(yy_blacklist_host); + rb_free(yy_blacklist_reason); yy_blacklist_host = NULL; yy_blacklist_reason = NULL; } @@ -1674,7 +1698,7 @@ conf_report_error(const char *fmt, ...) char msg[IRCD_BUFSIZE + 1] = { 0 }; va_start(ap, fmt); - ircvsnprintf(msg, IRCD_BUFSIZE, fmt, ap); + rb_vsnprintf(msg, IRCD_BUFSIZE, fmt, ap); va_end(ap); if (testing_conf) @@ -1697,7 +1721,7 @@ conf_start_block(char *block, char *name) } if(name) - DupString(conf_cur_block_name, name); + conf_cur_block_name = rb_strdup(name); else conf_cur_block_name = NULL; @@ -1714,7 +1738,7 @@ conf_end_block(struct TopConf *tc) if(tc->tc_efunc) return tc->tc_efunc(tc); - MyFree(conf_cur_block_name); + rb_free(conf_cur_block_name); return 0; } @@ -1733,8 +1757,8 @@ conf_set_generic_string(void *data, int len, void *location) if(len && strlen(input) > len) input[len] = '\0'; - MyFree(*loc); - DupString(*loc, input); + rb_free(*loc); + *loc = rb_strdup(input); } int @@ -1776,9 +1800,9 @@ conf_call_set(struct TopConf *tc, char *item, conf_parm_t * value, int type) value->v.list->type = CF_STRING; if(cp->v.number == 1) - DupString(cp->v.string, "yes"); + cp->v.string = rb_strdup("yes"); else - DupString(cp->v.string, "no"); + cp->v.string = rb_strdup("no"); } /* maybe it's a CF_TIME and they passed CF_INT -- @@ -1846,7 +1870,7 @@ add_conf_item(const char *topconf, const char *name, int type, void (*func) (voi if((cf = find_conf_item(tc, name)) != NULL) return -1; - cf = MyMalloc(sizeof(struct ConfEntry)); + cf = rb_malloc(sizeof(struct ConfEntry)); cf->cf_name = name; cf->cf_type = type; @@ -1875,7 +1899,7 @@ remove_conf_item(const char *topconf, const char *name) return -1; rb_dlinkDestroy(ptr, &tc->tc_items); - MyFree(cf); + rb_free(cf); return 0; } @@ -1893,7 +1917,13 @@ static struct ConfEntry conf_serverinfo_table[] = { "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 }, + { "ssl_ca_cert", CF_QSTRING, NULL, 0, &ServerInfo.ssl_ca_cert }, + { "ssl_cert", CF_QSTRING, NULL, 0, &ServerInfo.ssl_cert }, + { "ssl_dh_params", CF_QSTRING, NULL, 0, &ServerInfo.ssl_dh_params }, + { "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 } }; @@ -1914,7 +1944,6 @@ static struct ConfEntry conf_log_table[] = { "fname_foperlog", CF_QSTRING, NULL, MAXPATHLEN, &ConfigFileEntry.fname_foperlog }, { "fname_serverlog", CF_QSTRING, NULL, MAXPATHLEN, &ConfigFileEntry.fname_serverlog }, { "fname_killlog", CF_QSTRING, NULL, MAXPATHLEN, &ConfigFileEntry.fname_killlog }, - { "fname_glinelog", CF_QSTRING, NULL, MAXPATHLEN, &ConfigFileEntry.fname_glinelog }, { "fname_klinelog", CF_QSTRING, NULL, MAXPATHLEN, &ConfigFileEntry.fname_klinelog }, { "fname_operspylog", CF_QSTRING, NULL, MAXPATHLEN, &ConfigFileEntry.fname_operspylog }, { "fname_ioerrorlog", CF_QSTRING, NULL, MAXPATHLEN, &ConfigFileEntry.fname_ioerrorlog }, @@ -2012,10 +2041,6 @@ static struct ConfEntry conf_general_table[] = { "disable_auth", CF_YESNO, NULL, 0, &ConfigFileEntry.disable_auth }, { "dots_in_ident", CF_INT, NULL, 0, &ConfigFileEntry.dots_in_ident }, { "failed_oper_notice", CF_YESNO, NULL, 0, &ConfigFileEntry.failed_oper_notice }, - { "glines", CF_YESNO, NULL, 0, &ConfigFileEntry.glines }, - { "gline_min_cidr", CF_INT, NULL, 0, &ConfigFileEntry.gline_min_cidr }, - { "gline_min_cidr6", CF_INT, NULL, 0, &ConfigFileEntry.gline_min_cidr6 }, - { "gline_time", CF_TIME, NULL, 0, &ConfigFileEntry.gline_time }, { "global_snotices", CF_YESNO, NULL, 0, &ConfigFileEntry.global_snotices }, { "hide_spoof_ips", CF_YESNO, NULL, 0, &ConfigFileEntry.hide_spoof_ips }, { "dline_with_reason", CF_YESNO, NULL, 0, &ConfigFileEntry.dline_with_reason }, @@ -2099,6 +2124,7 @@ newconf_init() 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);