From 2852402f1c671ae6f95fb738467d511e76dedf43 Mon Sep 17 00:00:00 2001 From: Chuck Murcko Date: Sat, 11 Nov 2000 11:03:42 +0000 Subject: [PATCH] This is the 1.3.x current proxy code into 2.0. PR: Obtained from: Sam Magnuson Submitted by: Chuck Murcko Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@86921 13f79535-47bb-0310-9956-ffa450edef68 --- modules/proxy/mod_proxy.c | 418 +++++++++++++++++++------------------- 1 file changed, 207 insertions(+), 211 deletions(-) diff --git a/modules/proxy/mod_proxy.c b/modules/proxy/mod_proxy.c index 33900265f9..df4a30677c 100644 --- a/modules/proxy/mod_proxy.c +++ b/modules/proxy/mod_proxy.c @@ -64,7 +64,6 @@ #include "http_vhost.h" #include "http_request.h" #include "util_date.h" -#include "apr_strings.h" /* Some WWW schemes and their default ports; this is basically /etc/services */ /* This will become global when the protocol abstraction comes */ @@ -78,7 +77,7 @@ static struct proxy_services defports[] = {"wais", DEFAULT_WAIS_PORT}, {"snews", DEFAULT_SNEWS_PORT}, {"prospero", DEFAULT_PROSPERO_PORT}, - {NULL, -1} /* unknown port */ + {NULL, -1} /* unknown port */ }; /* @@ -100,29 +99,29 @@ static int alias_match(const char *uri, const char *alias_fakename) const char *aliasp = alias_fakename, *urip = uri; while (aliasp < end_fakename) { - if (*aliasp == '/') { - /* any number of '/' in the alias matches any number in - * the supplied URI, but there must be at least one... - */ - if (*urip != '/') - return 0; - - while (*aliasp == '/') - ++aliasp; - while (*urip == '/') - ++urip; - } - else { - /* Other characters are compared literally */ - if (*urip++ != *aliasp++) - return 0; - } + if (*aliasp == '/') { + /* any number of '/' in the alias matches any number in + * the supplied URI, but there must be at least one... + */ + if (*urip != '/') + return 0; + + while (*aliasp == '/') + ++aliasp; + while (*urip == '/') + ++urip; + } + else { + /* Other characters are compared literally */ + if (*urip++ != *aliasp++) + return 0; + } } /* Check last alias path component matched all the way */ if (aliasp[-1] != '/' && *urip != '\0' && *urip != '/') - return 0; + return 0; /* Return number of characters from URI which matched (may be * greater than length of alias, since we may have matched @@ -151,25 +150,25 @@ static int proxy_detect(request_rec *r) conf = (proxy_server_conf *) ap_get_module_config(sconf, &proxy_module); if (conf->req && r->parsed_uri.scheme) { - /* but it might be something vhosted */ + /* but it might be something vhosted */ if (!(r->parsed_uri.hostname - && !strcasecmp(r->parsed_uri.scheme, ap_http_method(r)) - && ap_matches_request_vhost(r, r->parsed_uri.hostname, - r->parsed_uri.port_str ? r->parsed_uri.port : ap_default_port(r)))) { - r->proxyreq = 1; - r->uri = r->unparsed_uri; - r->filename = apr_pstrcat(r->pool, "proxy:", r->uri, NULL); - r->handler = "proxy-server"; + && !strcasecmp(r->parsed_uri.scheme, ap_http_method(r)) + && ap_matches_request_vhost(r, r->parsed_uri.hostname, + r->parsed_uri.port_str ? r->parsed_uri.port : ap_default_port(r)))) { + r->proxyreq = 1; + r->uri = r->unparsed_uri; + r->filename = apr_pstrcat(r->pool, "proxy:", r->uri, NULL); + r->handler = "proxy-server"; } } /* We need special treatment for CONNECT proxying: it has no scheme part */ else if (conf->req && r->method_number == M_CONNECT - && r->parsed_uri.hostname - && r->parsed_uri.port_str) { - r->proxyreq = 1; - r->uri = r->unparsed_uri; - r->filename = apr_pstrcat(r->pool, "proxy:", r->uri, NULL); - r->handler = "proxy-server"; + && r->parsed_uri.hostname + && r->parsed_uri.port_str) { + r->proxyreq = 1; + r->uri = r->unparsed_uri; + r->filename = apr_pstrcat(r->pool, "proxy:", r->uri, NULL); + r->handler = "proxy-server"; } return DECLINED; } @@ -183,10 +182,10 @@ static int proxy_trans(request_rec *r) struct proxy_alias *ent = (struct proxy_alias *) conf->aliases->elts; if (r->proxyreq) { - /* someone has already set up the proxy, it was possibly ourselves - * in proxy_detect - */ - return OK; + /* someone has already set up the proxy, it was possibly ourselves + * in proxy_detect + */ + return OK; } /* XXX: since r->uri has been manipulated already we're not really @@ -196,14 +195,14 @@ static int proxy_trans(request_rec *r) for (i = 0; i < conf->aliases->nelts; i++) { len = alias_match(r->uri, ent[i].fake); - - if (len > 0) { + + if (len > 0) { r->filename = apr_pstrcat(r->pool, "proxy:", ent[i].real, r->uri + len, NULL); r->handler = "proxy-server"; r->proxyreq = 1; return OK; - } + } } return DECLINED; } @@ -218,61 +217,60 @@ static int proxy_fixup(request_rec *r) { char *url, *p; - if (!r->proxyreq || strncmp(r->filename, "proxy:", 6) != 0) - return DECLINED; + if (r->proxyreq || strncmp(r->filename, "proxy:", 6) != 0) + return DECLINED; url = &r->filename[6]; /* canonicalise each specific scheme */ if (strncasecmp(url, "http:", 5) == 0) - return ap_proxy_http_canon(r, url + 5, "http", DEFAULT_HTTP_PORT); + return ap_proxy_http_canon(r, url + 5, "http", DEFAULT_HTTP_PORT); else if (strncasecmp(url, "ftp:", 4) == 0) - return ap_proxy_ftp_canon(r, url + 4); + return ap_proxy_ftp_canon(r, url + 4); p = strchr(url, ':'); if (p == NULL || p == url) - return HTTP_BAD_REQUEST; + return HTTP_BAD_REQUEST; - return OK; /* otherwise; we've done the best we can */ + return OK; /* otherwise; we've done the best we can */ } -/* Send a redirection if the request contains a hostname which is not - * fully qualified, i.e. doesn't have a domain name appended. Some proxy - * servers like Netscape's allow this and access hosts from the local - * domain in this case. I think it is better to redirect to a FQDN, since - * these will later be found in the bookmarks files. - * The "ProxyDomain" directive determines what domain will be appended - */ +/* Send a redirection if the request contains a hostname which is not */ +/* fully qualified, i.e. doesn't have a domain name appended. Some proxy */ +/* servers like Netscape's allow this and access hosts from the local */ +/* domain in this case. I think it is better to redirect to a FQDN, since */ +/* these will later be found in the bookmarks files. */ +/* The "ProxyDomain" directive determines what domain will be appended */ static int proxy_needsdomain(request_rec *r, const char *url, const char *domain) { char *nuri; const char *ref; /* We only want to worry about GETs */ - if (!r->proxyreq || r->method_number != M_GET || !r->parsed_uri.hostname) - return DECLINED; + if (r->proxyreq || r->method_number != M_GET || !r->parsed_uri.hostname) + return DECLINED; /* If host does contain a dot already, or it is "localhost", decline */ if (strchr(r->parsed_uri.hostname, '.') != NULL || strcasecmp(r->parsed_uri.hostname, "localhost") == 0) - return DECLINED; /* host name has a dot already */ + return DECLINED; /* host name has a dot already */ ref = apr_table_get(r->headers_in, "Referer"); /* Reassemble the request, but insert the domain after the host name */ /* Note that the domain name always starts with a dot */ r->parsed_uri.hostname = apr_pstrcat(r->pool, r->parsed_uri.hostname, - domain, NULL); + domain, NULL); nuri = ap_unparse_uri_components(r->pool, - &r->parsed_uri, - UNP_REVEALPASSWORD); + &r->parsed_uri, + UNP_REVEALPASSWORD); apr_table_set(r->headers_out, "Location", nuri); ap_log_rerror(APLOG_MARK, APLOG_INFO|APLOG_NOERRNO, 0, r, - "Domain missing: %s sent to %s%s%s", r->uri, - ap_unparse_uri_components(r->pool, &r->parsed_uri, - UNP_OMITUSERINFO), - ref ? " from " : "", ref ? ref : ""); + "Domain missing: %s sent to %s%s%s", r->uri, + ap_unparse_uri_components(r->pool, &r->parsed_uri, + UNP_OMITUSERINFO), + ref ? " from " : "", ref ? ref : ""); return HTTP_MOVED_PERMANENTLY; } @@ -290,42 +288,42 @@ static int proxy_handler(request_rec *r) apr_array_header_t *proxies = conf->proxies; struct proxy_remote *ents = (struct proxy_remote *) proxies->elts; int i, rc; - ap_cache_el *cr=NULL; + ap_cache_el *cr = NULL; int direct_connect = 0; const char *maxfwd_str; const char *pragma, *auth, *imstr; - - if (!r->proxyreq || strncmp(r->filename, "proxy:", 6) != 0) - return DECLINED; - - if (r->method_number == M_TRACE && (maxfwd_str = - apr_table_get(r->headers_in, "Max-Forwards")) != NULL) { - int maxfwd = strtol(maxfwd_str, NULL, 10); - if (maxfwd < 1) { - int access_status; - r->proxyreq = 0; - if ((access_status = ap_send_http_trace(r))) - ap_die(access_status, r); - else - ap_finalize_request_protocol(r); - return OK; - } - apr_table_setn(r->headers_in, "Max-Forwards", - apr_psprintf(r->pool, "%d", (maxfwd > 0) ? maxfwd-1 : 0)); + + if (r->proxyreq || strncmp(r->filename, "proxy:", 6) != 0) + return DECLINED; + + if (r->method_number == M_TRACE && + (maxfwd_str = apr_table_get(r->headers_in, "Max-Forwards")) != NULL) { + long maxfwd = strtol(maxfwd_str, NULL, 10); + if (maxfwd < 1) { + int access_status; + r->proxyreq = 0; + if ((access_status = ap_send_http_trace(r))) + ap_die(access_status, r); + else + ap_finalize_request_protocol(r); + return OK; + } + apr_table_setn(r->headers_in, "Max-Forwards", + apr_psprintf(r->pool, "%ld", (maxfwd > 0) ? maxfwd-1 : 0)); } if ((rc = ap_setup_client_block(r, REQUEST_CHUNKED_ERROR))) - return rc; + return rc; url = r->filename + 6; p = strchr(url, ':'); if (p == NULL) - return HTTP_BAD_REQUEST; + return HTTP_BAD_REQUEST; pragma = apr_table_get(r->headers_in, "Pragma"); auth = apr_table_get(r->headers_in, "Authorization"); imstr = apr_table_get(r->headers_in, "If-Modified-Since"); - + ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, NULL, "Request for %s, pragma=%s, auth=%s, imstr=%s", url, pragma, auth, imstr); @@ -338,7 +336,7 @@ static int proxy_handler(request_rec *r) { int has_m = 0; /* now we need to check if the last modified date is write if */ - + if(imstr) { time_t ims = (time_t)ap_parseHTTPdate(ap_proxy_date_canon(r->pool, imstr)); @@ -351,15 +349,14 @@ static int proxy_handler(request_rec *r) (char **)&imstr) == APR_SUCCESS) { time_t lm = - ap_parseHTTPdate(ap_proxy_date_canon(r->pool, imstr)); - if(lm != BAD_DATE) + ap_parseHTTPdate(ap_proxy_date_canon(r->pool, imstr)); if(lm != BAD_DATE) { if(ims < lm) apr_table_set(r->headers_in, "If-Modified-Since", imstr); else { - + has_m = 1; } } @@ -372,12 +369,12 @@ static int proxy_handler(request_rec *r) we need to create one */ ap_cache_create(conf->cache, url, &cr); } - + /* If the host doesn't have a domain name, add one and redirect. */ if (conf->domain != NULL) { - rc = proxy_needsdomain(r, url, conf->domain); - if (ap_is_HTTP_REDIRECT(rc)) - return HTTP_MOVED_PERMANENTLY; + rc = proxy_needsdomain(r, url, conf->domain); + if (ap_is_HTTP_REDIRECT(rc)) + return HTTP_MOVED_PERMANENTLY; } *p = '\0'; @@ -389,47 +386,47 @@ static int proxy_handler(request_rec *r) /* we only know how to handle communication to a proxy via http */ /*if (strcasecmp(scheme, "http") == 0) */ { - int ii; - struct dirconn_entry *list = (struct dirconn_entry *) conf->dirconn->elts; + int ii; + struct dirconn_entry *list = (struct dirconn_entry *) conf->dirconn->elts; - for (direct_connect = ii = 0; ii < conf->dirconn->nelts && !direct_connect; ii++) { - direct_connect = list[ii].matcher(&list[ii], r); - } + for (direct_connect = ii = 0; ii < conf->dirconn->nelts && !direct_connect; ii++) { + direct_connect = list[ii].matcher(&list[ii], r); + } #if DEBUGGING - ap_log_rerror(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, r, - (direct_connect) ? "NoProxy for %s" : "UseProxy for %s", - r->uri); + ap_log_rerror(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r, + (direct_connect) ? "NoProxy for %s" : "UseProxy for %s", + r->uri); #endif } /* firstly, try a proxy, unless a NoProxy directive is active */ if (!direct_connect) - for (i = 0; i < proxies->nelts; i++) { + for (i = 0; i < proxies->nelts; i++) { p2 = ap_strchr_c(ents[i].scheme, ':'); /* is it a partial URL? */ - if (strcmp(ents[i].scheme, "*") == 0 || - (p2 == NULL && strcasecmp(scheme, ents[i].scheme) == 0) || - (p2 != NULL && - strncasecmp(url, ents[i].scheme, strlen(ents[i].scheme)) == 0)) { - /* CONNECT is a special method that bypasses the normal - * proxy code. - */ - if (r->method_number == M_CONNECT) - rc = ap_proxy_connect_handler(r, cr, url, ents[i].hostname, - ents[i].port); + if (strcmp(ents[i].scheme, "*") == 0 || + (p2 == NULL && strcasecmp(scheme, ents[i].scheme) == 0) || + (p2 != NULL && + strncasecmp(url, ents[i].scheme, strlen(ents[i].scheme)) == 0)) { + /* CONNECT is a special method that bypasses the normal + * proxy code. + */ + if (r->method_number == M_CONNECT) + rc = ap_proxy_connect_handler(r, cr, url, ents[i].hostname, + ents[i].port); /* we only know how to handle communication to a proxy via http */ - else if (strcasecmp(ents[i].protocol, "http") == 0) - rc = ap_proxy_http_handler(r, cr, url, ents[i].hostname, - ents[i].port); - else - rc = DECLINED; - - /* an error or success */ - if (rc != DECLINED && rc != HTTP_BAD_GATEWAY) - return rc; - /* we failed to talk to the upstream proxy */ - } - } + else if (strcasecmp(ents[i].protocol, "http") == 0) + rc = ap_proxy_http_handler(r, cr, url, ents[i].hostname, + ents[i].port); + else + rc = DECLINED; + + /* an error or success */ + if (rc != DECLINED && rc != HTTP_BAD_GATEWAY) + return rc; + /* we failed to talk to the upstream proxy */ + } + } /* otherwise, try it direct */ /* N.B. what if we're behind a firewall, where we must use a proxy or @@ -437,29 +434,29 @@ static int proxy_handler(request_rec *r) */ /* handle the scheme */ if (r->method_number == M_CONNECT) - return ap_proxy_connect_handler(r, cr, url, NULL, 0); + return ap_proxy_connect_handler(r, cr, url, NULL, 0); if (strcasecmp(scheme, "http") == 0) - return ap_proxy_http_handler(r, cr, url, NULL, 0); + return ap_proxy_http_handler(r, cr, url, NULL, 0); if (strcasecmp(scheme, "ftp") == 0) - return ap_proxy_ftp_handler(r, cr, url); + return ap_proxy_ftp_handler(r, cr, url); else - return HTTP_FORBIDDEN; + return HTTP_FORBIDDEN; } /* -------------------------------------------------------------- */ /* Setup configurable data */ -static void *create_proxy_config(apr_pool_t *p, server_rec *s) +static void * create_proxy_config(apr_pool_t *p, server_rec *s) { - proxy_server_conf *ps = apr_pcalloc(p, sizeof(proxy_server_conf)); - - ps->proxies = apr_make_array(p, 10, sizeof(struct proxy_remote)); - ps->aliases = apr_make_array(p, 10, sizeof(struct proxy_alias)); - ps->raliases = apr_make_array(p, 10, sizeof(struct proxy_alias)); - ps->noproxies = apr_make_array(p, 10, sizeof(struct noproxy_entry)); - ps->dirconn = apr_make_array(p, 10, sizeof(struct dirconn_entry)); - ps->nocaches = apr_make_array(p, 10, sizeof(struct nocache_entry)); - ps->allowed_connect_ports = apr_make_array(p, 10, sizeof(int)); + proxy_server_conf *ps = ap_pcalloc(p, sizeof(proxy_server_conf)); + + ps->proxies = ap_make_array(p, 10, sizeof(struct proxy_remote)); + ps->aliases = ap_make_array(p, 10, sizeof(struct proxy_alias)); + ps->raliases = ap_make_array(p, 10, sizeof(struct proxy_alias)); + ps->noproxies = ap_make_array(p, 10, sizeof(struct noproxy_entry)); + ps->dirconn = ap_make_array(p, 10, sizeof(struct dirconn_entry)); + ps->nocaches = ap_make_array(p, 10, sizeof(struct nocache_entry)); + ps->allowed_connect_ports = ap_make_array(p, 10, sizeof(int)); ps->cache_completion = DEFAULT_CACHE_COMPLETION; ps->domain = NULL; ps->viaopt = via_off; /* initially backward compatible with 1.3.1 */ @@ -470,7 +467,7 @@ static void *create_proxy_config(apr_pool_t *p, server_rec *s) } static const char * - add_proxy(cmd_parms *cmd, void *dummy, const char *f1, const char *r1) + add_proxy(cmd_parms *cmd, void *dummy, const char *f1, const char *r1) { server_rec *s = cmd->server; proxy_server_conf *conf = @@ -484,26 +481,26 @@ static const char * f = apr_pstrdup(cmd->pool, f1); p = strchr(r, ':'); if (p == NULL || p[1] != '/' || p[2] != '/' || p[3] == '\0') - return "ProxyRemote: Bad syntax for a remote proxy server"; + return "ProxyRemote: Bad syntax for a remote proxy server"; q = strchr(p + 3, ':'); if (q != NULL) { - if (sscanf(q + 1, "%u", &port) != 1 || port > 65535) - return "ProxyRemote: Bad syntax for a remote proxy server (bad port number)"; - *q = '\0'; + if (sscanf(q + 1, "%u", &port) != 1 || port > 65535) + return "ProxyRemote: Bad syntax for a remote proxy server (bad port number)"; + *q = '\0'; } else - port = -1; + port = -1; *p = '\0'; if (strchr(f, ':') == NULL) - ap_str_tolower(f); /* lowercase scheme */ - ap_str_tolower(p + 3); /* lowercase hostname */ + ap_str_tolower(f); /* lowercase scheme */ + ap_str_tolower(p + 3); /* lowercase hostname */ if (port == -1) { - int i; - for (i = 0; defports[i].scheme != NULL; i++) - if (strcasecmp(defports[i].scheme, r) == 0) - break; - port = defports[i].port; + int i; + for (i = 0; defports[i].scheme != NULL; i++) + if (strcasecmp(defports[i].scheme, r) == 0) + break; + port = defports[i].port; } new = apr_push_array(conf->proxies); @@ -515,7 +512,7 @@ static const char * } static const char * - set_cache_exclude(cmd_parms *cmd, void *dummy, const char *arg) + set_cache_exclude(cmd_parms *cmd, void *dummy, const char *arg) { server_rec *s = cmd->server; proxy_server_conf *psf = (proxy_server_conf *) ap_get_module_config(s->module_config, &proxy_module); @@ -527,18 +524,17 @@ static const char * /* Don't duplicate entries */ for (i = 0; i < psf->nocaches->nelts; i++) { - if (strcasecmp(arg, list[i].name) == 0) /* ignore case for host names */ - found = 1; + if (strcasecmp(arg, list[i].name) == 0) /* ignore case for host names */ + found = 1; } if (!found) { new = apr_push_array(psf->nocaches); new->name = arg; /* Don't do name lookups on things that aren't dotted */ - if (ap_strchr_c(arg, '.') != NULL && + if (ap_strchr_c(arg, '.') != NULL && ap_proxy_host2addr(new->name, &hp) == NULL) - /*@@@FIXME: This copies only the first of (possibly many) IP addrs */ - memcpy(&new->addr, hp.h_addr, sizeof(struct in_addr)); + /*@@@FIXME: This copies only the first of (possibly many) IP addrs */ memcpy(&new->addr, hp.h_addr, sizeof(struct in_addr)); else new->addr.s_addr = 0; } @@ -546,7 +542,7 @@ static const char * } static const char * - add_pass(cmd_parms *cmd, void *dummy, const char *f, const char *r) + add_pass(cmd_parms *cmd, void *dummy, const char *f, const char *r) { server_rec *s = cmd->server; proxy_server_conf *conf = @@ -574,7 +570,8 @@ static const char * return NULL; } -static const char *set_proxy_exclude(cmd_parms *parms, void *dummy, const char *arg) +static const char * + set_proxy_exclude(cmd_parms *parms, void *dummy, const char *arg) { server_rec *s = parms->server; proxy_server_conf *conf = @@ -587,19 +584,20 @@ static const char *set_proxy_exclude(cmd_parms *parms, void *dummy, const char * /* Don't duplicate entries */ for (i = 0; i < conf->noproxies->nelts; i++) { - if (strcasecmp(arg, list[i].name) == 0) /* ignore case for host names */ - found = 1; + if (strcasecmp(arg, list[i].name) == 0) /* ignore case for host names */ + found = 1; } if (!found) { - new = apr_push_array(conf->noproxies); - new->name = arg; - /* Don't do name lookups on things that aren't dotted */ - if (ap_strchr_c(arg, '.') != NULL && ap_proxy_host2addr(new->name, &hp) == NULL) + new = apr_push_array(conf->noproxies); + new->name = arg; + /* Don't do name lookups on things that aren't dotted */ + if (ap_strchr_c(arg, '.') != NULL && + ap_proxy_host2addr(new->name, &hp) == NULL) /*@@@FIXME: This copies only the first of (possibly many) IP addrs */ - memcpy(&new->addr, hp.h_addr, sizeof(struct in_addr)); - else - new->addr.s_addr = 0; + memcpy(&new->addr, hp.h_addr, sizeof(struct in_addr)); + else + new->addr.s_addr = 0; } return NULL; } @@ -616,7 +614,7 @@ static const char * int *New; if (!apr_isdigit(arg[0])) - return "AllowCONNECT: port number must be numeric"; + return "AllowCONNECT: port number must be numeric"; New = apr_push_array(conf->allowed_connect_ports); *New = atoi(arg); @@ -627,7 +625,7 @@ static const char * * which should never be accessed via the configured ProxyRemote servers */ static const char * - set_proxy_dirconn(cmd_parms *parms, void *dummy, const char *arg) + set_proxy_dirconn(cmd_parms *parms, void *dummy, const char *arg) { server_rec *s = parms->server; proxy_server_conf *conf = @@ -639,63 +637,62 @@ static const char * /* Don't duplicate entries */ for (i = 0; i < conf->dirconn->nelts; i++) { - if (strcasecmp(arg, list[i].name) == 0) - found = 1; + if (strcasecmp(arg, list[i].name) == 0) + found = 1; } if (!found) { - New = apr_push_array(conf->dirconn); - New->name = apr_pstrdup(parms->pool, arg); - New->hostentry = NULL; + New = apr_push_array(conf->dirconn); + New->name = apr_pstrdup(parms->pool, arg); + New->hostentry = NULL; - if (ap_proxy_is_ipaddr(New, parms->pool)) { + if (ap_proxy_is_ipaddr(New, parms->pool)) { #if DEBUGGING - ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL, + ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL, "Parsed addr %s", inet_ntoa(New->addr)); - ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL, + ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL, "Parsed mask %s", inet_ntoa(New->mask)); #endif - } - else if (ap_proxy_is_domainname(New, parms->pool)) { - ap_str_tolower(New->name); + } + else if (ap_proxy_is_domainname(New, parms->pool)) { + ap_str_tolower(New->name); #if DEBUGGING - ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL, + ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL, "Parsed domain %s", New->name); #endif - } - else if (ap_proxy_is_hostname(New, parms->pool)) { - ap_str_tolower(New->name); + } + else if (ap_proxy_is_hostname(New, parms->pool)) { + ap_str_tolower(New->name); #if DEBUGGING - ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL, + ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL, "Parsed host %s", New->name); #endif - } - else { - ap_proxy_is_word(New, parms->pool); + } + else { + ap_proxy_is_word(New, parms->pool); #if DEBUGGING - ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL, - "Parsed word %s", New->name); + fprintf(stderr, "Parsed word %s\n", New->name); #endif - } + } } return NULL; } static const char * - set_proxy_domain(cmd_parms *parms, void *dummy, const char *arg) + set_proxy_domain(cmd_parms *parms, void *dummy, const char *arg) { proxy_server_conf *psf = ap_get_module_config(parms->server->module_config, &proxy_module); if (arg[0] != '.') - return "ProxyDomain: domain name must start with a dot."; + return "ProxyDomain: domain name must start with a dot."; psf->domain = arg; return NULL; } static const char * - set_proxy_req(cmd_parms *parms, void *dummy, int flag) + set_proxy_req(cmd_parms *parms, void *dummy, int flag) { proxy_server_conf *psf = ap_get_module_config(parms->server->module_config, &proxy_module); @@ -704,15 +701,14 @@ static const char * return NULL; } - static const char * - set_recv_buffer_size(cmd_parms *parms, void *dummy, const char *arg) + set_recv_buffer_size(cmd_parms *parms, void *dummy, const char *arg) { proxy_server_conf *psf = ap_get_module_config(parms->server->module_config, &proxy_module); int s = atoi(arg); if (s < 512 && s != 0) { - return "ProxyReceiveBufferSize must be >= 512 bytes, or 0 for system default."; + return "ProxyReceiveBufferSize must be >= 512 bytes, or 0 for system default."; } psf->recv_buffer_size = s; @@ -722,7 +718,8 @@ static const char * static const char* set_via_opt(cmd_parms *parms, void *dummy, const char *arg) { - proxy_server_conf *psf = ap_get_module_config(parms->server->module_config, &proxy_module); + proxy_server_conf *psf = + ap_get_module_config(parms->server->module_config, &proxy_module); if (strcasecmp(arg, "Off") == 0) psf->viaopt = via_off; @@ -733,7 +730,7 @@ static const char* else if (strcasecmp(arg, "Full") == 0) psf->viaopt = via_full; else { - return "ProxyVia must be one of: " + return "ProxyVia must be one of: " "off | on | full | block"; } @@ -746,7 +743,7 @@ static const char* proxy_server_conf *psf = ap_get_module_config(parms->server->module_config, &proxy_module); int s = atoi(arg); if (s > 100 || s < 0) { - return "CacheForceCompletion must be <= 100 percent, " + return "CacheForceCompletion must be <= 100 percent, " "or 0 for system default."; } @@ -785,9 +782,8 @@ static const command_rec proxy_cmds[] = "Configure Via: proxy header header to one of: on | off | block | full"), AP_INIT_ITERATE("ProxyNoCache", set_cache_exclude, NULL, RSRC_CONF, "A list of names, hosts or domains for which caching is *not* provided"), - AP_INIT_TAKE1("ProxyForceCacheCompletion", set_cache_completion, NULL, RSRC_CONF, + AP_INIT_TAKE1("ProxyCacheForceCompletion", set_cache_completion, NULL, RSRC_CONF, "Force a http cache completion after this percentage is loaded"), - {NULL} }; @@ -796,7 +792,7 @@ static void register_hooks(void) /* [2] filename-to-URI translation */ ap_hook_translate_name(proxy_trans, NULL, NULL, AP_HOOK_FIRST); /* [8] fixups */ - ap_hook_fixups(proxy_fixup, NULL, NULL, AP_HOOK_FIRST); + ap_hook_fixups(proxy_fixup, NULL, NULL, AP_HOOK_FIRST); /* [1] post read_request handling */ ap_hook_post_read_request(proxy_detect, NULL, NULL, AP_HOOK_FIRST); } @@ -804,11 +800,11 @@ static void register_hooks(void) module AP_MODULE_DECLARE_DATA proxy_module = { STANDARD20_MODULE_STUFF, - NULL, /* create per-directory config structure */ - NULL, /* merge per-directory config structures */ - create_proxy_config, /* create per-server config structure */ - NULL, /* merge per-server config structures */ - proxy_cmds, /* command apr_table_t */ - proxy_handlers, /* handlers */ + NULL, /* create per-directory config structure */ + NULL, /* merge per-directory config structures */ + create_proxy_config, /* create per-server config structure */ + NULL, /* merge per-server config structures */ + proxy_cmds, /* command table */ + proxy_handlers, /* handlers */ register_hooks }; -- 2.40.0