[galaxy-dev] [hg] galaxy 1694: Allow upstream proxy to set wsgi.url_scheme, s...
Nate Coraor
nate at bx.psu.edu
Fri Jan 9 14:09:41 EST 2009
details: http://www.bx.psu.edu/hg/galaxy/rev/58744d4bda7b
changeset: 1694:58744d4bda7b
user: Nate Coraor <nate at bx.psu.edu>
date: Fri Jan 09 14:07:16 2009 -0500
description:
Allow upstream proxy to set wsgi.url_scheme, so link generation is
correct if the proxy uses a different transport with clients than it
does with Galaxy. This doesn't work automatically. In Apache, you'd
need to set the header yourself:
RequestHeader set X-URL-SCHEME https
For a discussion on how this affects links to the UCSC Genome Browser,
see:
http://mail.bx.psu.edu/pipermail/galaxy-user/2009-January/000430.html
2 file(s) affected in this change:
lib/galaxy/web/framework/middleware/remoteuser.py
lib/galaxy/web/framework/middleware/xforwardedhost.py
diffs (25 lines):
diff -r 4c1d1ce9265f -r 58744d4bda7b lib/galaxy/web/framework/middleware/remoteuser.py
--- a/lib/galaxy/web/framework/middleware/remoteuser.py Thu Jan 08 11:04:19 2009 -0500
+++ b/lib/galaxy/web/framework/middleware/remoteuser.py Fri Jan 09 14:07:16 2009 -0500
@@ -62,6 +62,7 @@
# in the event of a lookup failure, deny access
host = None
if host in UCSC_SERVERS:
+ environ[ 'HTTP_REMOTE_USER' ] = 'ucsc_browser_display at example.org'
return self.app( environ, start_response )
# Apache sets REMOTE_USER to the string '(null)' when using the
# Rewrite* method for passing REMOTE_USER and a user is
diff -r 4c1d1ce9265f -r 58744d4bda7b lib/galaxy/web/framework/middleware/xforwardedhost.py
--- a/lib/galaxy/web/framework/middleware/xforwardedhost.py Thu Jan 08 11:04:19 2009 -0500
+++ b/lib/galaxy/web/framework/middleware/xforwardedhost.py Fri Jan 09 14:07:16 2009 -0500
@@ -14,4 +14,8 @@
if x_forwarded_for:
environ[ 'ORGINAL_REMOTE_ADDR' ] = environ[ 'REMOTE_ADDR' ]
environ[ 'REMOTE_ADDR' ] = x_forwarded_for
- return self.app( environ, start_response )
\ No newline at end of file
+ x_url_scheme = environ.get( 'HTTP_X_URL_SCHEME', None )
+ if x_url_scheme:
+ environ[ 'original_wsgi.url_scheme' ] = environ[ 'wsgi.url_scheme' ]
+ environ[ 'wsgi.url_scheme' ] = x_url_scheme
+ return self.app( environ, start_response )
More information about the galaxy-dev
mailing list