aboutsummaryrefslogtreecommitdiffstats
path: root/netlib
diff options
context:
space:
mode:
Diffstat (limited to 'netlib')
-rw-r--r--netlib/tcp.py26
-rw-r--r--netlib/test.py3
2 files changed, 16 insertions, 13 deletions
diff --git a/netlib/tcp.py b/netlib/tcp.py
index c6e0075e..7f98b4f9 100644
--- a/netlib/tcp.py
+++ b/netlib/tcp.py
@@ -39,6 +39,9 @@ class SSLKeyLogger(object):
if where == SSL.SSL_CB_HANDSHAKE_DONE and ret == 1:
with self.lock:
if not self.f:
+ d = os.path.dirname(self.filename)
+ if not os.path.isdir(d):
+ os.makedirs(d)
self.f = open(self.filename, "ab")
self.f.write("\r\n")
client_random = connection.client_random().encode("hex")
@@ -51,11 +54,13 @@ class SSLKeyLogger(object):
if self.f:
self.f.close()
-_logfile = os.getenv("MITMPROXY_SSLKEYLOGFILE") or os.getenv("SSLKEYLOGFILE")
-if _logfile:
- log_ssl_key = SSLKeyLogger(_logfile)
-else:
- log_ssl_key = False
+ @staticmethod
+ def create_logfun(filename):
+ if filename:
+ return SSLKeyLogger(filename)
+ return False
+
+log_ssl_key = SSLKeyLogger.create_logfun(os.getenv("MITMPROXY_SSLKEYLOGFILE") or os.getenv("SSLKEYLOGFILE"))
class _FileLike:
@@ -161,9 +166,9 @@ class Reader(_FileLike):
except SSL.SysCallError as e:
if e.args == (-1, 'Unexpected EOF'):
break
- raise NetLibDisconnect
- except SSL.Error, v:
- raise NetLibSSLError(v.message)
+ raise NetLibSSLError(e.message)
+ except SSL.Error as e:
+ raise NetLibSSLError(e.message)
self.first_byte_timestamp = self.first_byte_timestamp or time.time()
if not data:
break
@@ -179,10 +184,7 @@ class Reader(_FileLike):
while True:
if size is not None and bytes_read >= size:
break
- try:
- ch = self.read(1)
- except NetLibDisconnect:
- break
+ ch = self.read(1)
bytes_read += 1
if not ch:
break
diff --git a/netlib/test.py b/netlib/test.py
index fb468907..3a23ba8f 100644
--- a/netlib/test.py
+++ b/netlib/test.py
@@ -75,7 +75,8 @@ class TServer(tcp.TCPServer):
handle_sni = getattr(h, "handle_sni", None),
request_client_cert = self.ssl["request_client_cert"],
cipher_list = self.ssl.get("cipher_list", None),
- dhparams = self.ssl.get("dhparams", None)
+ dhparams = self.ssl.get("dhparams", None),
+ chain_file = self.ssl.get("chain_file", None)
)
h.handle()
h.finish()