request.add_header("User-Agent", "fireinfo/%s" % fireinfo.__version__)
# Set upstream proxy if we have one.
- # XXX this cannot handle authentication
proxy = get_upstream_proxy()
+
if proxy["host"]:
- request.set_proxy(proxy["host"], "http")
+ # handling upstream proxies with authentication is more tricky...
+ if proxy["user"] and proxy["pass"]:
+ prx_auth_string = "http://%s:%s@%s/" % (proxy["user"], proxy["pass"], proxy["host"])
+
+ proxy_handler = urllib2.ProxyHandler({'http': prx_auth_string, 'https': prx_auth_string})
+ auth = urllib2.HTTPBasicAuthHandler()
+ opener = urllib2.build_opener(proxy_handler, auth, urllib2.HTTPHandler)
+ urllib2.install_opener(opener)
+ else:
+ request.set_proxy(proxy["host"], "http")
+ request.set_proxy(proxy["host"], "https")
try:
urllib2.urlopen(request, timeout=60)