Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sivel/speedtest-cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Martz <matt@sivel.net>2019-07-05 21:47:54 +0300
committerMatt Martz <matt@sivel.net>2019-08-22 17:45:01 +0300
commit266e53c25636e0dcee31b599c49113d4d7cf8298 (patch)
tree8edb0b3bd76af111c17144a3ac21e094bf811137
parent7ebb9965ddaeb64ecb27efdf06e91d661c129301 (diff)
Fix proxy support. Fixes #610proxy-fixes
-rwxr-xr-xspeedtest.py32
1 files changed, 28 insertions, 4 deletions
diff --git a/speedtest.py b/speedtest.py
index b7a5124..eb131ee 100755
--- a/speedtest.py
+++ b/speedtest.py
@@ -413,6 +413,8 @@ class SpeedtestHTTPConnection(HTTPConnection):
source_address = kwargs.pop('source_address', None)
timeout = kwargs.pop('timeout', 10)
+ self._tunnel_host = None
+
HTTPConnection.__init__(self, *args, **kwargs)
self.source_address = source_address
@@ -433,17 +435,23 @@ class SpeedtestHTTPConnection(HTTPConnection):
self.source_address
)
+ if self._tunnel_host:
+ self._tunnel()
+
if HTTPSConnection:
- class SpeedtestHTTPSConnection(HTTPSConnection,
- SpeedtestHTTPConnection):
+ class SpeedtestHTTPSConnection(HTTPSConnection):
"""Custom HTTPSConnection to support source_address across
Python 2.4 - Python 3
"""
+ default_port = 443
+
def __init__(self, *args, **kwargs):
source_address = kwargs.pop('source_address', None)
timeout = kwargs.pop('timeout', 10)
+ self._tunnel_host = None
+
HTTPSConnection.__init__(self, *args, **kwargs)
self.timeout = timeout
@@ -451,14 +459,30 @@ if HTTPSConnection:
def connect(self):
"Connect to a host on a given (SSL) port."
+ try:
+ self.sock = socket.create_connection(
+ (self.host, self.port),
+ self.timeout,
+ self.source_address
+ )
+ except (AttributeError, TypeError):
+ self.sock = create_connection(
+ (self.host, self.port),
+ self.timeout,
+ self.source_address
+ )
- SpeedtestHTTPConnection.connect(self)
+ if self._tunnel_host:
+ self._tunnel()
if ssl:
try:
kwargs = {}
if hasattr(ssl, 'SSLContext'):
- kwargs['server_hostname'] = self.host
+ if self._tunnel_host:
+ kwargs['server_hostname'] = self._tunnel_host
+ else:
+ kwargs['server_hostname'] = self.host
self.sock = self._context.wrap_socket(self.sock, **kwargs)
except AttributeError:
self.sock = ssl.wrap_socket(self.sock)