diff -u /home/rlake/apachesvn/trunk/modules/proxy/mod_proxy.c /home/rlake/proxy21/mod_proxy.c --- /home/rlake/apachesvn/trunk/modules/proxy/mod_proxy.c Wed Mar 23 00:22:43 2005 +++ /home/rlake/proxy21/mod_proxy.c Fri Apr 8 11:06:26 2005 @@ -677,6 +677,11 @@ /* TODO: reclycle direct worker */ } } + if (conf->auth_override && access_status == HTTP_UNAUTHORIZED) { + apr_table_unset(r->err_headers_out, "WWW-Authenticate"); + r->status_line = NULL; + return conf->auth_override; + } return access_status; } @@ -715,6 +720,8 @@ ps->maxfwd_set = 0; ps->error_override = 0; ps->error_override_set = 0; + ps->auth_override = 0; + ps->auth_override_set = 0; ps->preserve_host_set = 0; ps->preserve_host = 0; ps->timeout = 0; @@ -756,6 +763,7 @@ ps->io_buffer_size = (overrides->io_buffer_size_set == 0) ? base->io_buffer_size : overrides->io_buffer_size; ps->maxfwd = (overrides->maxfwd_set == 0) ? base->maxfwd : overrides->maxfwd; ps->error_override = (overrides->error_override_set == 0) ? base->error_override : overrides->error_override; + ps->auth_override = (overrides->auth_override_set == 0) ? base->auth_override : overrides->auth_override; ps->preserve_host = (overrides->preserve_host_set == 0) ? base->preserve_host : overrides->preserve_host; ps->timeout= (overrides->timeout_set == 0) ? base->timeout : overrides->timeout; ps->badopt = (overrides->badopt_set == 0) ? base->badopt : overrides->badopt; @@ -1150,6 +1158,23 @@ return NULL; } static const char * + set_proxy_auth_override(cmd_parms *parms, void *dummy, const char *arg) +{ + proxy_server_conf *psf = + ap_get_module_config(parms->server->module_config, &proxy_module); + + if (strcmp(arg, "403") == 0) + psf->auth_override = 403; + else if (strcmp(arg, "404") == 0) + psf->auth_override = 404; + else if (strcasecmp(arg, "off") == 0) + psf->auth_override = 0; + else + return "ProxyAuthOverride must be 403, 404 or Off"; + psf->auth_override_set = 1; + return NULL; +} +static const char * set_preserve_host(cmd_parms *parms, void *dummy, int flag) { proxy_server_conf *psf = @@ -1557,6 +1582,8 @@ "Configure Via: proxy header header to one of: on | off | block | full"), AP_INIT_FLAG("ProxyErrorOverride", set_proxy_error_override, NULL, RSRC_CONF, "use our error handling pages instead of the servers' we are proxying"), + AP_INIT_TAKE1("ProxyAuthOverride", set_proxy_auth_override, NULL, RSRC_CONF, + "override authentication requests from the origin server: 403 | 404 | Off"), AP_INIT_FLAG("ProxyPreserveHost", set_preserve_host, NULL, RSRC_CONF, "on if we should preserve host header while proxying"), AP_INIT_TAKE1("ProxyTimeout", set_proxy_timeout, NULL, RSRC_CONF, diff -u /home/rlake/apachesvn/trunk/modules/proxy/mod_proxy.h /home/rlake/proxy21/mod_proxy.h --- /home/rlake/apachesvn/trunk/modules/proxy/mod_proxy.h Wed Mar 23 00:22:43 2005 +++ /home/rlake/proxy21/mod_proxy.h Fri Apr 8 10:56:40 2005 @@ -159,6 +159,8 @@ */ int error_override; int error_override_set; + int auth_override; + int auth_override_set; int preserve_host; int preserve_host_set; apr_interval_time_t timeout;