static int prefork_pre_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp) { static int restart_num = 0; int no_detach, debug, foreground; apr_status_t rv; mpm_state = AP_MPMQ_STARTING; debug = ap_exists_config_define("DEBUG"); if (debug) { foreground = one_process = 1; no_detach = 0; } else { no_detach = ap_exists_config_define("NO_DETACH"); one_process = ap_exists_config_define("ONE_PROCESS"); foreground = ap_exists_config_define("FOREGROUND"); } /* sigh, want this only the second time around */ if (restart_num++ == 1) { is_graceful = 0; if (!one_process && !foreground) { rv = apr_proc_detach(no_detach ? APR_PROC_DETACH_FOREGROUND : APR_PROC_DETACH_DAEMONIZE); if (rv != APR_SUCCESS) { ap_log_error(APLOG_MARK, APLOG_CRIT, rv, NULL, "apr_proc_detach failed"); return HTTP_INTERNAL_SERVER_ERROR; } } parent_pid = ap_my_pid = getpid(); } unixd_pre_config(ptemp); ap_listen_pre_config(); ap_daemons_to_start = DEFAULT_START_DAEMON; ap_daemons_min_free = DEFAULT_MIN_FREE_DAEMON; ap_daemons_max_free = DEFAULT_MAX_FREE_DAEMON; ap_daemons_limit = server_limit; ap_pid_fname = DEFAULT_PIDLOG; ap_lock_fname = DEFAULT_LOCKFILE; ap_max_requests_per_child = DEFAULT_MAX_REQUESTS_PER_CHILD; ap_extended_status = 0; #ifdef AP_MPM_WANT_SET_MAX_MEM_FREE ap_max_mem_free = APR_ALLOCATOR_MAX_FREE_UNLIMITED; #endif apr_cpystrn(ap_coredump_dir, ap_server_root, sizeof(ap_coredump_dir)); return OK; }
static int simple_pre_config(apr_pool_t * pconf, apr_pool_t * plog, apr_pool_t * ptemp) { int run_debug; apr_status_t rv; simple_core_t *sc; /* this is our first 'real' entry point, so setup everything here. */ rv = simple_core_init_once(); if (rv) { ap_log_error(APLOG_MARK, APLOG_CRIT, rv, NULL, APLOGNO(00257) "simple_core_init_once: Fatal Error Encountered"); return HTTP_INTERNAL_SERVER_ERROR; } sc = simple_core_get(); sc->restart_num++; run_debug = ap_exists_config_define("DEBUG"); if (run_debug) { sc->run_foreground = 1; sc->run_single_process = 1; } else { sc->run_foreground = ap_exists_config_define("FOREGROUND"); } if (sc->restart_num == 2) { if (sc->run_foreground) { rv = apr_proc_detach(APR_PROC_DETACH_FOREGROUND); } else { rv = apr_proc_detach(APR_PROC_DETACH_DAEMONIZE); } if (rv) { ap_log_error(APLOG_MARK, APLOG_CRIT, rv, NULL, APLOGNO(00258) "simple_pre_config: apr_proc_detach(%s) failed", sc->run_foreground ? "FOREGROUND" : "DAEMONIZE"); return HTTP_INTERNAL_SERVER_ERROR; } } return OK; }
static void embperl_ApacheInit (server_rec *s, apr_pool_t *p) #endif { #ifndef APACHE2 int rc; #endif dTHX ; #ifndef APACHE2 embperl_ApacheInitUnload (p) ; #endif bApDebug |= ap_exists_config_define("EMBPERL_APDEBUG") ; if (bApDebug) ap_log_error (APLOG_MARK, APLOG_WARNING | APLOG_NOERRNO, APLOG_STATUSCODE NULL, "EmbperlDebug: ApacheInit [%d/%d]\n", getpid(), gettid()) ; #ifdef APACHE2 bApInit = 1 ; return APR_SUCCESS ; #else ap_add_version_component ("Embperl/"VERSION) ; if ((rc = embperl_Init (aTHX_ NULL, NULL, s)) != ok) { ap_log_error (APLOG_MARK, APLOG_ERR | APLOG_NOERRNO, APLOG_STATUSCODE NULL, "Initialization of Embperl failed (#%d)\n", rc) ; } bApInit = 1 ; #endif }
void embperl_ApacheAddModule (void) { bApDebug |= ap_exists_config_define("EMBPERL_APDEBUG") ; #ifdef APACHE2 if (bApDebug) ap_log_error (APLOG_MARK, APLOG_WARNING | APLOG_NOERRNO, APLOG_STATUSCODE NULL, "EmbperlDebug: Perl part initialization start [%d/%d]\n", getpid(), gettid()) ; return ; #else if (!ap_find_linked_module("mod_embperl.c")) { apr_pool_t * pool ; if (bApDebug) ap_log_error (APLOG_MARK, APLOG_WARNING | APLOG_NOERRNO, APLOG_STATUSCODE NULL, "EmbperlDebug: About to add mod_embperl.c as dynamic module [%d/%d]\n", getpid(), gettid()) ; ap_add_module (&embperl_module) ; pool = perl_get_startup_pool () ; embperl_ApacheInitUnload (pool) ; } else if (bApDebug) ap_log_error (APLOG_MARK, APLOG_WARNING | APLOG_NOERRNO, APLOG_STATUSCODE NULL, "EmbperlDebug: mod_embperl.c already added as dynamic module [%d/%d]\n", getpid(), gettid()) ; #endif }
static int netware_pre_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp) { int debug; char *addrname = NULL; mpm_state = AP_MPMQ_STARTING; debug = ap_exists_config_define("DEBUG"); is_graceful = 0; ap_my_pid = getpid(); addrname = getaddressspacename (NULL, NULL); if (addrname) { ap_my_addrspace = apr_pstrdup (p, addrname); free (addrname); } #ifndef USE_WINSOCK /* The following call has been moved to the mod_nw_ssl pre-config handler */ ap_listen_pre_config(); #endif ap_threads_to_start = DEFAULT_START_THREADS; ap_threads_min_free = DEFAULT_MIN_FREE_THREADS; ap_threads_max_free = DEFAULT_MAX_FREE_THREADS; ap_threads_limit = HARD_THREAD_LIMIT; ap_max_requests_per_child = DEFAULT_MAX_REQUESTS_PER_CHILD; ap_extended_status = 0; ap_thread_stacksize = DEFAULT_THREAD_STACKSIZE; #ifdef AP_MPM_WANT_SET_MAX_MEM_FREE ap_max_mem_free = APR_ALLOCATOR_MAX_FREE_UNLIMITED; #endif return OK; }
static int mpmt_os2_pre_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp) { one_process = ap_exists_config_define("ONE_PROCESS") || ap_exists_config_define("DEBUG"); is_graceful = 0; ap_listen_pre_config(); ap_daemons_to_start = DEFAULT_START_DAEMON; ap_thread_limit = HARD_THREAD_LIMIT; ap_pid_fname = DEFAULT_PIDLOG; ap_max_requests_per_child = DEFAULT_MAX_REQUESTS_PER_CHILD; ap_extended_status = 0; ap_min_spare_threads = DEFAULT_MIN_SPARE_THREAD; ap_max_spare_threads = DEFAULT_MAX_SPARE_THREAD; #ifdef AP_MPM_WANT_SET_MAX_MEM_FREE ap_max_mem_free = APR_ALLOCATOR_MAX_FREE_UNLIMITED; #endif return OK; }
static PyObject *exists_config_define(PyObject *self, PyObject *args) { char *name = NULL; if (! PyArg_ParseTuple(args, "s", &name)) return NULL; if(ap_exists_config_define(name)) { Py_INCREF(Py_True); return Py_True; } else { Py_INCREF(Py_False); return Py_False; } }
AP_DECLARE(int) unixd_setup_child(void) { if (set_group_privs()) { return -1; } #ifdef MPE /* Only try to switch if we're running as MANAGER.SYS */ if (geteuid() == 1 && unixd_config.user_id > 1) { GETPRIVMODE(); if (setuid(unixd_config.user_id) == -1) { GETUSERMODE(); ap_log_error(APLOG_MARK, APLOG_ALERT, errno, NULL, "setuid: unable to change to uid: %ld", (long) unixd_config.user_id); exit(1); } GETUSERMODE(); } #else /* Only try to switch if we're running as root */ if (!geteuid() && ( #ifdef _OSD_POSIX os_init_job_environment(NULL, unixd_config.user_name, ap_exists_config_define("DEBUG")) != 0 || #endif setuid(unixd_config.user_id) == -1)) { ap_log_error(APLOG_MARK, APLOG_ALERT, errno, NULL, "setuid: unable to change to uid: %ld", (long) unixd_config.user_id); return -1; } #if defined(HAVE_PRCTL) && defined(PR_SET_DUMPABLE) /* this applies to Linux 2.4+ */ #ifdef AP_MPM_WANT_SET_COREDUMPDIR if (ap_coredumpdir_configured) { if (prctl(PR_SET_DUMPABLE, 1)) { ap_log_error(APLOG_MARK, APLOG_ALERT, errno, NULL, "set dumpable failed - this child will not coredump" " after software errors"); } } #endif #endif #endif return 0; }
static void *embperl_create_server_config(apr_pool_t * p, server_rec *s) { tApacheDirConfig *cfg = (tApacheDirConfig *) apr_pcalloc(p, sizeof(tApacheDirConfig)); bApDebug |= ap_exists_config_define("EMBPERL_APDEBUG") ; embperl_ApacheInitUnload (p) ; embperl_DefaultReqConfig (&cfg -> ReqConfig) ; embperl_DefaultAppConfig (&cfg -> AppConfig) ; embperl_DefaultComponentConfig (&cfg -> ComponentConfig) ; cfg -> bUseEnv = -1 ; if (bApDebug) ap_log_error (APLOG_MARK, APLOG_WARNING | APLOG_NOERRNO, APLOG_STATUSCODE NULL, "EmbperlDebug: create_server_config (0x%p) [%d/%d]\n", cfg, getpid(), gettid()) ; return cfg; }
static void dump_loaded_modules(apr_pool_t *p, server_rec *s) { ap_module_symbol_t *modie; ap_module_symbol_t *modi; so_server_conf *sconf; int i; apr_file_t *out = NULL; if (!ap_exists_config_define("DUMP_MODULES")) { return; } apr_file_open_stderr(&out, p); apr_file_printf(out, "Loaded Modules:\n"); sconf = (so_server_conf *)ap_get_module_config(s->module_config, &so_module); for (i = 0; ; i++) { modi = &ap_prelinked_module_symbols[i]; if (modi->name != NULL) { apr_file_printf(out, " %s (static)\n", modi->name); } else { break; } } modie = (ap_module_symbol_t *)sconf->loaded_modules->elts; for (i = 0; i < sconf->loaded_modules->nelts; i++) { modi = &modie[i]; if (modi->name != NULL) { apr_file_printf(out, " %s (shared)\n", modi->name); } } }
void ssl_hook_ConfigTest(apr_pool_t *pconf, server_rec *s) { if (!ap_exists_config_define("DUMP_CERTS")) { return; } /* Dump the filenames of all configured server certificates to * stdout. */ while (s) { SSLSrvConfigRec *sc = mySrvConfig(s); if (sc && sc->server && sc->server->pks) { modssl_pk_server_t *const pks = sc->server->pks; int i; for (i = 0; (i < SSL_AIDX_MAX) && pks->cert_files[i]; i++) { printf("%s\n", pks->cert_files[i]); } } s = s->next; } }