48#if APR_MAJOR_VERSION < 2
51#define APR_WANT_STRFUNC
80module AP_MODULE_DECLARE_DATA info_module;
153 ap_rprintf(
r,
"<dd><tt><strong>In file: %s</strong></tt></dd>\n",
255 if (
dir->first_child !=
NULL) {
275 void (*pFunc) (void);
353#if AP_ENABLE_EXCEPTION_HOOK
371 for (
i = 0;
i <
hooks->nelts;
i++) {
397 ap_rputs(
"<dt><strong>Request Phase Participation:</strong>\n",
r);
434 ap_rputs(
"<h2><a name=\"server\">Server Settings</a></h2>",
r);
436 "<dl><dt><strong>Server Version:</strong> "
437 "<font size=\"+1\"><tt>%s</tt></font></dt>\n",
440 "<dt><strong>Server Built:</strong> "
441 "<font size=\"+1\"><tt>%s</tt></font></dt>\n",
444 "<dt><strong>Server loaded APR Version:</strong> "
447 "<dt><strong>Compiled with APR Version:</strong> "
449#if APR_MAJOR_VERSION < 2
451 "<dt><strong>Server loaded APU Version:</strong> "
454 "<dt><strong>Compiled with APU Version:</strong> "
458 "<dt><strong>Server loaded PCRE Version:</strong> "
461 "<dt><strong>Compiled with PCRE Version:</strong> "
464 "<dt><strong>Module Magic Number:</strong> "
468 "<dt><strong>Hostname/port:</strong> "
469 "<tt>%s:%u</tt></dt>\n",
473 "<dt><strong>Timeouts:</strong> "
474 "<tt>connection: %d "
475 "keep-alive: %d</tt></dt>",
481 ap_rprintf(
r,
"<dt><strong>MPM Name:</strong> <tt>%s</tt></dt>\n",
484 "<dt><strong>MPM Information:</strong> "
485 "<tt>Max Daemons: %d Threaded: %s Forked: %s</tt></dt>\n",
488 "<dt><strong>Server Architecture:</strong> "
489 "<tt>%ld-bit</tt></dt>\n", 8 * (
long)
sizeof(
void *));
491 "<dt><strong>Server Root:</strong> "
494 "<dt><strong>Config File:</strong> "
497 ap_rputs(
"<dt><strong>Server Built With:</strong>\n"
498 "<tt style=\"white-space: pre;\">\n",
r);
504#ifdef BIG_SECURITY_HOLE
508#ifdef SECURITY_HOLE_PASS_AUTHORIZATION
509 ap_rputs(
" -D SECURITY_HOLE_PASS_AUTHORIZATION\n",
r);
520#if APR_FILE_BASED_SHM
541 ap_rputs(
" -D APR_HAVE_IPV6 (IPv4-mapped addresses ",
r);
542#ifdef AP_ENABLE_V4_MAPPED
549#if APR_USE_FLOCK_SERIALIZE
550 ap_rputs(
" -D APR_USE_FLOCK_SERIALIZE\n",
r);
553#if APR_USE_SYSVSEM_SERIALIZE
554 ap_rputs(
" -D APR_USE_SYSVSEM_SERIALIZE\n",
r);
557#if APR_USE_POSIXSEM_SERIALIZE
558 ap_rputs(
" -D APR_USE_POSIXSEM_SERIALIZE\n",
r);
561#if APR_USE_FCNTL_SERIALIZE
562 ap_rputs(
" -D APR_USE_FCNTL_SERIALIZE\n",
r);
565#if APR_USE_PROC_PTHREAD_SERIALIZE
566 ap_rputs(
" -D APR_USE_PROC_PTHREAD_SERIALIZE\n",
r);
568#if APR_PROCESS_LOCK_IS_GLOBAL
569 ap_rputs(
" -D APR_PROCESS_LOCK_IS_GLOBAL\n",
r);
572#ifdef SINGLE_LISTEN_UNSERIALIZED_ACCEPT
573 ap_rputs(
" -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT\n",
r);
576#if APR_HAS_OTHER_CHILD
577 ap_rputs(
" -D APR_HAS_OTHER_CHILD\n",
r);
580#ifdef AP_HAVE_RELIABLE_PIPED_LOGS
581 ap_rputs(
" -D AP_HAVE_RELIABLE_PIPED_LOGS\n",
r);
591#if APR_CHARSET_EBCDIC
595#ifdef NEED_HASHBANG_EMUL
612#ifdef DEFAULT_SCOREBOARD
616#ifdef DEFAULT_ERRORLOG
621#ifdef AP_TYPES_CONFIG_FILE
625#ifdef SERVER_CONFIG_FILE
653 for (
i = 0;
i <
hooks->nelts;
i++) {
655 " %02d <a href=\"%c%s\">%s</a> <br/>",
656 elts[
i].
nOrder,
qs, elts[
i].szName, elts[
i].szName);
664 ap_rputs(
"<h2><a name=\"startup_hooks\">Startup Hooks</a></h2>\n<dl>",
r);
667 ap_rprintf(
r,
"<dt><strong>%s:</strong>\n <br /><tt>\n",
674 (
"</dl>\n<hr />\n<h2><a name=\"request_hooks\">Request Hooks</a></h2>\n<dl>",
678 ap_rprintf(
r,
"<dt><strong>%s:</strong>\n <br /><tt>\n",
685 (
"</dl>\n<hr />\n<h2><a name=\"other_hooks\">Other Hooks</a></h2>\n<dl>",
689 ap_rprintf(
r,
"<dt><strong>%s:</strong>\n <br /><tt>\n",
703 int ret =
strcmp(
a->provider_group,
b->provider_group);
705 ret =
strcmp(
a->provider_version,
b->provider_version);
712 return strcmp(
a->provider_name,
b->provider_name);
726 ap_rputs(
"<h2><a name=\"providers\">Providers</a></h2>\n<dl>",
r);
734 ap_rprintf(
r,
"<dt><strong>%s</strong> (version <tt>%s</tt>):"
741 for (j = 0; j <
names->nelts; j++) {
753 const module * const *a = a_;
754 const module * const *b = b_;
755 return strcmp((*a)->name, (*b)->name);
761 module *modp, **entry;
773 const char *more_info;
790 "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"
792 " <title>Server Information</title>\n" "</head>\n",
r);
793 ap_rputs(
"<body><h1 style=\"text-align: center\">"
794 "Apache Server Information</h1>\n",
r);
797 ap_rputs(
"<dl><dt><tt>Subpages:<br />",
r);
798 ap_rputs(
"<a href=\"?config\">Configuration Files</a>, "
799 "<a href=\"?server\">Server Settings</a>, "
800 "<a href=\"?list\">Module List</a>, "
801 "<a href=\"?hooks\">Active Hooks</a>, "
802 "<a href=\"?providers\">Available Providers</a>",
r);
805 ap_rputs(
"<dl><dt><tt>Sections:<br />",
r);
806 ap_rputs(
"<a href=\"#modules\">Loaded Modules</a>, "
807 "<a href=\"#server\">Server Settings</a>, "
808 "<a href=\"#startup_hooks\">Startup Hooks</a>, "
809 "<a href=\"#request_hooks\">Request Hooks</a>, "
810 "<a href=\"#other_hooks\">Other Hooks</a>, "
811 "<a href=\"#providers\">Providers</a>",
r);
814 ap_rputs(
"<h2><a name=\"modules\">Loaded Modules</a></h2>"
842 ap_rputs(
"<dl><dt><strong>Configuration:</strong>\n",
r);
854 "<dl><dt><a name=\"%s\"><strong>Module Name:</strong></a> "
855 "<font size=\"+1\"><tt><a href=\"?%s\">%s</a></tt></font></dt>\n",
857 ap_rputs(
"<dt><strong>Content handlers:</strong> ",
r);
868 (
"<dt><strong>Configuration Phase Participation:</strong>\n",
870 if (
modp->create_dir_config) {
874 ap_rputs(
"<tt>Create Directory Config</tt>",
r);
877 if (
modp->merge_dir_config) {
881 ap_rputs(
"<tt>Merge Directory Configs</tt>",
r);
884 if (
modp->create_server_config) {
888 ap_rputs(
"<tt>Create Server Config</tt>",
r);
891 if (
modp->merge_server_config) {
895 ap_rputs(
"<tt>Merge Server Configs</tt>",
r);
908 (
"<dt><strong>Module Directives:</strong></dt>",
914 cmd->name[0] ==
'<' ?
">" :
"");
926 (
"<dt><strong>Current Configuration:</strong></dt>\n",
933 (
"<dt><strong>Module Directives:</strong> <tt>none</tt></dt>",
939 (
"<dt><strong>Additional Information:</strong>\n</dt><dd>",
951 ap_rputs(
"<p><b>No such module</b></p>\n",
r);
956 ap_rputs(
"<dl><dt>Server Module List</dt>",
r);
988 "a module name and additional information on that module"),
Apache Multi-Processing Module library.
APR general purpose library routines.
apr_array_append(apr_pool_t *p, const apr_array_header_t *first, const apr_array_header_t *second)
APR Versioning Interface.
#define APR_VERSION_STRING
APR Standard Headers Support.
APR-util Versioning Interface.
#define APU_VERSION_STRING
apr_array_header_t * ap_hook_get_process_connection(void)
apr_array_header_t * ap_hook_get_pre_connection(void)
apr_array_header_t * ap_hook_get_create_connection(void)
static apr_pool_t * pconf
ap_directive_t * ap_conftree
#define ap_get_module_config(v, m)
apr_array_header_t * ap_hook_get_handler(void)
apr_array_header_t * ap_hook_get_test_config(void)
apr_array_header_t * ap_hook_get_pre_config(void)
#define AP_DECLARE_MODULE(foo)
apr_array_header_t * ap_hook_get_open_logs(void)
void ap_hook_check_config(ap_HOOK_check_config_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
apr_array_header_t * ap_hook_get_optional_fn_retrieve(void)
void ap_hook_handler(ap_HOOK_handler_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
#define ap_set_module_config(v, m, val)
apr_array_header_t * ap_hook_get_post_config(void)
apr_array_header_t * ap_hook_get_quick_handler(void)
apr_array_header_t * ap_hook_get_header_parser(void)
const char * ap_show_mpm(void)
apr_array_header_t * ap_hook_get_child_init(void)
apr_array_header_t * ap_hook_get_check_config(void)
#define AP_INIT_TAKE2(directive, func, mconfig, where, help)
#define DOCTYPE_XHTML_1_0T
const char * ap_get_server_built(void)
#define SERVER_CONFIG_FILE
const char * ap_get_server_description(void)
#define AP_TYPES_CONFIG_FILE
apr_array_header_t * ap_hook_get_get_mgmt_items(void)
apr_port_t ap_get_server_port(const request_rec *r)
int ap_exists_config_define(const char *name)
const char * ap_get_server_name(request_rec *r)
apr_array_header_t * ap_hook_get_error_log(void)
apr_array_header_t * ap_hook_get_generate_log_id(void)
const char * ap_server_root
#define MODULE_MAGIC_NUMBER_MAJOR
#define MODULE_MAGIC_NUMBER_MINOR
apr_array_header_t * ap_hook_get_child_status(void)
apr_array_header_t * ap_hook_get_mpm(void)
apr_array_header_t * ap_hook_get_end_generation(void)
int ap_rvputs(request_rec *r,...)
apr_array_header_t * ap_hook_get_default_port(void)
apr_array_header_t * ap_hook_get_http_scheme(void)
int ap_rprintf(request_rec *r, const char *fmt,...) __attribute__((format(printf
apr_array_header_t * ap_hook_get_note_auth_failure(void)
static APR_INLINE int ap_rputs(const char *str, request_rec *r)
int ap_rputc(int c, request_rec *r)
void ap_set_content_type_ex(request_rec *r, const char *ct, int trusted)
apr_array_header_t * ap_hook_get_insert_error_filter(void)
apr_array_header_t * ap_hook_get_log_transaction(void)
apr_array_header_t * ap_hook_get_post_read_request(void)
apr_array_header_t * ap_hook_get_pre_read_request(void)
apr_array_header_t * ap_list_provider_names(apr_pool_t *pool, const char *provider_group, const char *provider_version)
apr_array_header_t * ap_list_provider_groups(apr_pool_t *pool)
apr_array_header_t * ap_hook_get_insert_filter(void)
apr_array_header_t * ap_hook_get_fixups(void)
apr_array_header_t * ap_hook_get_translate_name(void)
apr_array_header_t * ap_hook_get_check_user_id(void)
apr_array_header_t * ap_hook_get_type_checker(void)
apr_array_header_t * ap_hook_get_create_request(void)
apr_array_header_t * ap_hook_get_map_to_storage(void)
apr_array_header_t * ap_hook_get_pre_translate_name(void)
apr_array_header_t * ap_hook_get_access_checker_ex(void)
apr_array_header_t * ap_hook_get_auth_checker(void)
apr_array_header_t * ap_hook_get_access_checker(void)
apr_array_header_t * ap_hook_get_monitor(void)
apr_array_header_t * ap_hook_get_mpm_register_timed_callback(void)
apr_array_header_t * ap_hook_get_drop_privileges(void)
apr_array_header_t * ap_hook_get_mpm_query(void)
apr_array_header_t * ap_hook_get_mpm_get_name(void)
apr_bucket apr_bucket_brigade * a
void(*) const char *const const char *const in nOrder)
apr_array_header_t * ap_hook_get_expr_lookup(void)
#define STANDARD20_MODULE_STUFF
int ap_cstr_casecmp(const char *s1, const char *s2)
const char * ap_psignature(const char *prefix, request_rec *r)
#define ap_escape_html(p, s)
int strcasecmp(const char *a, const char *b)
#define apr_pcalloc(p, size)
#define APR_ARRAY_PUSH(ary, type)
const apr_array_header_t * arr
#define APR_ARRAY_IDX(ary, i, type)
#define apr_time_sec(time)
apr_status_t ap_mpm_query(int query_code, int *result)
#define AP_MPMQ_IS_FORKED
#define AP_MPMQ_MAX_DAEMON_USED
#define AP_MPMQ_IS_THREADED
Apache connection library.
static int display_info(request_rec *r)
static int mod_info_has_cmd(const command_rec *cmds, ap_directive_t *dir)
static const hook_lookup_t startup_hooks[]
static const hook_lookup_t other_hooks[]
static void * create_info_config(apr_pool_t *p, server_rec *s)
static int check_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
static int show_active_hooks(request_rec *r)
static void mod_info_indent(request_rec *r, int nest, const char *thisfn, int linenum)
static int show_server_settings(request_rec *r)
static apr_array_header_t * get_sorted_modules(apr_pool_t *p)
static const command_rec info_cmds[]
static void mod_info_show_cmd(request_rec *r, const ap_directive_t *dir, int nest)
static int mod_info_module_cmds(request_rec *r, const command_rec *cmds, ap_directive_t *node, int from, int level)
static const char * add_module_info(cmd_parms *cmd, void *dummy, const char *name, const char *info)
static void set_fn_info(request_rec *r, const char *name)
static void * merge_info_config(apr_pool_t *p, void *basev, void *overridesv)
static void mod_info_show_open(request_rec *r, const ap_directive_t *dir, int nest)
static void register_hooks(apr_pool_t *p)
apr_array_header_t *(* hook_get_t)(void)
static int module_find_hook(module *modp, hook_get_t hook_get)
static int cmp_provider_names(const void *a_, const void *b_)
static void module_participate(request_rec *r, module *modp, const hook_lookup_t *lookup, int *comma)
static const char * get_fn_info(request_rec *r)
static void module_request_hook_participate(request_rec *r, module *modp)
static const char * find_more_info(server_rec *s, const char *module_name)
static void mod_info_show_close(request_rec *r, const ap_directive_t *dir, int nest)
static void put_int_flush_right(request_rec *r, int i, int field)
static void show_providers(request_rec *r)
static void mod_info_show_parents(request_rec *r, ap_directive_t *node, int from, int to)
static const char * dump_config_fn_info
static int cmp_module_name(const void *a_, const void *b_)
static int cmp_provider_groups(const void *a_, const void *b_)
static const hook_lookup_t request_hooks[]
static int dump_a_hook(request_rec *r, hook_get_t hook_get)
static const char *const hooks[]
Multi-Processing Modules functions.
#define DEFAULT_SCOREBOARD
apr_array_header_t * ap_hook_get_pre_mpm(void)
Structure used to build the config tree.
struct ap_directive_t * parent
const char * provider_group
const char * provider_version
const char *const * aszSuccessors
const char *const * aszPredecessors
apr_array_header_t * more_info
A structure that represents the current request.
struct ap_conf_vector_t * request_config
A structure to store information for each virtual server.
static NAMED * lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize)