Forward browser request to the rp request
This commit is contained in:
parent
3861796033
commit
e17161732b
31
pocs/poc1.py
31
pocs/poc1.py
|
@ -9,8 +9,11 @@ import sys
|
|||
import traceback
|
||||
from cgi import escape
|
||||
|
||||
from gevent.pywsgi import WSGIServer
|
||||
|
||||
from gevent.pywsgi import WSGIServer
|
||||
#import poster.streaminghttp
|
||||
|
||||
#opener = poster.streaminghttp.register_openers()
|
||||
|
||||
drop_headers = ['transfer-encoding']
|
||||
|
||||
|
@ -50,16 +53,25 @@ class RequestApp(object):
|
|||
def on_request(self, start_response):
|
||||
# TODO: manage header and cookie modifications
|
||||
print "on_request"
|
||||
data = self.env['wsgi.input'].read()
|
||||
if not data:
|
||||
data = None
|
||||
print data
|
||||
print self.env
|
||||
if self.env.get('QUERY_STRING'):
|
||||
url = "http://" + self.config['remote_host'] + self.env['PATH_INFO'] + "?" + self.env['QUERY_STRING']
|
||||
else:
|
||||
url = "http://" + self.config['remote_host'] + self.env['PATH_INFO']
|
||||
print url
|
||||
req = urllib2.Request(url, data)
|
||||
if self.env['REQUEST_METHOD'] == 'POST':
|
||||
data = self.env['wsgi.input'].read()
|
||||
req = urllib2.Request(url, data)
|
||||
else:
|
||||
req = urllib2.Request(url)
|
||||
# Pass the browser headers to the request
|
||||
for name in (name for name in self.env if name.startswith('HTTP_')):
|
||||
value = self.env[name]
|
||||
print name
|
||||
if name != "HTTP_HOST" and name != "HTTP_REFERER":
|
||||
name = name.split('HTTP_')[1].replace('_', '-')
|
||||
req.add_header(name, value)
|
||||
print req.headers
|
||||
try:
|
||||
response = urllib2.urlopen(req)
|
||||
except Exception:
|
||||
|
@ -81,13 +93,6 @@ class RequestApp(object):
|
|||
for key, value in headers.items():
|
||||
if key in drop_headers:
|
||||
del headers[key]
|
||||
if key == "set-cookie":
|
||||
if self.config['remote_host'] in value:
|
||||
value = value.replace(self.config['remote_host'], self.env['HTTP_HOST'])
|
||||
headers[key] = value
|
||||
print value
|
||||
print "\n\n+++++++++++++++++++++++++++++++++++++"
|
||||
print "Cookie : %s" % headers[key]
|
||||
start_response('%d %s' % (code, status), headers.items())
|
||||
return [data]
|
||||
|
||||
|
|
Reference in New Issue