diff options
author | iroiro123 <user1@cygwin> | 2015-06-18 23:53:27 +0900 |
---|---|---|
committer | iroiro123 <user1@cygwin> | 2015-06-18 23:53:27 +0900 |
commit | 59ec291b6cff1dfa83b316401418b6308df93aac (patch) | |
tree | 23a7b348104f17366518f28bc6bea71b97864912 /libmproxy/protocol | |
parent | e9fecbf83077ec18b764b2b4c0065698a023f762 (diff) | |
download | mitmproxy-59ec291b6cff1dfa83b316401418b6308df93aac.tar.gz mitmproxy-59ec291b6cff1dfa83b316401418b6308df93aac.tar.bz2 mitmproxy-59ec291b6cff1dfa83b316401418b6308df93aac.zip |
HTTP Transparent Proxy
Diffstat (limited to 'libmproxy/protocol')
-rw-r--r-- | libmproxy/protocol/http.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/libmproxy/protocol/http.py b/libmproxy/protocol/http.py index 9c143386..c7479b76 100644 --- a/libmproxy/protocol/http.py +++ b/libmproxy/protocol/http.py @@ -1328,7 +1328,20 @@ class HTTPHandler(ProtocolHandler): # value at flow.server_conn self.c.set_server_address((request.host, request.port)) flow.server_conn = self.c.server_conn - + + elif request.form_in == "relative": + if self.c.config.mode == "httptransparent": + h = request.headers.get_first("host") + if h is None: + raise http.HttpError( + 400, + "Invalid request: No Host header" + ) + p = http.parse_url("http://" + h) + request.host, request.port = p[1], p[2] + self.c.set_server_address((request.host, request.port)) + flow.server_conn = self.c.server_conn + return None raise http.HttpError( 400, "Invalid HTTP request form (expected: %s, got: %s)" % ( |