commit 2e0a3a792793df046efa96b6c7f42d7aeb08ca3c Author: Luke Macken Date: Mon Jun 30 01:56:16 2008 -0400 Add proxy support for Windows (Ticket #111) diff --git a/liveusb/creator.py b/liveusb/creator.py index 35b5a6f..7598aaa 100755 --- a/liveusb/creator.py +++ b/liveusb/creator.py @@ -253,6 +253,10 @@ class LiveUSBCreator(object): self.uuid = self.drives[drive]['uuid'] self.fstype = self.drives[drive]['fstype'] + def get_proxies(self): + """ Return a dictionary of proxy settings """ + return None + class LinuxLiveUSBCreator(LiveUSBCreator): @@ -533,3 +537,26 @@ class WindowsLiveUSBCreator(LiveUSBCreator): def unmountDevice(self): pass + + def get_proxies(self): + proxies = {} + try: + import _winreg as winreg + settings = winreg.OpenKey(winreg.HKEY_CURRENT_USER, + 'Software\\Microsoft\\Windows' + '\\CurrentVersion\\Internet Settings') + proxy = winreg.QueryValueEx(settings, "ProxyEnable")[0] + if proxy: + server = str(winreg.QueryValueEx(settings, 'ProxyServer')[0]) + if ';' in server: + for p in string.split(server, ';'): + protocol, address = string.split(p, '=') + proxies[protocol] = '%s://%s' % (protocol, address) + else: + proxies['http'] = 'http://%s' % server + proxies['ftp'] = 'ftp://%s' % server + settings.Close() + except Exception, e: + self.log.warning('Unable to detect proxy settings: %s' % str(e)) + self.log.debug('Using proxies: %s' % proxies) + return proxies diff --git a/liveusb/gui.py b/liveusb/gui.py index 0e6bb05..3303954 100755 --- a/liveusb/gui.py +++ b/liveusb/gui.py @@ -46,10 +46,11 @@ class LiveUSBApp(QtGui.QApplication): class ReleaseDownloader(QtCore.QThread): - def __init__(self, release, progress): + def __init__(self, release, progress, proxies): QtCore.QThread.__init__(self) self.release = release - self.progress = progress + self.progress = progress + self.proxies = proxies for r in releases: if r['name'] == str(release): self.url = r['url'] @@ -60,7 +61,7 @@ class ReleaseDownloader(QtCore.QThread): def run(self): self.emit(QtCore.SIGNAL("status(PyQt_PyObject)"), "Downloading %s..." % os.path.basename(self.url)) - grabber = URLGrabber(progress_obj=self.progress) + grabber = URLGrabber(progress_obj=self.progress, proxies=self.proxies) try: iso = grabber.urlgrab(self.url, reget='simple') except URLGrabError, e: @@ -327,7 +328,8 @@ class LiveUSBDialog(QtGui.QDialog, Ui_Dialog): else: self.downloader = ReleaseDownloader( self.downloadCombo.currentText(), - progress=self.downloadProgress) + progress=self.downloadProgress, + proxies=self.live.get_proxies()) self.connect(self.downloader, QtCore.SIGNAL("dlcomplete(PyQt_PyObject)"), self.downloadComplete)