summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Saddi <allan@saddi.com>2005-05-18 23:13:01 +0000
committerAllan Saddi <allan@saddi.com>2005-05-18 23:13:01 +0000
commitf3fb00ece0ca38ab13c8ba413e6c7b6e8fa59492 (patch)
treecca6502f5422eba66ee13aebd10c683152fd70db
parent8f4e536580563b7aadbe71e722c475e81c679b4e (diff)
downloadflup-f3fb00ece0ca38ab13c8ba413e6c7b6e8fa59492.tar.gz
Change default allowedServers for ajp and scgi to ['127.0.0.1'].
Accept PATH_INFO from environment for scgi servers, in case cgi2scgi is being used.
-rw-r--r--ChangeLog3
-rw-r--r--flup/server/ajp_base.py10
-rw-r--r--flup/server/scgi_base.py13
3 files changed, 22 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 17880aa..b254785 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2005-05-18 Allan Saddi <asaddi@ganymede.saddi.net>
+ * Change default allowedServers for ajp and scgi to ['127.0.0.1'].
+ * Accept PATH_INFO from environment for scgi servers, in case
+ cgi2scgi is being used. Submitted by Ian Bicking.
* Change threaded servers so wsgi.multiprocess is False by default.
Allow it to be changed by keyword argument.
* Fix wsgi.multiprocess for scgi_fork. (Set to True.)
diff --git a/flup/server/ajp_base.py b/flup/server/ajp_base.py
index e86792a..e6c7aee 100644
--- a/flup/server/ajp_base.py
+++ b/flup/server/ajp_base.py
@@ -43,6 +43,9 @@ import threading
__all__ = ['BaseAJPServer']
+class NoDefault(object):
+ pass
+
# Packet header prefixes.
SERVER_PREFIX = '\x12\x34'
CONTAINER_PREFIX = 'AB'
@@ -758,7 +761,7 @@ class BaseAJPServer(object):
def __init__(self, application, scriptName='', environ=None,
multithreaded=True, multiprocess=False,
- bindAddress=('localhost', 8009), allowedServers=None,
+ bindAddress=('localhost', 8009), allowedServers=NoDefault,
loggingLevel=logging.INFO):
"""
scriptName is the initial portion of the URL path that "belongs"
@@ -781,7 +784,8 @@ class BaseAJPServer(object):
allowedServers must be None or a list of strings representing the
IPv4 addresses of servers allowed to connect. None means accept
- connections from anywhere.
+ connections from anywhere. By default, it is a list containing
+ the single item '127.0.0.1'.
loggingLevel sets the logging level of the module-level logger.
"""
@@ -794,6 +798,8 @@ class BaseAJPServer(object):
self.multithreaded = multithreaded
self.multiprocess = multiprocess
self._bindAddress = bindAddress
+ if allowedServers is NoDefault:
+ allowedServers = ['127.0.0.1']
self._allowedServers = allowedServers
# Used to force single-threadedness.
diff --git a/flup/server/scgi_base.py b/flup/server/scgi_base.py
index 8da1c36..be8dede 100644
--- a/flup/server/scgi_base.py
+++ b/flup/server/scgi_base.py
@@ -43,6 +43,9 @@ import threading
__all__ = ['BaseSCGIServer']
+class NoDefault(object):
+ pass
+
# The main classes use this name for logging.
LoggerName = 'scgi-wsgi'
@@ -269,7 +272,7 @@ class BaseSCGIServer(object):
def __init__(self, application, scriptName='', environ=None,
multithreaded=True, multiprocess=False,
- bindAddress=('localhost', 4000), allowedServers=None,
+ bindAddress=('localhost', 4000), allowedServers=NoDefault,
loggingLevel=logging.INFO):
"""
scriptName is the initial portion of the URL path that "belongs"
@@ -292,7 +295,8 @@ class BaseSCGIServer(object):
allowedServers must be None or a list of strings representing the
IPv4 addresses of servers allowed to connect. None means accept
- connections from anywhere.
+ connections from anywhere. By default, it is a list containing
+ the single item '127.0.0.1'.
loggingLevel sets the logging level of the module-level logger.
"""
@@ -305,6 +309,8 @@ class BaseSCGIServer(object):
self.multithreaded = multithreaded
self.multiprocess = multiprocess
self._bindAddress = bindAddress
+ if allowedServers is NoDefault:
+ allowedServers = ['127.0.0.1']
self._allowedServers = allowedServers
# Used to force single-threadedness.
@@ -438,6 +444,9 @@ class BaseSCGIServer(object):
"""Fill-in/deduce missing values in environ."""
# Namely SCRIPT_NAME/PATH_INFO
value = environ['SCRIPT_NAME']
+ # Pull PATH_INFO from environ, if it exists. (cgi2scgi actually
+ # passes it in.)
+ value += environ.get('PATH_INFO', '')
scriptName = self.scriptName
if not value.startswith(scriptName):
self.logger.warning('scriptName does not match request URI')