[z3-checkins] r55045 - z3/deliverance/trunk/deliverance

ejucovy at codespeak.net ejucovy at codespeak.net
Wed May 21 01:45:02 CEST 2008


Author: ejucovy
Date: Wed May 21 01:44:58 2008
New Revision: 55045

Modified:
   z3/deliverance/trunk/deliverance/proxyapp.py
Log:
fix up deliverance proxy to support proxy URLs like server.name.com:8080/some/stuff; previously it would set SERVER_PORT:=8080/some/stuff; now it prepends /some/stuff to PATH_INFO. this will very likely still break if app.transparent or app.relocate_content is turned on, because i have no idea what those things do and so did not touch them.

Modified: z3/deliverance/trunk/deliverance/proxyapp.py
==============================================================================
--- z3/deliverance/trunk/deliverance/proxyapp.py	(original)
+++ z3/deliverance/trunk/deliverance/proxyapp.py	Wed May 21 01:44:58 2008
@@ -23,6 +23,17 @@
         self.theme_uri = theme_uri,
         self.rule_uri = rule_uri,
         self.proxy = proxy
+        self.path_info = ''
+
+        # the proxy might look like foo.bar.org:8080/baz/fleem
+        # so we need to save the baz/fleem part to inject
+        # into PATH_INFO later on (during __call__)
+        proxy = proxy.split('/', 1)
+        if len(proxy) > 1:
+            self.proxy = proxy[0]
+            proxy[1] = proxy[1].strip('/')
+            self.path_info = '/%s' % proxy[1]
+
         self.transparent = transparent
         self.debug_headers = debug_headers
         self.subapp = self.make_app()
@@ -59,6 +70,7 @@
                 server, port = self.proxy, '80'
             environ['SERVER_NAME'] = server
             environ['SERVER_PORT'] = port
+            environ['PATH_INFO'] = self.path_info + environ['PATH_INFO']
         return self.deliverance_app(
             environ, start_response)
     


More information about the z3-checkins mailing list