22
22
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25
# $Id: scgi_base.py 2113 2006-11-25 02:08:55Z asaddi $
25
# $Id: scgi_base.py 2306 2007-01-02 22:15:53Z asaddi $
27
27
__author__ = 'Allan Saddi <allan@saddi.com>'
28
__version__ = '$Revision: 2113 $'
28
__version__ = '$Revision: 2306 $'
273
274
# What Request class to use.
274
275
requestClass = Request
276
def __init__(self, application, scriptName='', environ=None,
277
def __init__(self, application, scriptName=NoDefault, environ=None,
277
278
multithreaded=True, multiprocess=False,
278
279
bindAddress=('localhost', 4000), umask=None,
279
280
allowedServers=NoDefault,
472
473
def _sanitizeEnv(self, environ):
473
474
"""Fill-in/deduce missing values in environ."""
474
# Namely SCRIPT_NAME/PATH_INFO
475
# Ensure QUERY_STRING exists
476
if not environ.has_key('QUERY_STRING'):
477
environ['QUERY_STRING'] = ''
479
# Check WSGI_SCRIPT_NAME
475
480
scriptName = environ.get('WSGI_SCRIPT_NAME')
476
481
if scriptName is None:
477
482
scriptName = self.scriptName
478
elif scriptName.lower() == 'none':
484
warnings.warn('WSGI_SCRIPT_NAME environment variable for scgi '
485
'servers is deprecated',
487
if scriptName.lower() == 'none':
481
490
if scriptName is None:
482
491
# Do nothing (most likely coming from cgi2scgi)
485
value = environ['SCRIPT_NAME']
486
# Pull PATH_INFO from environ, if it exists. (cgi2scgi actually
488
value += environ.get('PATH_INFO', '')
489
if not value.startswith(scriptName):
490
self.logger.warning('scriptName does not match request URI')
492
environ['PATH_INFO'] = value[len(scriptName):]
493
environ['SCRIPT_NAME'] = scriptName
494
if scriptName is NoDefault:
495
# Pull SCRIPT_NAME/PATH_INFO from environment, with empty defaults
496
if not environ.has_key('SCRIPT_NAME'):
497
environ['SCRIPT_INFO'] = ''
498
if not environ.has_key('PATH_INFO'):
499
environ['PATH_INFO'] = ''
501
# Configured scriptName
502
warnings.warn('Configured SCRIPT_NAME is deprecated\n'
503
'Do not use WSGI_SCRIPT_NAME or the scriptName\n'
504
'keyword parameter -- they will be going away',
507
value = environ['SCRIPT_NAME']
508
value += environ.get('PATH_INFO', '')
509
if not value.startswith(scriptName):
510
self.logger.warning('scriptName does not match request URI')
512
environ['PATH_INFO'] = value[len(scriptName):]
513
environ['SCRIPT_NAME'] = scriptName
495
515
def error(self, request):