From 4c38dc5e1e2abfa8810fc84073e81477737e2bb5 Mon Sep 17 00:00:00 2001 From: Pascal Zingg Date: Fri, 24 Aug 2018 10:52:54 +0200 Subject: [PATCH 1/2] Using basic auth for proxy tunnel --- .../chunked_requests/chunked_request.py | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/plotly/plotly/chunked_requests/chunked_request.py b/plotly/plotly/chunked_requests/chunked_request.py index eb70488f59c..61648e7d6bf 100644 --- a/plotly/plotly/chunked_requests/chunked_request.py +++ b/plotly/plotly/chunked_requests/chunked_request.py @@ -4,7 +4,9 @@ import ssl from six.moves import http_client -from six.moves.urllib.parse import urlparse +from six.moves.urllib.parse import urlparse, unquote + +from plotly.api import utils class Stream: @@ -86,6 +88,7 @@ def _get_proxy_config(self): proxy_server = None proxy_port = None + proxy_auth = None ssl_enabled = self._ssl_enabled if ssl_enabled: @@ -100,7 +103,12 @@ def _get_proxy_config(self): proxy_server = p.hostname proxy_port = p.port - return proxy_server, proxy_port + if p.username and p.password: + username = unquote(p.username) + password = unquote(p.password) + proxy_auth = utils.basic_auth(username, password) + + return proxy_server, proxy_port, proxy_auth def _get_ssl_context(self): """ @@ -123,7 +131,7 @@ def _connect(self): port = self._port headers = self._headers ssl_enabled = self._ssl_enabled - proxy_server, proxy_port = self._get_proxy_config() + proxy_server, proxy_port, proxy_auth = self._get_proxy_config() if (proxy_server and proxy_port): if ssl_enabled: @@ -135,7 +143,12 @@ def _connect(self): self._conn = http_client.HTTPConnection( proxy_server, proxy_port ) - self._conn.set_tunnel(server, port) + + tunnel_headers = None + if proxy_auth: + tunnel_headers = {'Proxy-Authorization': proxy_auth} + + self._conn.set_tunnel(server, port, headers=tunnel_headers) else: if ssl_enabled: context = self._get_ssl_context() From 4ec97beebc7b68e7f419156ae05693f2475f3054 Mon Sep 17 00:00:00 2001 From: Pascal Zingg Date: Fri, 24 Aug 2018 15:00:56 +0200 Subject: [PATCH 2/2] Fixes reference error --- plotly/plotly/chunked_requests/chunked_request.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/plotly/plotly/chunked_requests/chunked_request.py b/plotly/plotly/chunked_requests/chunked_request.py index 61648e7d6bf..9a3f123401b 100644 --- a/plotly/plotly/chunked_requests/chunked_request.py +++ b/plotly/plotly/chunked_requests/chunked_request.py @@ -88,6 +88,8 @@ def _get_proxy_config(self): proxy_server = None proxy_port = None + proxy_username = None + proxy_password = None proxy_auth = None ssl_enabled = self._ssl_enabled @@ -102,10 +104,12 @@ def _get_proxy_config(self): p = urlparse(proxy) proxy_server = p.hostname proxy_port = p.port + proxy_username = p.username + proxy_password = p.password - if p.username and p.password: - username = unquote(p.username) - password = unquote(p.password) + if proxy_username and proxy_password: + username = unquote(proxy_username) + password = unquote(proxy_password) proxy_auth = utils.basic_auth(username, password) return proxy_server, proxy_port, proxy_auth