X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/b1d6fa8cd26295c1f68129d402ba7f1c597fb9e7..a917e9baf322547871ac5e102d97005d95ec8eb5:/src/ircd.c diff --git a/src/ircd.c b/src/ircd.c index 1a8efa1..6a8a3d4 100644 --- a/src/ircd.c +++ b/src/ircd.c @@ -66,6 +66,7 @@ #include "serno.h" #include "sslproc.h" #include "chmode.h" +#include "privilege.h" /* /quote set variables */ struct SetOptions GlobalSetOptions; @@ -188,7 +189,7 @@ init_sys(void) if(maxconnections <= MAX_BUFFER) { fprintf(stderr, "ERROR: Shell FD limits are too low.\n"); - fprintf(stderr, "ERROR: ircd-ratbox reserves %d FDs, shell limits must be above this\n", MAX_BUFFER); + fprintf(stderr, "ERROR: charybdis reserves %d FDs, shell limits must be above this\n", MAX_BUFFER); exit(EXIT_FAILURE); } return; @@ -447,12 +448,13 @@ setup_corefile(void) static void ircd_log_cb(const char *str) { - ilog(L_MAIN, "%s", str); + ilog(L_MAIN, "libratbox reports: %s", str); } static void ircd_restart_cb(const char *str) { + inotice("libratbox has called the restart callback: %s", str); restart(str); } @@ -469,9 +471,11 @@ ircd_die_cb(const char *str) if(str != NULL) { /* Try to get the message out to currently logged in operators. */ - sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "Server panic! %s", str); - inotice("server panic: %s", str); + sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "libratbox has called the die callback..aborting: %s", str); + inotice("libratbox has called the die callback..aborting: %s", str); } + else + inotice("libratbox has called the die callback..aborting"); unlink(pidFileName); exit(EXIT_FAILURE); @@ -541,6 +545,27 @@ main(int argc, char *argv[]) return -1; } + init_sys(); + + ConfigFileEntry.dpath = DPATH; + ConfigFileEntry.configfile = CPATH; /* Server configuration file */ + ConfigFileEntry.klinefile = KPATH; /* Server kline file */ + ConfigFileEntry.dlinefile = DLPATH; /* dline file */ + ConfigFileEntry.xlinefile = XPATH; + ConfigFileEntry.resvfile = RESVPATH; + ConfigFileEntry.connect_timeout = 30; /* Default to 30 */ + + umask(077); /* better safe than sorry --SRB */ + + myargv = argv; + parseargs(&argc, &argv, myopts); + + if(chdir(ConfigFileEntry.dpath)) + { + fprintf(stderr, "Unable to chdir to %s: %s\n", ConfigFileEntry.dpath, strerror(errno)); + exit(EXIT_FAILURE); + } + rb_set_time(); /* @@ -570,29 +595,14 @@ main(int argc, char *argv[]) /* Initialise the channel capability usage counts... */ init_chcap_usage_counts(); - ConfigFileEntry.dpath = DPATH; - ConfigFileEntry.configfile = CPATH; /* Server configuration file */ - ConfigFileEntry.klinefile = KPATH; /* Server kline file */ - ConfigFileEntry.dlinefile = DLPATH; /* dline file */ - ConfigFileEntry.xlinefile = XPATH; - ConfigFileEntry.resvfile = RESVPATH; - ConfigFileEntry.connect_timeout = 30; /* Default to 30 */ - myargv = argv; - umask(077); /* better safe than sorry --SRB */ - - parseargs(&argc, &argv, myopts); - if(printVersion) { printf("ircd: version %s(%s)\n", ircd_version, serno); + printf("ircd: %s\n", rb_lib_version()); exit(EXIT_SUCCESS); } - if(chdir(ConfigFileEntry.dpath)) - { - fprintf(stderr, "Unable to chdir to %s: %s\n", ConfigFileEntry.dpath, strerror(errno)); - exit(EXIT_FAILURE); - } + setup_signals(); @@ -617,13 +627,21 @@ main(int argc, char *argv[]) if(!server_state_foreground) make_daemon(); inotice("starting %s ...", ircd_version); + inotice("%s", rb_lib_version()); } /* Init the event subsystem */ - init_sys(); rb_lib_init(ircd_log_cb, ircd_restart_cb, ircd_die_cb, !server_state_foreground, maxconnections, DNODE_HEAP_SIZE, FD_HEAP_SIZE); rb_linebuf_init(LINEBUF_HEAP_SIZE); + if(ConfigFileEntry.use_egd && (ConfigFileEntry.egdpool_path != NULL)) + { + rb_init_prng(ConfigFileEntry.egdpool_path, RB_PRNG_EGD); + } else + rb_init_prng(NULL, RB_PRNG_DEFAULT); + + seed_random(NULL); + init_main_logfile(); newconf_init(); init_s_conf(); @@ -647,6 +665,7 @@ main(int argc, char *argv[]) #endif init_auth(); /* Initialise the auth code */ init_resolver(); /* Needs to be setup before the io loop */ + privilegeset_set_new("default", "", 0); if (testing_conf) fprintf(stderr, "\nBeginning config test\n");