#!/usr/bin/env python import os import locale import subprocess import pygtk pygtk.require('2.0') import gtk class Base: def delete_event(self, widget, event, data=None): return False def destroy(self, widget, data=None): gtk.main_quit() def __init__(self, tbb_version, tarball_url): self.version = tbb_version 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.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.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' # 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: print 'Starting downloader' tarball_url = 'https://www.torproject.org/dist/torbrowser/linux/tor-browser-gnu-linux-'+architecture+'-'+tbb_version+'-dev-'+language+'.tar.gz' base = Base(tbb_version, tarball_url) base.main()