diff options
author | Thomas Kriechbaumer <thomas@kriechbaumer.name> | 2015-07-27 11:46:49 +0200 |
---|---|---|
committer | Thomas Kriechbaumer <thomas@kriechbaumer.name> | 2015-07-30 13:53:17 +0200 |
commit | 89f22f735944989912a7a0394dd7e80d420cb0f3 (patch) | |
tree | 426e961c5c98f9bf917e628df09ec5fc53c41442 /libmproxy/proxy | |
parent | d2ae6b630e7924479aefbb9f0193fdfcbae8fea6 (diff) | |
download | mitmproxy-89f22f735944989912a7a0394dd7e80d420cb0f3.tar.gz mitmproxy-89f22f735944989912a7a0394dd7e80d420cb0f3.tar.bz2 mitmproxy-89f22f735944989912a7a0394dd7e80d420cb0f3.zip |
refactor connection & protocol handling
Diffstat (limited to 'libmproxy/proxy')
-rw-r--r-- | libmproxy/proxy/connection.py | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/libmproxy/proxy/connection.py b/libmproxy/proxy/connection.py index 5219023b..54b3688e 100644 --- a/libmproxy/proxy/connection.py +++ b/libmproxy/proxy/connection.py @@ -68,7 +68,15 @@ class ClientConnection(tcp.BaseHandler, stateobject.StateObject): return f def convert_to_ssl(self, *args, **kwargs): - tcp.BaseHandler.convert_to_ssl(self, *args, **kwargs) + def alpn_select_callback(conn_, options): + if alpn_select in options: + return bytes(alpn_select) + else: # pragma no cover + return options[0] + + # TODO: read ALPN from server and select same proto for client conn + + tcp.BaseHandler.convert_to_ssl(self, alpn_select=alpn_select_callback, *args, **kwargs) self.timestamp_ssl_setup = utils.timestamp() def finish(self): @@ -160,7 +168,10 @@ class ServerConnection(tcp.TCPClient, stateobject.StateObject): self.address.host.encode("idna")) + ".pem" if os.path.exists(path): clientcert = path - self.convert_to_ssl(cert=clientcert, sni=sni, **kwargs) + + # TODO: read ALPN from client and use same list for server conn + + self.convert_to_ssl(cert=clientcert, sni=sni, alpn_protos=['h2'], **kwargs) self.sni = sni self.timestamp_ssl_setup = utils.timestamp() |