[WIP] Add basic proxy authorization support to Network service class.
not tested yet, will test later
This commit is contained in:
@@ -75,8 +75,23 @@ class Network():
|
|||||||
|
|
||||||
proxy = NetworkSettings.getInstance().getProxySettings()
|
proxy = NetworkSettings.getInstance().getProxySettings()
|
||||||
if proxy is not None:
|
if proxy is not None:
|
||||||
proxy = urllib2.ProxyHandler({'https': "{0}:{1}".format(*proxy)})
|
# proxy is tuple of (host, port): (u'192.168.20.1', 3128)
|
||||||
opener = urllib2.build_opener(proxy)
|
proxy_handler = urllib2.ProxyHandler({'https': "{0}:{1}".format(proxy[0], proxy[1])})
|
||||||
|
proxy_auth = NetworkSettings.getInstance().getProxyAuthDetails()
|
||||||
|
if proxy_auth is not None:
|
||||||
|
# if we have proxy login/pass configured, construct a different opener,
|
||||||
|
# which uses both proxy handler *and* proxy auth handler
|
||||||
|
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
|
||||||
|
# A realm of None is considered a catch-all realm, which is searched if no other realm fits.
|
||||||
|
password_mgr.add_password(realm=None,
|
||||||
|
uri='https://{0}:{1}'.format(proxy[0], proxy[1]), # TODO: is uri correct?
|
||||||
|
user=proxy_auth[0],
|
||||||
|
passwd=proxy_auth[1])
|
||||||
|
proxy_auth_handler = urllib2.ProxyBasicAuthHandler(password_mgr)
|
||||||
|
opener = urllib2.build_opener(proxy_handler, proxy_auth_handler)
|
||||||
|
else:
|
||||||
|
# With no proxy login/pass provided, use opener with the only proxy handler
|
||||||
|
opener = urllib2.build_opener(proxy_handler)
|
||||||
urllib2.install_opener(opener)
|
urllib2.install_opener(opener)
|
||||||
|
|
||||||
request = urllib2.Request(url, headers=headers, data=urllib.urlencode(data) if data else None)
|
request = urllib2.Request(url, headers=headers, data=urllib.urlencode(data) if data else None)
|
||||||
|
|||||||
Reference in New Issue
Block a user