38#define APR_WANT_STRFUNC
39#define APR_WANT_MEMFUNC
55#if APR_HAVE_STRUCT_RLIMIT
56#if defined (RLIMIT_CPU) || defined (RLIMIT_NPROC) || defined (RLIMIT_DATA) || defined(RLIMIT_VMEM) || defined(RLIMIT_AS)
57#define AP_CGI_USE_RLIMIT
61module AP_MODULE_DECLARE_DATA cgi_module;
82#define DEFAULT_LOGBYTES 10385760
83#define DEFAULT_BUFBYTES 1024
95#if APR_FILES_AS_SOCKETS
96#define WANT_CGI_BUCKET
169 return "CGIScriptTimeout has wrong format";
178 "the name of a log for script debugging info"),
180 "the maximum length (in bytes) of the script debug log"),
182 "the maximum size (in bytes) to record of a POST request"),
184 "The amount of time to wait between successful reads from "
185 "the CGI script, in seconds."),
323 const char *description)
349 const char *
const argv[],
354 const char *
const *
env;
359#ifdef AP_CGI_USE_RLIMIT
375 fprintf(
dbg,
"Attempting to exec %s as CGI child (argv0 = %s)\n",
421 "couldn't set child process attributes: %s",
r->
filename);
432 "couldn't create child process: %d: %s",
rc,
471 if (
e_info->process_cgi) {
486 if (
args[x] ==
'+') {
543 "Options ExecCGI is off in this directory");
546 "attempt to include NPH CGI script");
550 "script not found or unable to stat");
553 "attempt to invoke directory as script");
560 "AcceptPathInfo off disallows user's path");
588 "don't know how to spawn child process: %s",
597 "couldn't spawn child process: %s",
r->
filename);
615 "Error reading request entity data");
625#if APR_FILES_AS_SOCKETS
658 if ((
rr->path_info &&
rr->path_info[0]) ||
rr->args) {
686 location,
"</a>",
NULL);
690 f->c->bucket_alloc));
725 "don't know how to spawn cmd child process: %s",
735 "couldn't spawn child process: %s",
r->
filename);
740 f->c->bucket_alloc));
765 static const char *
const aszPre[] = {
"mod_include.c",
NULL };
Symbol export macros and hook functions.
Apache Multi-Processing Module library.
const char apr_size_t len
APR-UTIL Buckets/Bucket Brigades.
APR general purpose library routines.
APR-UTIL registration of functions exported by modules.
APR Thread and Process Library.
APR Standard Headers Support.
static void cgi_optfns_retrieve(void)
static int cgi_handle_response(request_rec *r, int nph, apr_bucket_brigade *bb, apr_interval_time_t timeout, cgi_server_conf *conf, char *logdata, apr_file_t *script_err)
static int log_scripterror(request_rec *r, cgi_server_conf *conf, int ret, apr_status_t rv, const char *logno, const char *error)
static apr_status_t log_script_err(request_rec *r, apr_file_t *script_err)
static apr_status_t cgi_handle_request(request_rec *r, apr_file_t *script_out, apr_bucket_brigade *bb, char *logbuf, apr_size_t logbufbytes)
#define AP_INIT_TAKE1(directive, func, mconfig, where, help)
#define ap_get_module_config(v, m)
void ap_hook_post_config(ap_HOOK_post_config_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
#define AP_DECLARE_MODULE(foo)
char * ap_server_root_relative(apr_pool_t *p, const char *fname)
void ap_hook_handler(ap_HOOK_handler_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
void ap_hook_optional_fn_retrieve(ap_HOOK_optional_fn_retrieve_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
#define ap_get_core_module_config(v)
int ap_allow_options(request_rec *r)
const unsigned char * buf
apr_status_t ap_os_create_privileged_process(const request_rec *r, apr_proc_t *newproc, const char *progname, const char *const *args, const char *const *env, apr_procattr_t *attr, apr_pool_t *p)
int ap_map_http_request_error(apr_status_t rv, int status)
void ap_set_content_type_ex(request_rec *r, const char *ct, int trusted)
request_rec * ap_sub_req_lookup_uri(const char *new_uri, const request_rec *r, ap_filter_t *next_filter)
int ap_run_sub_req(request_rec *r)
void ap_destroy_sub_req(request_rec *r)
void ap_add_common_vars(request_rec *r)
char ** ap_create_environment(apr_pool_t *p, apr_table_t *t)
void ap_add_cgi_vars(request_rec *r)
#define APR_BRIGADE_INSERT_TAIL(b, e)
#define APR_BUCKET_NEXT(e)
#define APR_BRIGADE_SENTINEL(b)
#define APR_BUCKET_IS_EOS(e)
apr_brigade_flush void * ctx
#define APR_BRIGADE_FIRST(b)
#define apr_bucket_read(e, str, len, block)
const char *const * aszPre
#define APR_HOOK_REALLY_FIRST
#define APR_RETRIEVE_OPTIONAL_FN(name)
#define APR_OPTIONAL_FN_TYPE(name)
#define HTTP_INTERNAL_SERVER_ERROR
#define ap_is_HTTP_REDIRECT(x)
#define STANDARD20_MODULE_STUFF
char * ap_escape_logitem(apr_pool_t *p, const char *str)
#define ap_escape_uri(ppool, path)
char * ap_escape_shell_cmd(apr_pool_t *p, const char *s)
#define ap_strchr_c(s, c)
char * ap_make_dirstr_parent(apr_pool_t *p, const char *s)
#define AP_DEBUG_ASSERT(exp)
char * ap_getword_nulls(apr_pool_t *p, const char **line, char stop)
#define ap_escape_html(p, s)
int ap_unescape_url(char *url)
apr_status_t ap_timeout_parameter_parse(const char *timeout_parameter, apr_interval_time_t *timeout, const char *default_time_unit)
const char int apr_pool_t * pool
int strcasecmp(const char *a, const char *b)
apr_vformatter_buff_t * c
char const *const char const *const ** env
#define apr_pcalloc(p, size)
const apr_array_header_t * first
apr_int32_t apr_int32_t apr_int32_t err
const char const char *const * args
apr_int64_t apr_interval_time_t
#define AP_REQ_REJECT_PATH_INFO
static apr_file_t * stderr_log
static const char * set_scriptlog_length(cmd_parms *cmd, void *dummy, const char *arg)
static apr_status_t default_build_command(const char **cmd, const char ***argv, request_rec *r, apr_pool_t *p, cgi_exec_info_t *e_info)
static const char * set_script_timeout(cmd_parms *cmd, void *dummy, const char *arg)
static void cgi_child_errfn(apr_pool_t *pool, apr_status_t err, const char *description)
static void * create_cgi_dirconf(apr_pool_t *p, char *dummy)
static int log_script(request_rec *r, cgi_server_conf *conf, int ret, char *dbuf, const char *sbuf, apr_bucket_brigade *bb, apr_file_t *script_err)
static const char * set_scriptlog_buffer(cmd_parms *cmd, void *dummy, const char *arg)
static apr_OFN_ap_cgi_build_command_t * cgi_build_command
static int cgi_handler(request_rec *r)
static apr_status_t run_cgi_child(apr_file_t **script_out, apr_file_t **script_in, apr_file_t **script_err, const char *command, const char *const argv[], request_rec *r, apr_pool_t *p, cgi_exec_info_t *e_info)
static int cgi_post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
static void * merge_cgi_config(apr_pool_t *p, void *basev, void *overridesv)
static void register_hooks(apr_pool_t *p)
static int is_scriptaliased(request_rec *r)
static apr_status_t include_cmd(include_ctx_t *ctx, ap_filter_t *f, apr_bucket_brigade *bb, const char *command)
static void add_ssi_vars(request_rec *r)
static apr_status_t include_cgi(include_ctx_t *ctx, ap_filter_t *f, apr_bucket_brigade *bb, char *s)
static const char * set_scriptlog(cmd_parms *cmd, void *dummy, const char *arg)
static void * create_cgi_config(apr_pool_t *p, server_rec *s)
static const command_rec cgi_cmds[]
static void discard_script_output(apr_bucket_brigade *bb)
CGI Script Execution Extension Module for Apache.
mod_core private header file
static apr_status_t command(sed_eval_t *eval, sed_reptr_t *ipc, step_vars_storage *step_vars)
The representation of a filter chain.
apr_interval_time_t timeout
Structure to store things which are per connection.
Per-directory configuration.
A structure that represents the current request.
apr_table_t * err_headers_out
apr_table_t * subprocess_env
struct ap_conf_vector_t * per_dir_config
A structure to store information for each virtual server.
apr_interval_time_t timeout
struct ap_conf_vector_t * module_config
apr_status_t apr_ctime(char *date_str, apr_time_t t)