22#define CONN_BLKSZ AP_IOBUFSIZE
24module AP_MODULE_DECLARE_DATA proxy_connect_module;
72 base->allowed_connect_ports,
94 return "AllowCONNECT: port numbers must be numeric";
107 "Cannot parse '%s' as port number",
p);
218 "Connect to remote machine blocked");
222 "connecting to remote proxy %s on port %d",
228 "Connect to remote machine blocked");
267 c->id,
c->sbh,
c->bucket_alloc);
271 "an error occurred creating a new connection "
288 "pre_connection setup failed (%d)",
rc);
295 "connection complete to %pI (%s)",
309 "sending the CONNECT request to the remote proxy");
311 "CONNECT %s HTTP/1.0" CRLF,
r->
uri);
319 "HTTP/1.0 200 Connection Established" CRLF);
351 "can't create tunnel for %pI (%s)",
392 "A list of ports or port ranges which CONNECT may connect to"),
apr_array_append(apr_pool_t *p, const apr_array_header_t *first, const apr_array_header_t *second)
int ap_run_pre_connection(conn_rec *c, void *csd)
void ap_lingering_close(conn_rec *c)
conn_rec * ap_run_create_connection(apr_pool_t *p, server_rec *server, apr_socket_t *csd, long conn_id, void *sbh, apr_bucket_alloc_t *alloc)
#define ap_get_module_config(v, m)
#define AP_DECLARE_MODULE(foo)
#define AP_INIT_ITERATE(directive, func, mconfig, where, help)
const char * ap_get_server_banner(void)
#define ap_xlate_proto_to_ascii(x, y)
#define ap_fwrite(f, bb, data, nbyte)
apr_status_t ap_fflush(ap_filter_t *f, apr_bucket_brigade *bb)
apr_status_t ap_fprintf(ap_filter_t *f, apr_bucket_brigade *bb, const char *fmt,...) __attribute__((format(printf
int int ap_rflush(request_rec *r)
const char apr_port_t port
#define APR_URI_SNEWS_DEFAULT_PORT
#define APR_URI_HTTPS_DEFAULT_PORT
#define HTTP_SERVICE_UNAVAILABLE
#define HTTP_INTERNAL_SERVER_ERROR
#define ap_is_HTTP_ERROR(x)
#define HTTP_GATEWAY_TIME_OUT
int ap_proxy_ssl_engine(conn_rec *c, ap_conf_vector_t *per_dir_config, int enable)
int ap_proxy_tunnel_run(proxy_tunnel_rec *tunnel)
apr_status_t ap_proxy_tunnel_create(proxy_tunnel_rec **tunnel, request_rec *r, conn_rec *c_o, const char *scheme)
int ap_proxy_checkproxyblock2(request_rec *r, proxy_server_conf *conf, const char *hostname, apr_sockaddr_t *addr)
int ap_proxy_connect_to_backend(apr_socket_t **, const char *, apr_sockaddr_t *, const char *, proxy_server_conf *, request_rec *)
void proxy_hook_canon_handler(proxy_HOOK_canon_handler_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
int ap_proxyerror(request_rec *r, int statuscode, const char *message)
void proxy_hook_scheme_handler(proxy_HOOK_scheme_handler_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
#define STANDARD20_MODULE_STUFF
const apr_array_header_t * list
apr_vformatter_buff_t * c
#define apr_pcalloc(p, size)
const apr_array_header_t * first
apr_int64_t apr_interval_time_t
Proxy Extension Module for Apache.
static int proxy_connect_handler(request_rec *r, proxy_worker *worker, proxy_server_conf *conf, char *url, const char *proxyname, apr_port_t proxyport)
static int allowed_port(connect_conf *conf, int port)
static const char * set_allowed_ports(cmd_parms *parms, void *dummy, const char *arg)
static void * merge_config(apr_pool_t *p, void *basev, void *overridesv)
static void * create_config(apr_pool_t *p, server_rec *s)
static const command_rec cmds[]
static void ap_proxy_connect_register_hook(apr_pool_t *p)
static int proxy_connect_canon(request_rec *r, char *url)
Structure to store things which are per connection.
apr_array_header_t * allowed_connect_ports
A structure that represents the current request.
struct ap_conf_vector_t * per_dir_config
apr_table_t * headers_out
A structure to store information for each virtual server.
struct ap_conf_vector_t * module_config
apr_status_t apr_socket_close(apr_socket_t *thesocket)
apr_status_t apr_socket_timeout_set(apr_socket_t *sock, apr_interval_time_t t)
apr_status_t apr_socket_timeout_get(apr_socket_t *sock, apr_interval_time_t *t)