aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/proxy
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2015-08-16 23:25:02 +0200
committerMaximilian Hils <git@maximilianhils.com>2015-08-16 23:25:02 +0200
commita2b85048892626e6834df06e9022498814724636 (patch)
tree4b020376b618617c44355710aba4cbd6ba82b6b0 /libmproxy/proxy
parentc04fa1b233224d28e85be34ab5b6a8718497488c (diff)
downloadmitmproxy-a2b85048892626e6834df06e9022498814724636.tar.gz
mitmproxy-a2b85048892626e6834df06e9022498814724636.tar.bz2
mitmproxy-a2b85048892626e6834df06e9022498814724636.zip
improve protocol handling
Diffstat (limited to 'libmproxy/proxy')
-rw-r--r--libmproxy/proxy/connection.py7
-rw-r--r--libmproxy/proxy/server.py11
2 files changed, 13 insertions, 5 deletions
diff --git a/libmproxy/proxy/connection.py b/libmproxy/proxy/connection.py
index f33e84cd..f92b53aa 100644
--- a/libmproxy/proxy/connection.py
+++ b/libmproxy/proxy/connection.py
@@ -96,6 +96,9 @@ class ServerConnection(tcp.TCPClient, stateobject.StateObject):
self.timestamp_ssl_setup = None
self.protocol = None
+ def __nonzero__(self):
+ return bool(self.connection)
+
def __repr__(self):
if self.ssl_established and self.sni:
ssl = "[ssl: {0}] ".format(self.sni)
@@ -132,8 +135,8 @@ class ServerConnection(tcp.TCPClient, stateobject.StateObject):
d.update(
address={"address": self.address(),
"use_ipv6": self.address.use_ipv6},
- source_address= ({"address": self.source_address(),
- "use_ipv6": self.source_address.use_ipv6} if self.source_address else None),
+ source_address=({"address": self.source_address(),
+ "use_ipv6": self.source_address.use_ipv6} if self.source_address else None),
cert=self.cert.to_pem() if self.cert else None
)
return d
diff --git a/libmproxy/proxy/server.py b/libmproxy/proxy/server.py
index ffca55ee..e23a7d72 100644
--- a/libmproxy/proxy/server.py
+++ b/libmproxy/proxy/server.py
@@ -80,7 +80,12 @@ class ConnectionHandler2:
self.config,
self.channel
)
- root_layer = protocol2.HttpProxy(root_context)
+
+ # FIXME: properly parse config
+ if self.config.mode == "upstream":
+ root_layer = protocol2.HttpUpstreamProxy(root_context, ("localhost", 8081))
+ else:
+ root_layer = protocol2.HttpProxy(root_context)
try:
for message in root_layer():
@@ -302,7 +307,7 @@ class ConnectionHandler:
if ssl_cert_err is not None:
self.log(
"SSL verification failed for upstream server at depth %s with error: %s" %
- (ssl_cert_err['depth'], ssl_cert_err['errno']),
+ (ssl_cert_err['depth'], ssl_cert_err['errno']),
"error")
self.log("Ignoring server verification error, continuing with connection", "error")
except tcp.NetLibError as v:
@@ -318,7 +323,7 @@ class ConnectionHandler:
if ssl_cert_err is not None:
self.log(
"SSL verification failed for upstream server at depth %s with error: %s" %
- (ssl_cert_err['depth'], ssl_cert_err['errno']),
+ (ssl_cert_err['depth'], ssl_cert_err['errno']),
"error")
self.log("Aborting connection attempt", "error")
raise e