Changeset 17:73577e591432

Show
Ignore:
Timestamp:
05/31/05 15:37:04 (3 years ago)
Author:
Allan Saddi <allan@saddi.com>
branch:
default
convert_revision:
svn:46762da8-4eb7-0310-94e9-d918b60927c8/flup/trunk@1794
Message:

Take scriptName from the WSGI_SCRIPT_NAME environment variable
passed from the web server, if present.
Check if scriptName is None, and if so, don't modify SCRIPT_NAME
& PATH_INFO. For better compatibility with cgi2scgi. (scgi_base)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • ChangeLog

    r15 r17  
     12005-05-31  Allan Saddi  <asaddi@ganymede.saddi.net> 
     2 
     3        * Take scriptName from the WSGI_SCRIPT_NAME environment variable 
     4          passed from the web server, if present. 
     5        * Check if scriptName is None, and if so, don't modify SCRIPT_NAME 
     6          & PATH_INFO. For better compatibility with cgi2scgi. (scgi_base) 
     7 
    182005-05-18  Allan Saddi  <asaddi@ganymede.saddi.net> 
    29 
  • flup/server/ajp_base.py

    r15 r17  
    472472        self._conn = conn 
    473473 
    474         self.environ = { 
    475             'SCRIPT_NAME': conn.server.scriptName 
    476             } 
     474        self.environ = {} 
    477475        self.input = InputStream(conn) 
    478476 
     
    520518    def setRequestURI(self, value): 
    521519        self.environ['REQUEST_URI'] = value 
    522  
    523         scriptName = self._conn.server.scriptName 
    524         if not value.startswith(scriptName): 
    525             self.logger.warning('scriptName does not match request URI') 
    526  
    527         self.environ['PATH_INFO'] = value[len(scriptName):] 
    528520 
    529521    def setRemoteAddr(self, value): 
     
    848840            environ['wsgi.url_scheme'] = 'http' 
    849841 
     842        self._sanitizeEnv(environ) 
     843 
    850844        headers_set = [] 
    851845        headers_sent = [] 
     
    917911                self._appLock.release() 
    918912 
     913    def _sanitizeEnv(self, environ): 
     914        """Fill-in/deduce missing values in environ.""" 
     915        # Namely SCRIPT_NAME/PATH_INFO 
     916        value = environ['REQUEST_URI'] 
     917        scriptName = environ.get('WSGI_SCRIPT_NAME', self.scriptName) 
     918        if not value.startswith(scriptName): 
     919            self.logger.warning('scriptName does not match request URI') 
     920 
     921        environ['PATH_INFO'] = value[len(scriptName):] 
     922        environ['SCRIPT_NAME'] = scriptName 
     923 
    919924    def error(self, request): 
    920925        """ 
  • flup/server/scgi_base.py

    r15 r17  
    444444        """Fill-in/deduce missing values in environ.""" 
    445445        # Namely SCRIPT_NAME/PATH_INFO 
     446        scriptName = environ.get('WSGI_SCRIPT_NAME') 
     447        if scriptName is None: 
     448            scriptName = self.scriptName 
     449        elif scriptName.lower() == 'none': 
     450            scriptName = None 
     451 
     452        if scriptName is None: 
     453            # Do nothing (most likely coming from cgi2scgi) 
     454            return 
     455 
    446456        value = environ['SCRIPT_NAME'] 
    447457        # Pull PATH_INFO from environ, if it exists. (cgi2scgi actually 
    448458        # passes it in.) 
    449459        value += environ.get('PATH_INFO', '') 
    450         scriptName = self.scriptName 
    451460        if not value.startswith(scriptName): 
    452461            self.logger.warning('scriptName does not match request URI')