summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2014-11-24 13:06:59 +0000
committerSam Thursfield <sam.thursfield@codethink.co.uk>2014-11-24 13:06:59 +0000
commit4b1fcab140d940470c342c6857cdc8682406f0b7 (patch)
treedcd0df8302c5424c9fff2cfaa5ae691355083001
parent689174532cc4920d2ef96bcebeb8a1adaf985804 (diff)
parentf4a75c61c2d2cf7f7adc81051bcd70ff78145780 (diff)
downloadlorry-controller-4b1fcab140d940470c342c6857cdc8682406f0b7.tar.gz
Merge branch 'sam/proxy-with-no-username'
Reviewed-By: Adam Coldrick <adam.coldrick@codethink.co.uk> Reviewed-By: Emmet Hikory <emmet.hikory@codethink.co.uk>
-rw-r--r--lorrycontroller/proxy.py35
1 files changed, 25 insertions, 10 deletions
diff --git a/lorrycontroller/proxy.py b/lorrycontroller/proxy.py
index 44749c9..53d0667 100644
--- a/lorrycontroller/proxy.py
+++ b/lorrycontroller/proxy.py
@@ -20,6 +20,21 @@ import urllib
import urllib2
+def build_proxy_url(protocol, proxy_config):
+ """Build a proxy URL from data in our proxy configuration format."""
+
+ hostname = urllib.quote(proxy_config['hostname'])
+ url = '%s:%s' % (hostname, proxy_config['port'])
+
+ if 'username' not in proxy_config:
+ return '%s://%s/' % (protocol, url)
+ elif 'password' not in proxy_config:
+ return '%s://%s@%s/' % (protocol, proxy_config['username'], url)
+ else:
+ return '%s://%s:%s@%s/' % (protocol, proxy_config['username'],
+ proxy_config['password'], url)
+
+
def setup_proxy(config_filename):
"""Tell urllib2 to use a proxy for http action by lorry-controller.
@@ -32,18 +47,18 @@ def setup_proxy(config_filename):
return
with open(config_filename, 'r') as f:
- proxy = json.load(f)
-
+ proxy_config = json.load(f)
+
+ http_proxy_url = build_proxy_url('http', proxy_config)
+ https_proxy_url = build_proxy_url('https', proxy_config)
+
# set the required environment variables
- hostname = urllib.quote(proxy['hostname'])
- user = '%s:%s' % (proxy['username'], proxy['password'])
- url = '%s:%s' % (hostname, proxy['port'])
- os.environ['http_proxy'] = 'http://%s@%s' % (user, url)
- os.environ['https_proxy'] = 'https://%s@%s' % (user, url)
-
+ os.environ['http_proxy'] = http_proxy_url
+ os.environ['https_proxy'] = https_proxy_url
+
# create a ProxyHandler
- proxies = {'http_proxy': 'http://%s@%s' % (user, url),
- 'https_proxy': 'https://%s@%s' % (user, url)}
+ proxies = {'http_proxy': http_proxy_url,
+ 'https_proxy': https_proxy_url}
proxy_handler = urllib2.ProxyHandler(proxies)
# install an opener to use the proxy