From de649487d2c824fceef603a077fa87a0544b5a4e Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Thu, 14 Feb 2013 18:26:58 -0800 Subject: [PATCH] still a mess of python, but at least it runs --- torbrowser-launcher | 186 ++++++++++++++++++++++---------------------- 1 file changed, 95 insertions(+), 91 deletions(-) diff --git a/torbrowser-launcher b/torbrowser-launcher index 2b6d38c..3c44aad 100755 --- a/torbrowser-launcher +++ b/torbrowser-launcher @@ -28,7 +28,96 @@ def download_chunk(base): return True -class Base: +class TorBrowserLauncher: + def __init__(self, current_tbb_version): + # figure out the architecture + architecture = subprocess.check_output(['arch']).strip('\n') + + # figure out the language + available_languages = ['en-US', 'ar', 'de', 'es-ES', 'fa', 'fr', 'it', 'ko', 'nl', 'pl', 'pt-PT', 'ru', 'vi', 'zh-CN'] + language = locale.getdefaultlocale()[0].replace('_', '-') + if language not in available_languages: + language = language.split('-')[0] + if language not in available_languages: + for l in available_languages: + if l[0:2] == language: + language = l + # if language isn't available, default to english + if language not in available_languages: + language = 'en-US' + + # make sure local directory structure is setup + data_dir = os.getenv('HOME')+'/.torbrowser' + download_dir = data_dir+'/download' + tbb_dir = data_dir+'/tbb/'+architecture+'/'+language + if os.path.exists(download_dir) == False: + print 'making '+download_dir + os.makedirs(download_dir) + if os.path.exists(tbb_dir) == False: + print 'making '+tbb_dir + os.makedirs(tbb_dir) + + # is TBB already installed? + tbb_start = tbb_dir+'/start-tor-browser' + if os.path.isfile(tbb_start): + print 'Launching '+tbb_start + subprocess.call([tbb_start]) + + else: + tarball_filename = 'tor-browser-gnu-linux-'+architecture+'-'+current_tbb_version+'-dev-'+language+'.tar.gz' + tarball_path = download_dir+'/'+tarball_filename + if os.path.exists(tarball_path): + # already downloaded + print 'Already downloaded' + else: + # launch downloader + #tarball_url = 'https://www.torproject.org/dist/torbrowser/linux/'+tarball_filename + tarball_url = 'http://127.0.0.1/'+tarball_filename + + + + + self.timer = False + + self.current_tbb_version = current_tbb_version + + self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) + self.window.set_title("Tor Browser Launcher - First Run") + self.window.set_border_width(10) + + self.window.connect("delete_event", self.delete_event) + self.window.connect("destroy", self.destroy) + + self.box = gtk.VBox(False, 20) + self.window.add(self.box) + + self.label = gtk.Label("The first time you run the Tor Browser Launcher you need to download the Tor Browser Bundle. Would you like to download it from the following URL now?") + self.label.set_line_wrap(True) + self.box.pack_start(self.label, True, True, 0) + self.label.show() + + self.progressbar = gtk.ProgressBar(adjustment=None) + self.progressbar.set_orientation(gtk.PROGRESS_LEFT_TO_RIGHT) + self.box.pack_start(self.progressbar, True, True, 0) + + self.button_box = gtk.HButtonBox() + self.button_box.set_layout(gtk.BUTTONBOX_SPREAD) + self.box.pack_start(self.button_box, True, True, 0) + self.button_box.show() + + self.download = gtk.Button("Download") + self.download.connect("clicked", self.start_download, None) + self.button_box.add(self.download) + self.download.show() + + self.exit = gtk.Button("Exit") + self.exit.connect("clicked", self.destroy, None) + self.button_box.add(self.exit) + self.exit.show() + + self.box.show() + self.window.show(); + def delete_event(self, widget, event, data=None): return False @@ -63,100 +152,15 @@ class Base: # open a file to write to self.tarball_file = open(self.tarball_path, 'w') - def __init__(self, tbb_version, tarball_path, tarball_url): - self.timer = False - self.tbb_version = tbb_version - self.tarball_path = tarball_path - self.tarball_url = tarball_url - - self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) - self.window.set_title("Tor Browser Launcher - First Run") - self.window.set_border_width(10) - - self.window.connect("delete_event", self.delete_event) - self.window.connect("destroy", self.destroy) - - self.box = gtk.VBox(False, 20) - self.window.add(self.box) - - self.label = gtk.Label("The first time you run the Tor Browser Launcher you need to download the Tor Browser Bundle. Would you like to download it from the following URL now?\n\n"+self.tarball_url) - self.label.set_line_wrap(True) - self.box.pack_start(self.label, True, True, 0) - self.label.show() - - self.progressbar = gtk.ProgressBar(adjustment=None) - self.progressbar.set_orientation(gtk.PROGRESS_LEFT_TO_RIGHT) - self.box.pack_start(self.progressbar, True, True, 0) - - self.button_box = gtk.HButtonBox() - self.button_box.set_layout(gtk.BUTTONBOX_SPREAD) - self.box.pack_start(self.button_box, True, True, 0) - self.button_box.show() - - self.download = gtk.Button("Download") - self.download.connect("clicked", self.start_download, None) - self.button_box.add(self.download) - self.download.show() - - self.exit = gtk.Button("Exit") - self.exit.connect("clicked", self.destroy, None) - self.button_box.add(self.exit) - self.exit.show() - - self.box.show() - self.window.show(); - def main(self): gtk.main() if __name__ == "__main__": - # current TBB version - tbb_version = '2.3.25-2' + print 'Tor Browser Launcher' + print 'https://github.com/micahflee/torbrowser-launcher' - # figure out the architecture - architecture = subprocess.check_output(['arch']).strip('\n') - - # figure out the language - available_languages = ['en-US', 'ar', 'de', 'es-ES', 'fa', 'fr', 'it', 'ko', 'nl', 'pl', 'pt-PT', 'ru', 'vi', 'zh-CN'] - language = locale.getdefaultlocale()[0].replace('_', '-') - if language not in available_languages: - language = language.split('-')[0] - if language not in available_languages: - for l in available_languages: - if l[0:2] == language: - language = l - # if language isn't available, default to english - if language not in available_languages: - language = 'en-US' - - # make sure local directory structure is setup - data_dir = os.getenv('HOME')+'/.torbrowser' - download_dir = data_dir+'/download' - tbb_dir = data_dir+'/tbb/'+architecture+'/'+language - if os.path.exists(download_dir) == False: - print 'making '+download_dir - os.makedirs(download_dir) - if os.path.exists(tbb_dir) == False: - print 'making '+tbb_dir - os.makedirs(tbb_dir) - - # is TBB already installed? - tbb_start = tbb_dir+'/start-tor-browser' - if os.path.isfile(tbb_start): - print 'Launching '+tbb_start - subprocess.call([tbb_start]) - - else: - tarball_filename = 'tor-browser-gnu-linux-'+architecture+'-'+tbb_version+'-dev-'+language+'.tar.gz' - tarball_path = download_dir+'/'+tarball_filename - if os.path.exists(tarball_path): - # already downloaded - print 'Already downloaded' - else: - # launch downloader - #tarball_url = 'https://www.torproject.org/dist/torbrowser/linux/'+tarball_filename - tarball_url = 'http://127.0.0.1/'+tarball_filename - base = Base(tbb_version, tarball_path, tarball_url) - base.main() + current_tbb_version = '2.3.25-2' + app = TorBrowserLauncher(current_tbb_version) + app.main()