>Number:         558
>Category:       mod_proxy
>Synopsis:       except internal servers from ProxyRemote * http://myfirewall
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    apache (Apache HTTP Project)
>State:          open
>Class:          change-request
>Submitter-Id:   apache
>Arrival-Date:   Wed May  7 20:00:02 1997
>Originator:     [EMAIL PROTECTED]
>Organization:
apache
>Release:        1.2b10
>Environment:
solaris 2.5.1
gcc 2.7.2
>Description:
My users seem to be incapable of correctly using the "no proxy" browser 
setting.  I need an internal proxy that forwards most requests out the firewall,
and sends direct requests to internal servers.  My internet firewall proxy
can't forward to internal servers.  This works for most of the internal
servers:

ProxyRemote http://www.internal-dept1.mydomain 
http://www.internal-dept1.mydomain
ProxyRemote http://www.internal-dept2.mydomain 
http://www.internal-dept2.mydomain
ProxyRemote * http://myfirewall.mydomain

The internal servers receive "GET http://www.internal-dept1.mydomain/path";,
recognize their own hostname, and strip it off.  Unfortunately, I have 
an application (Concord Nethealth) with an integral web server that's 
too stupid to do that.  I need the proxy to send to it in direct mode.

>How-To-Repeat:

>Fix:
Change the ProxyRemote parser to accept "direct" as the remote proxy.

ProxyRemote http://www.internal-dept1.mydomain direct
ProxyRemote http://www.internal-dept2.mydomain direct
ProxyRemote * http://myfirewall.mydomain

--- mod_proxy.c_orig    Wed May  7 22:12:41 1997
+++ mod_proxy.c Wed May  7 22:16:15 1997
@@ -224,6 +224,8 @@
            if (strcmp(ents[i].protocol, "http") == 0)
                rc = proxy_http_handler(r, cr, url, ents[i].hostname,
                    ents[i].port);
+           else if (strcmp(ents[i].protocol, "direct") == 0)
+               break;
            else rc = DECLINED;
 
  /* an error or success */
@@ -282,6 +284,16 @@
     struct proxy_remote *new;
     char *p, *q;
     int port;
+
+    if (! strcmp(r, "direct")) 
+    {
+       new = push_array (conf->proxies);
+       new->scheme = f;
+       new->protocol = r;
+       new->hostname = r;
+       new->port = 0;
+       return NULL;
+    }
 
     p = strchr(r, ':');
     if (p == NULL || p[1] != '/' || p[2] != '/' || p[3] == '\0')
%0
>Audit-Trail:
>Unformatted:


Reply via email to