Beispiel #1
0
    def __call__(self, environ, start_response):
        self._srvcfg = environ['pyfileserver.config']

        requestmethod = environ['REQUEST_METHOD']
        requestpath = urllib.unquote(environ['PATH_INFO'])

        if requestmethod == 'TRACE':
            return self.doTRACE(environ, start_response)

        if requestpath == '*' and requestmethod == 'OPTIONS':
            return self.doOPTIONS(environ, start_response)

        if requestpath == '/' and requestmethod == 'OPTIONS':  #hotfix for WinXP
            return self.doOPTIONS(environ, start_response)

        if 'config_mapping' not in environ['pyfileserver.config']:
            if requestmethod == 'GET':
                self.printConfigErrorMessage()
            else:
                raise HTTPRequestException(
                    processrequesterrorhandler.HTTP_NOT_FOUND)

        (mappedrealm, mappedpath, displaypath,
         resourceAL) = self.resolveRealmURI(environ['pyfileserver.config'],
                                            requestpath)

        if mappedrealm is None:
            raise HTTPRequestException(
                processrequesterrorhandler.HTTP_NOT_FOUND)

        environ['pyfileserver.mappedrealm'] = mappedrealm
        environ['pyfileserver.mappedpath'] = mappedpath
        environ['pyfileserver.mappedURI'] = displaypath
        environ['pyfileserver.resourceAL'] = resourceAL

        if 'HTTP_DESTINATION' in environ:
            desturl = websupportfuncs.getRelativeURL(
                environ['HTTP_DESTINATION'], environ)
            desturl = urllib.unquote(desturl)
            (destrealm, destpath, destdisplaypath,
             destresourceAL) = self.resolveRealmURI(
                 environ['pyfileserver.config'], desturl)

            if destrealm is None:
                raise HTTPRequestException(
                    processrequesterrorhandler.HTTP_BAD_REQUEST)

            environ['pyfileserver.destrealm'] = destrealm
            environ['pyfileserver.destpath'] = destpath
            environ['pyfileserver.destURI'] = destdisplaypath
            environ['pyfileserver.destresourceAL'] = destresourceAL

        if requestmethod == 'OPTIONS':
            return self.doOPTIONSSpec(environ, start_response)

        return self._application(environ, start_response)
    def __call__(self, environ, start_response):
        self._srvcfg = environ['pyfileserver.config']

        requestmethod =  environ['REQUEST_METHOD']
        requestpath = urllib.unquote(environ['PATH_INFO'])

        if requestmethod == 'TRACE':
            return self.doTRACE(environ, start_response)
      
        if requestpath == '*' and requestmethod == 'OPTIONS':
            return self.doOPTIONS(environ, start_response)

        if requestpath == '/' and requestmethod == 'OPTIONS':  #hotfix for WinXP
            return self.doOPTIONS(environ, start_response)

        if 'config_mapping' not in environ['pyfileserver.config']:
            if requestmethod == 'GET': 
                self.printConfigErrorMessage(environ, start_response)
            else:
                raise HTTPRequestException(processrequesterrorhandler.HTTP_NOT_FOUND)
    
        (mappedrealm, mappedpath, displaypath, resourceAL) = self.resolveRealmURI(environ['pyfileserver.config'], requestpath)            
   
        if mappedrealm is None:
            mappedrealm = '/'
            
            if 0:
                raise HTTPRequestException(processrequesterrorhandler.HTTP_NOT_FOUND, comment='No mapped realm for %r from %r' % (requestpath, environ['pyfileserver.config']['resAL_mapping'].keys()))

        environ['pyfileserver.config']['user_mapping'] = {}
        environ['pyfileserver.mappedrealm'] = mappedrealm
        environ['pyfileserver.mappedpath'] = mappedpath 
        environ['pyfileserver.mappedURI'] = displaypath
        environ['pyfileserver.resourceAL'] = resourceAL

        if 'HTTP_DESTINATION' in environ:
            desturl = websupportfuncs.getRelativeURL(environ['HTTP_DESTINATION'], environ)
            (destrealm, destpath, destdisplaypath, destresourceAL) = self.resolveRealmURI(environ['pyfileserver.config'], desturl)            
      
            if destrealm is None:
                 raise HTTPRequestException(processrequesterrorhandler.HTTP_BAD_REQUEST)
   
            environ['pyfileserver.destrealm'] = destrealm
            environ['pyfileserver.destpath'] = destpath 
            environ['pyfileserver.destURI'] = destdisplaypath
            environ['pyfileserver.destresourceAL'] = destresourceAL
      

        if requestmethod == 'OPTIONS':
            return self.doOPTIONSSpec(environ, start_response)
      
        return self._application(environ, start_response)
    def __call__(self, environ, start_response):
        self._srvcfg = environ["pyfileserver.config"]

        requestmethod = environ["REQUEST_METHOD"]
        requestpath = environ["PATH_INFO"]

        if requestmethod == "TRACE":
            return self.doTRACE(environ, start_response)

        if requestpath == "*" and requestmethod == "OPTIONS":
            return self.doOPTIONS(environ, start_response)

        if requestpath == "/" and requestmethod == "OPTIONS":
            return self.doOPTIONS(environ, start_response)

        if "config_mapping" not in environ["pyfileserver.config"]:
            if requestmethod == "GET":
                self.printConfigErrorMessage()
            else:
                raise HTTPRequestException(processrequesterrorhandler.HTTP_NOT_FOUND)

        (mappedrealm, mappedpath, displaypath) = resolveRealmURI(
            environ["pyfileserver.config"]["config_mapping"], requestpath
        )

        if mappedrealm == None:
            raise HTTPRequestException(processrequesterrorhandler.HTTP_NOT_FOUND)

        environ["pyfileserver.mappedrealm"] = mappedrealm
        environ["pyfileserver.mappedpath"] = mappedpath
        environ["pyfileserver.mappedURI"] = displaypath

        if "HTTP_DESTINATION" in environ:
            desturl = websupportfuncs.getRelativeURL(environ["HTTP_DESTINATION"], environ)
            (destrealm, destpath, destdisplaypath) = resolveRealmURI(
                environ["pyfileserver.config"]["config_mapping"], desturl
            )

            if destrealm == None:
                raise HTTPRequestException(processrequesterrorhandler.HTTP_BAD_REQUEST)

            environ["pyfileserver.destrealm"] = destrealm
            environ["pyfileserver.destpath"] = destpath
            environ["pyfileserver.destURI"] = destdisplaypath

        if requestmethod == "OPTIONS":
            return self.doOPTIONSSpec(environ, start_response)

        return self._application(environ, start_response)