* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
- *
- * $Id: s_conf.c 3550 2007-08-09 06:47:26Z nenolod $
*/
#include "stdinc.h"
#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;
* 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
switch (i)
{
- case SOCKET_ERROR:
+ case I_SOCKET_ERROR:
exit_client(client_p, source_p, &me, "Socket Error");
break;
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 */
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
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;
* 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");
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));
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();
}
* of values later, put them in validate_conf().
*/
-#define YES 1
-#define NO 0
-#define UNSET -1
-
static void
set_default_conf(void)
{
ServerInfo.specific_ipv6_vhost = 0;
#endif
- /* Don't reset hub, as that will break lazylinks */
- /* ServerInfo.hub = NO; */
AdminInfo.name = NULL;
AdminInfo.email = NULL;
AdminInfo.description = NULL;
ConfigFileEntry.sasl_service = NULL;
ConfigFileEntry.default_umodes = UMODE_INVISIBLE;
- ConfigFileEntry.failed_oper_notice = YES;
- ConfigFileEntry.anti_nick_flood = NO;
- ConfigFileEntry.disable_fake_channels = NO;
+ ConfigFileEntry.failed_oper_notice = true;
+ ConfigFileEntry.anti_nick_flood = false;
+ ConfigFileEntry.disable_fake_channels = false;
ConfigFileEntry.max_nick_time = 20;
ConfigFileEntry.max_nick_changes = 5;
ConfigFileEntry.max_accept = 20;
ConfigFileEntry.max_monitor = 60;
ConfigFileEntry.nick_delay = 900; /* 15 minutes */
- ConfigFileEntry.target_change = YES;
+ ConfigFileEntry.target_change = true;
ConfigFileEntry.anti_spam_exit_message_time = 0;
ConfigFileEntry.ts_warn_delta = TS_WARN_DELTA_DEFAULT;
ConfigFileEntry.ts_max_delta = TS_MAX_DELTA_DEFAULT;
- ConfigFileEntry.client_exit = YES;
- ConfigFileEntry.dline_with_reason = YES;
- ConfigFileEntry.kline_with_reason = YES;
+ ConfigFileEntry.client_exit = true;
+ ConfigFileEntry.dline_with_reason = true;
+ ConfigFileEntry.kline_with_reason = true;
ConfigFileEntry.kline_delay = 0;
- ConfigFileEntry.warn_no_nline = YES;
- ConfigFileEntry.non_redundant_klines = YES;
- ConfigFileEntry.stats_e_disabled = NO;
- ConfigFileEntry.stats_o_oper_only = NO;
+ ConfigFileEntry.warn_no_nline = true;
+ ConfigFileEntry.non_redundant_klines = true;
+ ConfigFileEntry.stats_e_disabled = false;
+ ConfigFileEntry.stats_o_oper_only = false;
ConfigFileEntry.stats_k_oper_only = 1; /* masked */
ConfigFileEntry.stats_i_oper_only = 1; /* masked */
- ConfigFileEntry.stats_P_oper_only = NO;
- ConfigFileEntry.stats_c_oper_only = NO;
- ConfigFileEntry.stats_y_oper_only = NO;
- ConfigFileEntry.stats_h_oper_only = NO;
- ConfigFileEntry.map_oper_only = YES;
- ConfigFileEntry.operspy_admin_only = NO;
+ ConfigFileEntry.stats_P_oper_only = false;
+ ConfigFileEntry.stats_c_oper_only = false;
+ ConfigFileEntry.stats_y_oper_only = false;
+ ConfigFileEntry.stats_h_oper_only = false;
+ ConfigFileEntry.map_oper_only = true;
+ ConfigFileEntry.operspy_admin_only = false;
ConfigFileEntry.pace_wait = 10;
ConfigFileEntry.caller_id_wait = 60;
ConfigFileEntry.pace_wait_simple = 1;
- ConfigFileEntry.short_motd = NO;
- ConfigFileEntry.no_oper_flood = NO;
+ ConfigFileEntry.short_motd = false;
+ ConfigFileEntry.no_oper_flood = false;
ConfigFileEntry.fname_userlog = NULL;
ConfigFileEntry.fname_fuserlog = NULL;
ConfigFileEntry.fname_operlog = NULL;
ConfigFileEntry.fname_klinelog = NULL;
ConfigFileEntry.fname_operspylog = NULL;
ConfigFileEntry.fname_ioerrorlog = NULL;
- ConfigFileEntry.hide_spoof_ips = YES;
+ ConfigFileEntry.hide_spoof_ips = true;
ConfigFileEntry.hide_error_messages = 1;
ConfigFileEntry.dots_in_ident = 0;
ConfigFileEntry.max_targets = MAX_TARGETS_DEFAULT;
- ConfigFileEntry.use_whois_actually = YES;
- ConfigFileEntry.burst_away = NO;
- ConfigFileEntry.collision_fnc = YES;
- ConfigFileEntry.resv_fnc = YES;
- ConfigFileEntry.global_snotices = YES;
- ConfigFileEntry.operspy_dont_care_user_info = NO;
- ConfigFileEntry.use_propagated_bans = YES;
+ ConfigFileEntry.use_whois_actually = true;
+ ConfigFileEntry.burst_away = false;
+ ConfigFileEntry.collision_fnc = true;
+ ConfigFileEntry.resv_fnc = true;
+ ConfigFileEntry.global_snotices = true;
+ ConfigFileEntry.operspy_dont_care_user_info = false;
+ ConfigFileEntry.use_propagated_bans = true;
ConfigFileEntry.max_ratelimit_tokens = 30;
ConfigFileEntry.away_interval = 30;
ConfigFileEntry.oper_only_umodes = UMODE_SERVNOTICE;
ConfigFileEntry.oper_snomask = SNO_GENERAL;
- ConfigChannel.use_except = YES;
- ConfigChannel.use_invex = YES;
- ConfigChannel.use_forward = YES;
- ConfigChannel.use_knock = YES;
+ ConfigChannel.use_except = true;
+ ConfigChannel.use_invex = true;
+ ConfigChannel.use_forward = true;
+ ConfigChannel.use_knock = true;
ConfigChannel.knock_delay = 300;
ConfigChannel.knock_delay_channel = 60;
ConfigChannel.max_chans_per_user = 15;
ConfigChannel.max_chans_per_user_large = 60;
ConfigChannel.max_bans = 25;
ConfigChannel.max_bans_large = 500;
- ConfigChannel.only_ascii_channels = NO;
- ConfigChannel.burst_topicwho = NO;
- ConfigChannel.kick_on_split_riding = NO;
+ ConfigChannel.only_ascii_channels = false;
+ ConfigChannel.burst_topicwho = false;
+ ConfigChannel.kick_on_split_riding = false;
ConfigChannel.default_split_user_count = 15000;
ConfigChannel.default_split_server_count = 10;
- ConfigChannel.no_join_on_split = NO;
- ConfigChannel.no_create_on_split = YES;
- ConfigChannel.resv_forcepart = YES;
- ConfigChannel.channel_target_change = YES;
- ConfigChannel.disable_local_channels = NO;
+ ConfigChannel.no_join_on_split = false;
+ ConfigChannel.no_create_on_split = true;
+ ConfigChannel.resv_forcepart = true;
+ ConfigChannel.channel_target_change = true;
+ ConfigChannel.disable_local_channels = false;
ConfigChannel.displayed_usercount = 3;
ConfigChannel.autochanmodes = MODE_TOPICLIMIT | MODE_NOPRIVMSGS;
ConfigFileEntry.hide_opers_in_whois = 0;
if (!alias_dict)
- alias_dict = irc_dictionary_create("alias", strcasecmp);
+ alias_dict = rb_dictionary_create("alias", strcasecmp);
}
-#undef YES
-#undef NO
-
/*
* read_conf()
*
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);
}
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");
if(MyOper(client_p))
{
- rb_snprintf(buffer, sizeof(buffer), "%s!%s@%s{%s}",
+ snprintf(buffer, sizeof(buffer), "%s!%s@%s{%s}",
client_p->name, client_p->username,
client_p->host, client_p->localClient->opername);
return buffer;
}
- rb_snprintf(buffer, sizeof(buffer), "%s!%s@%s{%s}",
+ snprintf(buffer, sizeof(buffer), "%s!%s@%s{%s}",
client_p->name, client_p->username,
client_p->host, client_p->servptr->name);
return buffer;
if (aconf->flags & CONF_FLAGS_TEMPORARY &&
(aconf->status == CONF_KILL || aconf->status == CONF_DLINE))
- rb_snprintf(reasonbuf, sizeof reasonbuf,
+ snprintf(reasonbuf, sizeof reasonbuf,
"Temporary %c-line %d min. - ",
aconf->status == CONF_DLINE ? 'D' : 'K',
(int)((aconf->hold - aconf->created) / 60));
*oper_reason = NULL;
else
{
- rb_snprintf(operreasonbuf, sizeof operreasonbuf, "%s%s(%s)",
+ snprintf(operreasonbuf, sizeof operreasonbuf, "%s%s(%s)",
EmptyString(aconf->spasswd) ? "" : aconf->spasswd,
EmptyString(aconf->spasswd) ? "" : " ",
aconf->info.oper);
/*
* read_conf_files
*
- * inputs - cold start YES or NO
+ * inputs - cold start
* output - none
* side effects - read all conf files needed, ircd.conf kline.conf etc.
*/
void
-read_conf_files(int cold)
+read_conf_files(bool cold)
{
const char *filename;
* 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;
/* remove any aliases... -- nenolod */
if (alias_dict != NULL)
{
- irc_dictionary_destroy(alias_dict, free_alias_cb, NULL);
+ rb_dictionary_destroy(alias_dict, free_alias_cb, NULL);
alias_dict = NULL;
}
- destroy_blacklists();
+ del_blacklist_all();
privilegeset_mark_all_illegal();