Added proxy autodetection stuff to service.settings.ProxySettings

This commit is contained in:
HomeWorld
2011-12-23 20:17:36 +02:00
parent a090c1d411
commit ade951360f
2 changed files with 29 additions and 21 deletions

View File

@@ -123,29 +123,13 @@ class PFGlobalPref ( PreferenceView):
mainSizer.Add(btnSizer, 0, wx.EXPAND,5)
proxy = None
proxAddr = proxPort = ""
proxydict = urllib2.ProxyHandler().proxies
proxy = self.proxySettings.autodetect()
txt = "Auto-detected: "
validPrefixes = ("https", "http")
for prefix in validPrefixes:
if not prefix in proxydict:
continue
proxyline = proxydict[prefix]
proto = "{0}://".format(prefix)
if proxyline[:len(proto)] == proto:
proxyline = proxyline[len(proto):]
proxAddr, proxPort = proxyline.split(":")
proxPort = int(proxPort.rstrip("/"))
proxy = (proxAddr, proxPort)
break
if len(proxAddr) == 0:
if len(proxy) == 0:
txt += "None"
else:
txt += proto + proxAddr + ":" + str(proxPort)
txt += proxy
self.stPSAutoDetected.SetLabel(txt)
self.stPSAutoDetected.Disable()

View File

@@ -20,6 +20,7 @@
import cPickle
import os.path
import config
import urllib2
class SettingsProvider():
BASE_PATH = os.path.join(config.savePath, "settings")
@@ -146,4 +147,27 @@ class ProxySettings():
self.serviceProxySettings["port"] = port
def setType(self, type):
self.serviceProxySettings["type"] = type
self.serviceProxySettings["type"] = type
def autodetect(self):
proxy = None
proxAddr = proxPort = ""
proxydict = urllib2.ProxyHandler().proxies
txt = "Auto-detected: "
validPrefixes = ("https", "http")
for prefix in validPrefixes:
if not prefix in proxydict:
continue
proxyline = proxydict[prefix]
proto = "{0}://".format(prefix)
if proxyline[:len(proto)] == proto:
proxyline = proxyline[len(proto):]
proxAddr, proxPort = proxyline.split(":")
proxPort = proxPort.rstrip("/")
proxy = proto + proxAddr + proxPort
break
return proxy