diff options
author | ianb <devnull@localhost> | 2007-02-21 04:46:33 +0000 |
---|---|---|
committer | ianb <devnull@localhost> | 2007-02-21 04:46:33 +0000 |
commit | 91de12ec4261e9f527a2768cde6b2e879e34401c (patch) | |
tree | 1de2e86e8e20bbf7f8ff2281f284bdc546650b7c | |
parent | e28e804cab1e7c6386ab92f60b32da8a040e1b6a (diff) | |
download | pastedeploy-91de12ec4261e9f527a2768cde6b2e879e34401c.tar.gz |
allow PrefixMiddleware to set the scheme
-rw-r--r-- | docs/news.txt | 6 | ||||
-rw-r--r-- | paste/deploy/config.py | 13 |
2 files changed, 15 insertions, 4 deletions
diff --git a/docs/news.txt b/docs/news.txt index 048dcb2..15ef148 100644 --- a/docs/news.txt +++ b/docs/news.txt @@ -1,6 +1,12 @@ Paste Deployment News ===================== +svn trunk +--------- + +* Added ``scheme`` option to ``PrefixMiddleware``, so you can force a + scheme (E.g., when proxying an HTTPS connection over HTTP). + 1.1 --- diff --git a/paste/deploy/config.py b/paste/deploy/config.py index dd81195..094f72e 100644 --- a/paste/deploy/config.py +++ b/paste/deploy/config.py @@ -236,16 +236,19 @@ class PrefixMiddleware(object): scheme). This is useful in situations where there is port forwarding going on, and the server believes itself to be on a different port than what the outside world sees. - + + You can also use ``scheme`` to explicitly set the scheme (like + ``scheme = https``). """ def __init__(self, app, global_conf=None, prefix='/', translate_forwarded_server=True, - force_port=None): + force_port=None, scheme=None): self.app = app self.prefix = prefix.rstrip('/') self.translate_forwarded_server = translate_forwarded_server self.regprefix = re.compile("^%s(.*)$" % self.prefix) self.force_port = force_port + self.scheme = scheme def __call__(self, environ, start_response): url = environ['PATH_INFO'] @@ -268,17 +271,19 @@ class PrefixMiddleware(object): port = '443' environ['SERVER_PORT'] = port environ['HTTP_HOST'] = host + if self.scheme is not None: + environ['wsgi.url_scheme'] = self.scheme return self.app(environ, start_response) def make_prefix_middleware( app, global_conf, prefix='/', translate_forwarded_server=True, - force_port=None): + force_port=None, scheme=None): from paste.deploy.converters import asbool translate_forwarded_server = asbool(translate_forwarded_server) return PrefixMiddleware( app, prefix=prefix, translate_forwarded_server=translate_forwarded_server, - force_port=force_port) + force_port=force_port, scheme=scheme) make_prefix_middleware.__doc__ = PrefixMiddleware.__doc__ |