예제 #1
0
파일: proxy.py 프로젝트: iitwebdev/lectures
 def __call__(self, environ, start_response):
     exactproxy.filter_paste_httpserver_proxy_environ(environ)
     url = construct_url(environ)
     if self.store.has_url(url):
         app = self.store.static_serve_app(url)
         return app(environ, start_response)
     return exactproxy.proxy_exact_request(environ, start_response)
예제 #2
0
 def send_to_subprocess(self, environ, start_response):
     ## FIXME: I should use the WSGIProxy proxying code, not
     ## another copy of it:
     environ['HTTP_X_SCRIPT_NAME'] = environ.get('SCRIPT_NAME', '')
     environ['HTTP_X_FORWARDED_SCHEME'] = environ['wsgi.url_scheme']
     environ['HTTP_X_FORWARDED_FOR'] = environ['REMOTE_ADDR']
     environ['SERVER_NAME'] = '127.0.0.1'
     environ['SERVER_PORT'] = str(self.spawned_port)
     return proxy_exact_request(environ, start_response)
 def send_to_subprocess(self, environ, start_response):
     ## FIXME: I should use the WSGIProxy proxying code, not
     ## another copy of it:
     environ['HTTP_X_SCRIPT_NAME'] = environ.get('SCRIPT_NAME', '')
     environ['HTTP_X_FORWARDED_SCHEME'] = environ['wsgi.url_scheme']
     environ['HTTP_X_FORWARDED_FOR'] = environ['REMOTE_ADDR']
     environ['SERVER_NAME'] = '127.0.0.1'
     environ['SERVER_PORT'] = str(self.spawned_port)
     return proxy_exact_request(environ, start_response)
예제 #4
0
    def __call__(self, environ, start_response):
        """
        Working function of the class.  Implements the WSGI interface to the
        application.  That is, this does the work of proxying.
        """
        self.environ = environ
        self.start_response = start_response

        # Start off by examining auth
        if self.auth is not None:
            authres = self.auth(deepcopy(environ))
            if authres is not True:
                start_response("401 Unauthorized", [])
                return str(authres)

        # Okay, let's look at protocol.
        if self.target_protocol != "":
            if self.target_protocol != "http" and \
                    self.target_protocol != "https":
                raise ValueError("target_protocol must be http or https"
                                 "(case insensitive)")
            self.environ['wsgi.url_scheme'] = self.target_protocol
            if self.target_protocol == "https":
                self.environ['HTTPS'] = "on"
            elif 'HTTPS' in self.environ:
                del self.environ['HTTPS']
        # If the user didn't set anything, we want the same scheme to be used
        # But, force it lower case
        self.environ['wsgi.url_scheme'] = \
            self.environ['wsgi.url_scheme'].lower()

        # Now we can pick the appropriate target port
        if self.server_port != 0:
            self.environ['SERVER_PORT'] = str(self.server_port)
        elif self.environ['wsgi.url_scheme'] == "http":
            self.environ['SERVER_PORT'] = "80"
        elif self.environ['wsgi.url_scheme'] == "https":
            self.environ['SERVER_PORT'] = "443"
        else:
            # Fall through and error
            raise ValueError("WSGI Environ passed a bad url_scheme")

        self.environ['HTTP_HOST'] = self.server_name + ":" + \
            self.environ['SERVER_PORT']
        self.environ['SERVER_NAME'] = self.server_name

        return proxy_exact_request(self.environ, self.proxy_start_response)
예제 #5
0
 def __call__(self, environ, start_response):
     from wsgiproxy.exactproxy import proxy_exact_request
     path_info = environ['PATH_INFO']
     for prefix, dest in self.proxies:
         if path_info.startswith(prefix + '/'):
             print >> environ['wsgi.errors'], 'Sending request to %s' % dest
             environ['PATH_INFO'] = path_info[len(prefix):]
             parts = urlparse.urlsplit(dest)
             environ['wsgi.url_scheme'] = parts.scheme
             if ':' in parts.netloc:
                 host, port = parts.netloc.split(':', 1)
             else:
                 host, port = parts.netloc, '80'
             environ['SERVER_NAME'] = environ['HTTP_HOST'] = host
             environ['SERVER_PORT'] = port
             environ['SCRIPT_NAME'] = parts.path
             return proxy_exact_request(environ, start_response)
     return self.app(environ, start_response)
예제 #6
0
파일: runner.py 프로젝트: jfsiii/graphs
 def __call__(self, environ, start_response):
     from wsgiproxy.exactproxy import proxy_exact_request
     path_info = environ['PATH_INFO']
     for prefix, dest in self.proxies:
         if path_info.startswith(prefix + '/'):
             print >> environ['wsgi.errors'], 'Sending request to %s' % dest
             environ['PATH_INFO'] = path_info[len(prefix):]
             parts = urlparse.urlsplit(dest)
             environ['wsgi.url_scheme'] = parts.scheme
             if ':' in parts.netloc:
                 host, port = parts.netloc.split(':', 1)
             else:
                 host, port = parts.netloc, '80'
             environ['SERVER_NAME'] = environ['HTTP_HOST'] = host
             environ['SERVER_PORT'] = port
             environ['SCRIPT_NAME'] = parts.path
             return proxy_exact_request(environ, start_response)
     return self.app(environ, start_response)
 def forward_request(self, environ, start_response):
     return proxy_exact_request(environ, start_response)
예제 #8
0
파일: app.py 프로젝트: fkeet/WSGIProxy
 def forward_request(self, environ, start_response):
     return proxy_exact_request(environ, start_response)
예제 #9
0
파일: app.py 프로젝트: zombified/factored
 def __call__(self, environ, start_response):
     environ['SERVER_NAME'] = self.server
     environ['SERVER_PORT'] = self.port
     if self.scheme:
         environ['wsgi.url_scheme'] = self.scheme
     return proxy_exact_request(environ, start_response)
예제 #10
0
파일: route.py 프로젝트: zeebo/router
	def forwarding(environ, start_response):
		environ['SERVER_PORT'] = BACKEND_WEB_PORT
		return proxy_exact_request(environ, start_response)
예제 #11
0
파일: app.py 프로젝트: youyufund/factored
 def __call__(self, environ, start_response):
     environ['SERVER_NAME'] = self.server
     environ['SERVER_PORT'] = self.port
     if self.scheme:
         environ['wsgi.url_scheme'] = self.scheme
     return proxy_exact_request(environ, start_response)