aboutsummaryrefslogtreecommitdiffstats
path: root/libpathod/pathoc.py
diff options
context:
space:
mode:
Diffstat (limited to 'libpathod/pathoc.py')
-rw-r--r--libpathod/pathoc.py23
1 files changed, 15 insertions, 8 deletions
diff --git a/libpathod/pathoc.py b/libpathod/pathoc.py
index 32707899..c926f15f 100644
--- a/libpathod/pathoc.py
+++ b/libpathod/pathoc.py
@@ -15,9 +15,15 @@ class Response:
def __repr__(self):
return "Response(%s - %s)"%(self.status_code, self.msg)
+SSLVERSIONS = {
+ 1: tcp.TLSv1_METHOD,
+ 2: tcp.SSLv2_METHOD,
+ 3: tcp.SSLv3_METHOD,
+ 4: tcp.SSLv23_METHOD,
+}
class Pathoc(tcp.TCPClient):
- def __init__(self, host, port, ssl=None, sni=None, clientcert=None):
+ def __init__(self, host, port, ssl=None, sni=None, sslversion=1, clientcert=None):
tcp.TCPClient.__init__(self, host, port)
self.settings = dict(
staticdir = os.getcwd(),
@@ -25,20 +31,21 @@ class Pathoc(tcp.TCPClient):
)
self.ssl, self.sni = ssl, sni
self.clientcert = clientcert
+ self.sslversion = SSLVERSIONS[sslversion]
- def http_connect(self, connect_to, wfile, rfile):
- wfile.write(
+ def http_connect(self, connect_to):
+ self.wfile.write(
'CONNECT %s:%s HTTP/1.1\r\n'%tuple(connect_to) +
'\r\n'
)
- wfile.flush()
- l = rfile.readline()
+ self.wfile.flush()
+ l = self.rfile.readline()
if not l:
raise PathocError("Proxy CONNECT failed")
parsed = http.parse_response_line(l)
if not parsed[1] == 200:
raise PathocError("Proxy CONNECT failed: %s - %s"%(parsed[1], parsed[2]))
- headers = http.read_headers(rfile)
+ headers = http.read_headers(self.rfile)
def connect(self, connect_to=None):
"""
@@ -47,10 +54,10 @@ class Pathoc(tcp.TCPClient):
"""
tcp.TCPClient.connect(self)
if connect_to:
- self.http_connect(connect_to, self.wfile, self.rfile)
+ self.http_connect(connect_to)
if self.ssl:
try:
- self.convert_to_ssl(sni=self.sni, cert=self.clientcert)
+ self.convert_to_ssl(sni=self.sni, cert=self.clientcert, method=self.sslversion)
except tcp.NetLibError, v:
raise PathocError(str(v))