summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorianb <devnull@localhost>2007-02-21 04:46:33 +0000
committerianb <devnull@localhost>2007-02-21 04:46:33 +0000
commit91de12ec4261e9f527a2768cde6b2e879e34401c (patch)
tree1de2e86e8e20bbf7f8ff2281f284bdc546650b7c
parente28e804cab1e7c6386ab92f60b32da8a040e1b6a (diff)
downloadpastedeploy-91de12ec4261e9f527a2768cde6b2e879e34401c.tar.gz
allow PrefixMiddleware to set the scheme
-rw-r--r--docs/news.txt6
-rw-r--r--paste/deploy/config.py13
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__