[tor-commits] [gettor/master] Remove all old upload scripts

cohosh at torproject.org cohosh at torproject.org
Wed Apr 22 19:43:43 UTC 2020


commit 880912bb2ca468d1a6a52dd6e9f318df3903f7ca
Author: Cecylia Bocovich <cohosh at torproject.org>
Date:   Mon Apr 13 16:28:24 2020 -0400

    Remove all old upload scripts
    
    These have been replaced by newer scripts located in the top-level
    scripts/ directory.
---
 upload/bundles2drive.py           | 315 --------------------------------------
 upload/bundles2dropbox.py         | 150 ------------------
 upload/bundles2github.py          | 158 -------------------
 upload/drive.cfg                  |   9 --
 upload/dropbox.cfg                |   8 -
 upload/fetch_latest_torbrowser.py | 134 ----------------
 upload/github.cfg                 |   8 -
 upload/landing_gh.tpl             | 137 -----------------
 upload/latest_torbrowser.cfg      |   3 -
 upload/readme_gh.tpl              |  40 -----
 upload/torbrowser-key.asc         | Bin 25381 -> 0 bytes
 11 files changed, 962 deletions(-)

diff --git a/upload/bundles2drive.py b/upload/bundles2drive.py
deleted file mode 100644
index 0acada5..0000000
--- a/upload/bundles2drive.py
+++ /dev/null
@@ -1,315 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of GetTor, a Tor Browser distribution system.
-#
-# :authors: poly <poly at darkdepths.net>
-#           Israel Leiva <ilv at riseup.net>
-#           see also AUTHORS file
-#
-# :copyright:   (c) 2008-2014, The Tor Project, Inc.
-#               (c) 2014, Poly
-#               (c) 2014, Israel Leiva
-#
-# :license: This is Free Software. See LICENSE for license information.
-
-import re
-import os
-import gnupg
-import hashlib
-import logging
-import argparse
-import ConfigParser
-import gettor.core
-from gettor.utils import get_bundle_info, get_file_sha256, valid_format
-
-# import google drive libs
-import httplib2
-from apiclient.discovery import build
-from apiclient.http import MediaFileUpload
-from apiclient import errors
-from oauth2client.client import FlowExchangeError
-from oauth2client.client import OAuth2WebServerFlow
-from oauth2client.client import Credentials
-
-
-def upload_files(client, basedir):
-    """Upload files to Google Drive.
-
-    Looks for tor browser files inside basedir.
-
-    :param: basedir (string) path of the folder with the files to be
-            uploaded.
-    :param: client (object) Google Drive object.
-
-    :raise: UploadError if something goes wrong while uploading the
-            files to Google Drive. All files are uploaded to '/'.
-
-    :return: (dict) the names of the uploaded files as the keys,
-             and file id as the value
-
-    """
-    files = []
-
-    for name in os.listdir(basedir):
-        path = os.path.abspath(os.path.join(basedir, name))
-        if os.path.isfile(path) and valid_format(name, 'linux'):
-            files.append(name)
-
-    for name in os.listdir(basedir):
-        path = os.path.abspath(os.path.join(basedir, name))
-        if os.path.isfile(path) and valid_format(name, 'windows'):
-            files.append(name)
-
-    for name in os.listdir(basedir):
-        path = os.path.abspath(os.path.join(basedir, name))
-        if os.path.isfile(path) and valid_format(name, 'osx'):
-            files.append(name)
-
-    # dictionary to store file names and IDs
-    files_dict = dict()
-
-    for file in files:
-        asc = "%s.asc" % file
-        abs_file = os.path.abspath(os.path.join(basedir, file))
-        abs_asc = os.path.abspath(os.path.join(basedir, asc))
-
-        if not os.path.isfile(abs_asc):
-            # there are some .mar files that don't have .asc, don't upload it
-            continue
-
-        # upload tor browser installer
-        file_body = MediaFileUpload(
-            abs_file,
-            mimetype="application/octet-stream",
-            resumable=True
-        )
-        body = {
-            'title': file
-        }
-        print "Uploading '%s'..." % file
-        try:
-            file_data = drive_service.files().insert(
-                body=body,
-                media_body=file_body
-                ).execute()
-        except errors.HttpError, e:
-            print str(e)
-
-        # upload signature
-        asc_body = MediaFileUpload(abs_asc, resumable=True)
-        asc_head = {
-            'title': "%s.asc" % file
-        }
-        print "Uploading '%s'..." % asc
-        try:
-            asc_data = drive_service.files().insert(
-                body=asc_head,
-                media_body=asc_body
-                ).execute()
-        except errors.HttpError, e:
-            print str(e)
-
-        # add filenames and file id to dict
-        files_dict[file] = file_data['id']
-        files_dict[asc] = asc_data['id']
-
-    return files_dict
-
-
-def share_file(service, file_id):
-    """Make files public
-
-    For a given file-id, sets role 'reader' to 'anyone'. Returns public
-    link to file.
-
-    :param: file_id (string)
-
-    :return: (string) url to shared file
-
-    """
-    permission = {
-        'type': "anyone",
-        'role': "reader",
-        'withLink': True
-    }
-
-    try:
-        service.permissions().insert(
-            fileId=file_id,
-            body=permission
-            ).execute()
-    except errors.HttpError, error:
-        print('An error occured while sharing: %s' % file_id)
-
-    try:
-        file = service.files().get(fileId=file_id).execute()
-    except errors.HttpError, error:
-        print('Error occured while fetch public link for file: %s' % file_id)
-
-    print "Uploaded %s to %s" % (file['title'], file['webContentLink'])
-    return file['webContentLink']
-
-
-def get_files_links(service, v):
-    """Print links of uploaded files.
-
-    :param: service (object): Goolge Drive service object.
-    :param: v (string): Version of Tor Browser to look for.
-
-    """
-    
-    windows_re = 'torbrowser-install-%s_\w\w(-\w\w)?\.exe(\.asc)?' % v
-    linux_re = 'tor-browser-linux\d\d-%s_(\w\w)(-\w\w)?\.tar\.xz(\.asc)?' % v
-    osx_re = 'TorBrowser-%s-osx\d\d_(\w\w)(-\w\w)?\.dmg(\.asc)?' % v
-
-    # dictionary to store file names and IDs
-    files_dict = dict()
-    
-    print "Trying to fetch links of uploaded files..."
-    links = service.files().list().execute()
-    items = links.get('items', [])
-
-    if not items:
-        raise ValueError('No files found.')
-
-    else:
-        for item in items:
-            if re.search(windows_re, item['title']):
-                files_dict[item['title']] = item['id']
-            elif re.search(linux_re, item['title']):
-                files_dict[item['title']] = item['id']
-            elif re.search(osx_re, item['title']):
-                files_dict[item['title']] = item['id']
-        return files_dict
-
-if __name__ == '__main__':
-    parser = argparse.ArgumentParser(
-        description='Utility to upload Tor Browser to Google Drive.'
-    )
-    
-    # if no LC specified, download all
-    parser.add_argument(
-        '-l', '--links', default=None,
-        help='Create links file with files already uploaded and '\
-             'matching the specified version. '
-    )
-
-    args = parser.parse_args()
-
-    config = ConfigParser.ConfigParser()
-    config.read('drive.cfg')
-
-    client_id = config.get('app', 'client-id')
-    app_secret = config.get('app', 'secret')
-    refresh_token = config.get('app', 'refresh_token')
-    upload_dir = config.get('general', 'upload_dir')
-
-    # important: this key must be the one that signed the packages
-    tbb_key = config.get('general', 'tbb_key')
-
-    # requests full access to drive account
-    OAUTH_SCOPE = 'https://www.googleapis.com/auth/drive'
-    REDIRECT_URI = 'urn:ietf:wg:oauth:2.0:oob'
-
-    print "Authenticating..."
-
-    flow = OAuth2WebServerFlow(
-        client_id,
-        app_secret,
-        OAUTH_SCOPE,
-        redirect_uri=REDIRECT_URI
-    )
-
-    # If no valid token found, need to prompt user.
-    # this should only occur once
-    if not refresh_token:
-        flow.params['access_type'] = 'offline'
-        flow.params['approval_prompt'] = 'force'
-        authorize_url = flow.step1_get_authorize_url()
-        print 'Go to the following link in your browser: ' + authorize_url
-        code = raw_input('Enter verification code: ').strip()
-        try:
-            credentials = flow.step2_exchange(code)
-        except FlowExchangeError as e:
-            print str(e)
-
-        # oauth2 credentials instance must be stored as json string
-        config.set('app', 'refresh_token', credentials.to_json())
-        with open('drive.cfg', 'wb') as configfile:
-            config.write(configfile)
-    else:
-        # we already have a valid token
-        credentials = Credentials.new_from_json(refresh_token)
-
-    # authenticate with oauth2
-    http = httplib2.Http()
-    http = credentials.authorize(http)
-
-    # initialize drive instance
-    drive_service = build('drive', 'v2', http=http)
-
-    # import key fingerprint
-    gpg = gnupg.GPG()
-    key_data = open(tbb_key).read()
-    import_result = gpg.import_keys(key_data)
-    fp = import_result.results[0]['fingerprint']
-
-    # make groups of four characters to make fingerprint more readable
-    # e.g. 123A 456B 789C 012D 345E 678F 901G 234H 567I 890J
-    readable = ' '.join(fp[i:i+4] for i in xrange(0, len(fp), 4))
-
-    try:
-        # helpful when something fails but files are uploaded.
-        if args.links:
-            uploaded_files = get_files_links(drive_service, args.links)
-
-            if not uploaded_files:
-                raise ValueError("There are no files for that version")
-        else:
-            uploaded_files = upload_files(drive_service, upload_dir)
-        # use default config
-        core = gettor.core.Core('/home/gettor/core.cfg')
-
-        # erase old links
-        core.create_links_file('Drive', readable)
-
-        # recognize file OS by its extension
-        p1 = re.compile('.*\.tar.xz$')
-        p2 = re.compile('.*\.exe$')
-        p3 = re.compile('.*\.dmg$')
-        p4 = re.compile('.*\.asc$')
-
-        for file in uploaded_files.keys():
-            # only run for tor browser installers
-            if p4.match(file):
-                continue
-            asc = "%s.asc" % file
-            abs_file = os.path.abspath(os.path.join(upload_dir, file))
-            abs_asc = os.path.abspath(os.path.join(upload_dir, asc))
-
-            sha_file = get_file_sha256(abs_file)
-
-            # build links
-            link_file = share_file(
-                drive_service,
-                uploaded_files[file]
-            )
-
-            link_asc = share_file(
-                drive_service,
-                uploaded_files["%s.asc" % file]
-            )
-
-            if p1.match(file):
-                osys, arch, lc = get_bundle_info(file, 'linux')
-            elif p2.match(file):
-                osys, arch, lc = get_bundle_info(file, 'windows')
-            elif p3.match(file):
-                osys, arch, lc = get_bundle_info(file, 'osx')
-
-            link = "%s$%s$%s$" % (link_file, link_asc, sha_file)
-
-            # note that you should only upload bundles for supported locales
-            core.add_link('Drive', osys, lc, link)
-    except (ValueError, RuntimeError) as e:
-        print str(e)
diff --git a/upload/bundles2dropbox.py b/upload/bundles2dropbox.py
deleted file mode 100644
index 04e86af..0000000
--- a/upload/bundles2dropbox.py
+++ /dev/null
@@ -1,150 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of GetTor, a Tor Browser distribution system.
-#
-# :authors: Israel Leiva <ilv at riseup.net>
-#           see also AUTHORS file
-#
-# :copyright:   (c) 2008-2014, The Tor Project, Inc.
-#               (c) 2014, Israel Leiva
-#
-# :license: This is Free Software. See LICENSE for license information.
-
-import re
-import os
-import gnupg
-import hashlib
-import ConfigParser
-
-import dropbox
-import gettor.core
-from gettor.utils import get_bundle_info, get_file_sha256, valid_format
-
-
-def upload_files(basedir, client):
-    """Upload files to Dropbox.
-
-    Looks for files ending with 'tar.xz' inside basedir.
-
-    :param: basedir (string) path of the folder with the files to be
-            uploaded.
-    :param: client (object) DropboxClient object.
-
-    :raise: ValueError if the .xz file doesn't have an .asc file.
-    :raise: UploadError if something goes wrong while uploading the
-            files to Dropbox. All files are uploaded to '/'.
-
-    :return: (list) the names of the uploaded files.
-
-    """
-    files = []
-
-    for name in os.listdir(basedir):
-        path = os.path.abspath(os.path.join(basedir, name))
-        if os.path.isfile(path) and valid_format(name, 'linux'):
-            files.append(name)
-
-    for name in os.listdir(basedir):
-        path = os.path.abspath(os.path.join(basedir, name))
-        if os.path.isfile(path) and valid_format(name, 'windows'):
-            files.append(name)
-
-    for name in os.listdir(basedir):
-        path = os.path.abspath(os.path.join(basedir, name))
-        if os.path.isfile(path) and valid_format(name, 'osx'):
-            files.append(name)
-
-    for file in files:
-        asc = "%s.asc" % file
-        abs_file = os.path.abspath(os.path.join(basedir, file))
-        abs_asc = os.path.abspath(os.path.join(basedir, asc))
-
-        if not os.path.isfile(abs_asc):
-            # there are some .mar files that don't have .asc, don't upload it
-            continue
-
-        # chunk upload for big files
-        to_upload = open(abs_file, 'rb')
-        size = os.path.getsize(abs_file)
-        uploader = client.get_chunked_uploader(to_upload, size)
-        while uploader.offset < size:
-            try:
-                upload = uploader.upload_chunked()
-            except dropbox.rest.ErrorResponse, e:
-                print("An error ocurred while uploading %s: %s" % abs_file, e)
-        uploader.finish(file)
-        print "Uploading %s" % file
-
-        # this should be small, upload it simple
-        to_upload_asc = open(abs_asc, 'rb')
-        response = client.put_file(asc, to_upload_asc)
-        print "Uploading %s" % asc
-
-    return files
-
-if __name__ == '__main__':
-    config = ConfigParser.ConfigParser()
-    config.read('dropbox.cfg')
-
-    app_key = config.get('app', 'key')
-    app_secret = config.get('app', 'secret')
-    access_token = config.get('app', 'access_token')
-    upload_dir = config.get('general', 'upload_dir')
-
-    # important: this key must be the one that signed the packages
-    tbb_key = config.get('general', 'tbb_key')
-
-    client = dropbox.client.DropboxClient(access_token)
-
-    # import key fingerprint
-    gpg = gnupg.GPG()
-    key_data = open(tbb_key).read()
-    import_result = gpg.import_keys(key_data)
-    fp = import_result.results[0]['fingerprint']
-
-    # make groups of four characters to make fingerprint more readable
-    # e.g. 123A 456B 789C 012D 345E 678F 901G 234H 567I 890J
-    readable = ' '.join(fp[i:i+4] for i in xrange(0, len(fp), 4))
-
-    try:
-        uploaded_files = upload_files(upload_dir, client)
-        # use default config
-        core = gettor.core.Core('/home/gettor/core.cfg')
-
-        # erase old links
-        core.create_links_file('Dropbox', readable)
-
-        # recognize file OS by its extension
-        p1 = re.compile('.*\.tar.xz$')
-        p2 = re.compile('.*\.exe$')
-        p3 = re.compile('.*\.dmg$')
-
-        for file in uploaded_files:
-            # build file names
-            asc = "%s.asc" % file
-            abs_file = os.path.abspath(os.path.join(upload_dir, file))
-            abs_asc = os.path.abspath(os.path.join(upload_dir, asc))
-
-            sha_file = get_file_sha256(abs_file)
-
-            # build links
-            link_file = client.share(file, short_url=False)
-            # if someone finds how to do this with the API, please tell me!
-            link_file[u'url'] = link_file[u'url'].replace('?dl=0', '?dl=1')
-            link_asc = client.share(asc, short_url=False)
-            link_asc[u'url'] = link_asc[u'url'].replace('?dl=0', '?dl=1')
-            if p1.match(file):
-                osys, arch, lc = get_bundle_info(file, 'linux')
-            elif p2.match(file):
-                osys, arch, lc = get_bundle_info(file, 'windows')
-            elif p3.match(file):
-                osys, arch, lc = get_bundle_info(file, 'osx')
-
-            link = "%s$%s$%s$" % (link_file[u'url'], link_asc[u'url'], sha_file)
-
-            # note that you should only upload bundles for supported locales
-            core.add_link('Dropbox', osys, lc, link)
-    except (ValueError, RuntimeError) as e:
-        print str(e)
-    except dropbox.rest.ErrorResponse as e:
-        print str(e)
diff --git a/upload/bundles2github.py b/upload/bundles2github.py
deleted file mode 100644
index ee157f0..0000000
--- a/upload/bundles2github.py
+++ /dev/null
@@ -1,158 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of GetTor, a Tor Browser distribution system.
-#
-# :authors: Israel Leiva <ilv at torproject.org>
-#           see also AUTHORS file
-#
-# :copyright:   (c) 2015, The Tor Project, Inc.
-#               (c) 2015, Israel Leiva
-#
-# :license: This is Free Software. See LICENSE for license information.
-#
-
-# Use pyopenssl to verify TLS certifcates
-try:
-    import urllib3.contrib.pyopenssl
-    urllib3.contrib.pyopenssl.inject_into_urllib3()
-except ImportError:
-    pass
-
-import os
-import sys
-import argparse
-import ConfigParser
-import gnupg
-
-import github3
-
-import gettor.core
-from gettor.utils import (get_bundle_info, get_file_sha256,
-                          find_files_to_upload)
-
-
-def upload_new_release(github_repo, version, upload_dir):
-    """
-    Returns a Release object
-    """
-
-    # Create a new release of this TBB
-    release = target_repo.create_release(
-        'v{}'.format(version),
-        target_commitish="master",
-        name='Tor Browser {}'.format(version),
-        body='',
-        draft=True,
-    )
-
-    for filename in find_files_to_upload(upload_dir):
-        # Upload each file for this release
-        file_path = os.path.join(upload_dir, filename)
-        print("Uploading file {}".format(filename))
-        release.upload_asset('application/zip',
-                             filename, open(file_path, 'rb'))
-
-    return release
-
-
-if __name__ == '__main__':
-    parser = argparse.ArgumentParser(
-        description='Utility to upload Tor Browser to Github.'
-    )
-
-    # with this we only get the links of files already uploaded
-    # useful when somethings fail after uploading
-    parser.add_argument(
-        '-l', '--links', default=None,
-        help='Create links file with files already uploaded.'
-    )
-
-    args = parser.parse_args()
-
-    config = ConfigParser.ConfigParser()
-    config.read('github.cfg')
-
-    tbb_version_path = config.get('general', 'version_cfg_path')
-    
-    tbb_version_config = ConfigParser.ConfigParser()
-    tbb_version_config.read(tbb_version_path)
-    version = tbb_version_config.get('version', 'current')
-
-    # the token allow us to run this script without GitHub user/pass
-    github_access_token = config.get('app', 'access_token')
-
-    # path to the fingerprint that signed the packages
-    tb_key = config.get('general', 'tbb_key_path')
-
-    # path to the latest version of Tor Browser
-    tb_path = config.get('general', 'latest_path')
-    
-    # path to gettor code configuration
-    core_path = config.get('general', 'core_path')
-
-    # user and repository where we upload Tor Browser
-    github_user = config.get('app', 'user')
-    github_repo = config.get('app', 'repo')
-
-    gh = github3.login(token=github_access_token)
-    target_repo = gh.repository(github_user, github_repo)
-
-    # import key fingerprint
-    gpg = gnupg.GPG()
-    key_data = open(tb_key).read()
-    import_result = gpg.import_keys(key_data)
-    fp = import_result.results[0]['fingerprint']
-
-    # make groups of four characters to make fingerprint more readable
-    # e.g. 123A 456B 789C 012D 345E 678F 901G 234H 567I 890J
-    readable_fp = ' '.join(fp[i:i+4] for i in xrange(0, len(fp), 4))
-
-    # Find any published releases with this version number
-    for release in target_repo.releases():
-        if release.tag_name == 'v{}'.format(version) and not release.draft:
-            print("Found an existing published release with this version. "
-                  "Not uploading again unless you delete the published "
-                  "release '{}'.".format(release.tag_name))
-            break
-    else:
-        release = None
-
-    if args.links or release:
-        # Only generating link file, should use previously published release
-        if not release:
-            print("Error occured! Could not find a published release for "
-                  "version {}".format(version))
-            sys.exit(1)
-
-    else:
-        # Remove any drafts to clean broken uploads
-        print('Uploading release, please wait, this might take a while!')
-        # Upload the latest browser bundles to a new release
-        release = upload_new_release(target_repo, version, tb_path)
-
-        # Upload success, publish the release
-        release.edit(draft=False)
-
-    # Create the links file for this release
-    core = gettor.core.Core(core_path)
-
-    # Erase old links if any and create a new empty one
-    core.create_links_file('GitHub', readable_fp)
-
-    print("Creating links file")
-    for asset in release.assets():
-        url = asset.browser_download_url
-        if url.endswith('.asc'):
-            continue
-
-        osys, arch, lc = get_bundle_info(asset.name)
-        sha256 = get_file_sha256(
-            os.path.abspath(os.path.join(tb_path, asset.name))
-        )
-
-        link = "{}${}${}$".format(url, url + ".asc", sha256)
-
-        print("Adding {}".format(url))
-        core.add_link('GitHub', osys, lc, link)
-
-    print "Github links updated!"
diff --git a/upload/drive.cfg b/upload/drive.cfg
deleted file mode 100644
index a71bf57..0000000
--- a/upload/drive.cfg
+++ /dev/null
@@ -1,9 +0,0 @@
-[general]
-upload_dir = latest
-tbb_key = torbrowser-key.asc
-
-[app]
-client-id = 
-secret = 
-refresh_token = 
-
diff --git a/upload/dropbox.cfg b/upload/dropbox.cfg
deleted file mode 100644
index 7528565..0000000
--- a/upload/dropbox.cfg
+++ /dev/null
@@ -1,8 +0,0 @@
-[general]
-upload_dir: latest
-tbb_key: torbrowser-key.asc
-
-[app]
-key: suchkey
-secret: suchsecret
-access_token: suchtoken
diff --git a/upload/fetch_latest_torbrowser.py b/upload/fetch_latest_torbrowser.py
deleted file mode 100644
index 3fe1f9a..0000000
--- a/upload/fetch_latest_torbrowser.py
+++ /dev/null
@@ -1,134 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of GetTor, a Tor Browser distribution system.
-#
-# :authors: Israel Leiva <ilv at torproject.org>
-#
-# :copyright:   (c) 2015, The Tor Project, Inc.
-#               (c) 2015, Israel Leiva
-#
-# :license: This is Free Software. See LICENSE for license information.
-#
-
-import os
-
-import urllib2
-import json
-import argparse
-import ConfigParser
-import shutil
-
-# this path should be relative to this script (or absolute)
-UPLOAD_SCRIPTS = {
-    'dropbox': 'bundles2dropbox.py',
-    'drive': 'bundles2drive.py'
-}
-
-# "regex" for filtering downloads in wget
-OS_RE = {
-    'windows': '%s.exe,%s.exe.asc',
-    'linux': '%s.tar.xz,%s.tar.xz.asc',
-    'osx': '%s.dmg,%s.dmg.asc',
-}
-
-
-def main():
-    """Script to fetch the latest Tor Browser.
-
-    Fetch the latest version of Tor Browser and upload it to the supported
-    providers (e.g. Dropbox). Ideally, this script should be executed with
-    a cron in order to automate the updating of the files served by GetTor
-    when a new version of Tor Browser is released.
-
-    Usage: python2.7 fetch.py --os=<OS> --lc=<LC>
-
-    Some fetch examples:
-
-    Fetch Tor Browser for all platforms and languages:
-        $ python2.7 fetch.py
-
-    Fetch Tor Browser only for Linux:
-        $ python2.7 fetch.py --os=linux
-
-    Fetch Tor Browser only for Windows and in US English:
-        $ python2.7 fetch.py --os=windows --lc=en-US
-
-    Fetch Tor Browser for all platforms, but only in Spanish:
-        $ python2.7 fetch.py --lc=es-ES
-
-    """
-    parser = argparse.ArgumentParser(
-        description='Utility to fetch the latest Tor Browser and upload it \
-                    to popular cloud services.'
-    )
-
-    # if no OS specified, download all
-    parser.add_argument('-o', '--os', default=None,
-                        help='filter by OS')
-
-    # if no LC specified, download all
-    parser.add_argument('-l', '--lc', default='',
-                        help='filter by locale')
-
-    args = parser.parse_args()
-
-    # server from which to download Tor Browser
-    dist_tpo = 'https://dist.torproject.org/torbrowser/'
-
-    # find out the latest version
-    url = 'https://www.torproject.org/projects/torbrowser/RecommendedTBBVersions'
-    response = urllib2.urlopen(url)
-    json_response = json.load(response)
-    latest_version = json_response[0]
-
-    # find out the current version delivered by GetTor
-    config = ConfigParser.RawConfigParser()
-    config.read('latest_torbrowser.cfg')
-    current_version = config.get('version', 'current')
-
-    if current_version != latest_version:
-        mirror = '%s%s/' % (dist_tpo, latest_version)
-
-        # what LC should we download?
-        lc_re = args.lc
-
-        # what OS should we download?
-        if args.os == 'windows':
-            os_re = OS_RE['windows'] % (lc_re, lc_re)
-
-        elif args.os == 'osx':
-            os_re = OS_RE['osx'] % (lc_re, lc_re)
-
-        elif args.os == 'linux':
-            os_re = OS_RE['linux'] % (lc_re, lc_re)
-
-        else:
-            os_re = '%s.exe,%s.exe.asc,%s.dmg,%s.dmg.asc,%s.tar.xz,%s.tar'\
-                    '.xz.asc' % (lc_re, lc_re, lc_re, lc_re, lc_re, lc_re)
-
-        params = "-nH --cut-dirs=1 -L 1 --accept %s" % os_re
-
-        # in wget we trust
-        cmd = 'wget %s --mirror %s' % (params, mirror)
-
-        print "Going to execute %s" % cmd
-        # make the mirror
-        # a folder with the value of 'latest_version' will be created
-        os.system(cmd)
-        # everything inside upload will be uploaded by the provivers' scripts
-        shutil.move('latest', 'latest_backup')
-        shutil.move(latest_version, 'latest')
-        shutil.rmtree('latest_backup')
-
-        # latest version of Tor Browser has been syncronized
-        # let's upload it
-        for provider in UPLOAD_SCRIPTS:
-            os.system('python2.7 %s' % UPLOAD_SCRIPTS[provider])
-
-        # if everything is OK, update the current version delivered by GetTor
-        config.set('version', 'current', latest_version)
-        with open(r'latest_torbrowser.cfg', 'wb') as config_file:
-            config.write(config_file)
-
-if __name__ == "__main__":
-    main()
diff --git a/upload/github.cfg b/upload/github.cfg
deleted file mode 100644
index 7bdbd90..0000000
--- a/upload/github.cfg
+++ /dev/null
@@ -1,8 +0,0 @@
-[general]
-upload_dir: latest
-tbb_key: torbrowser-key.asc
-
-[app]
-access_token: suchtoken
-user: username
-repo: gettor-front
diff --git a/upload/landing_gh.tpl b/upload/landing_gh.tpl
deleted file mode 100644
index 771756a..0000000
--- a/upload/landing_gh.tpl
+++ /dev/null
@@ -1,137 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-    <head>
-        <meta charset="utf-8">
-        <meta http-equiv="X-UA-Compatible" content="IE=edge">
-        <meta name="viewport" content="width=device-width, initial-scale=1">
-        <meta name="description" content="">
-        <meta name="author" content="">
-        <title>GetTor | Download Tor Browser for Windows, Linux, OS X</title>
-        <link href="css/bootstrap.min.css" rel="stylesheet">
-        <link href="css/gettor.css" rel="stylesheet">
-    </head>
-
-    <body>
-
-    <nav class="navbar navbar-inverse navbar-fixed-top">
-        <div class="container">
-            <div class="navbar-header">
-                <span class="navbar-brand">
-                    <span id="head-title">GetTor - Github mirror</span>
-                </span>
-            </div>
-            <div class="navbar-right">
-                <span class="navbar-brand">
-                    <span id="head-link"><a href="https://www.torproject.org">The Tor Project</a></span>
-                </span>
-            </div>
-        </div>
-    </nav>
-
-    <div id="main">
-        <div class="container text-justify">
-            <!-- <div class="row lang well">
-                Supported languages: <strong>English</strong>, <a href="fa/index.html">Farsi</a>, <a href="zh/index.html">Chinese</a>, <a href="tr/index.html">Turkish</a>.
-            </div>-->
-            <br />
-            <div class="row">
-                <div class="col-lg-2">
-                    <img src="img/gettor-logo.png">
-                </div>
-                <div class="col-lg-10" id="description">
-                    <p>
-                        <h1>Download Tor Browser</h1>
-                        <hr />
-                        Below you will find links to download the latest version of Tor Browser (%TB_VERSION%)<!-- and Orbot (%ORBOT_VERSION%) -->.
-                    </p>
-                </div>
-            </div>
-            <br />
-            <div class="row">
-                <div class="col-lg-5">
-                    <h2>Direct downloads</h2>
-                    <!-- 
-                    <div class="row well">
-                        
-                        <div class="col-lg-2">
-                            <img src="img/android-logo.png" class="pad-big-right">
-                        </div>
-                        <div class="col-lg-10">
-                            <a href="#" class="big-link">Tor Browser for Android</a><br />(<a href="#">signature file</a>)
-                        </div>
-                    </div> -->
-                    <div class="row well">
-                        <div class="col-lg-2">
-                            <img src="img/windows-logo.png" class="pad-big-right">
-                        </div>
-                        <div class="col-lg-10">
-                            <span class="big-link">Tor Browser for Windows</span><br />
-                            <a href="%WINDOWS_EN%">English</a>, <a href="%WINDOWS_FA%">Farsi</a>, <a href="%WINDOWS_ZH%">Chinese</a>, <a href="%WINDOWS_TR%">Turkish</a>
-                        </div>
-                    </div>
-                    <div class="row well">
-                        <div class="col-lg-2">
-                            <img src="img/osx-logo.png" class="pad-big-right">
-                        </div>
-                        <div class="col-lg-10">
-                            <span class="big-link">Tor Browser for OS X</span><br />
-                            <a href="%OSX_EN%">English</a>, <a href="%OSX_FA%">Farsi</a>, <a href="%OSX_ZH%">Chinese</a>, <a href="%OSX_TR%">Turkish</a>
-                        </div>
-                    </div>
-                    <div class="row well">
-                        <div class="col-lg-2">
-                            <img src="img/linux-logo.png" class="pad-big-right">
-                        </div>
-                        <div class="col-lg-10">
-                            <span class="big-link">Tor Browser for Linux 32-bit</span><br />
-                            <a href="%LINUX32_EN%">English</a>, <a href="%LINUX32_FA%">Farsi</a>, <a href="%LINUX32_ZH%">Chinese</a>, <a href="%LINUX32_TR%">Turkish</a>
-                        </div>
-                    </div>
-                    <div class="row well">
-                        <div class="col-lg-2">
-                            <img src="img/linux-logo.png" class="pad-big-right">
-                        </div>
-                        <div class="col-lg-10">
-                            <span class="big-link">Tor Browser for Linux 64-bit</span><br />
-                            <a href="%LINUX64_EN%">English</a>, <a href="%LINUX64_FA%">Farsi</a>, <a href="%LINUX64_ZH%">Chinese</a>, <a href="%LINUX64_TR%">Turkish</a>
-                        </div>
-                    </div>
-                </div>
-                <div class="col-lg-5  col-lg-offset-2">
-                    <h2>Alternative downloads</h2>
-                    <div class="row well">
-                        <span class="mid-title">Get links via Email</span>: You can send an email to <a href="mailto:gettor at torproject.org">gettor at torproject.org</a>. 
-                        Send the word <strong>help</strong> in the body of the message to learn how to interact with it.
-                    </div>
-                    <div class="row well">
-                        <span class="mid-title">Get links via XMPP</span>: You can send a message to <a href="#">get_tor at riseup.net</a> using your favorite XMPP client. Simply
-                        enter <strong>help</strong> in an XMPP message to learn how to interact with it.
-                    </div>
-                    <div class="row well">
-                        <span class="mid-title">Get links via Twitter</span>: You can send a direct message to <a href="https://twitter.com/get_tor">@get_tor</a> account
-                        (you don't need to follow). Send the word <strong>help</strong> in a direct message to learn
-                        how to interact with it.
-                    </div>
-                    <h2>Get bridges</h2>
-                    <div class="row well">
-                        Bridges are Tor relays that help you circumvent censorship. If you suspect your access to the
-                        Tor network is being blocked, you may want to use bridges. You can get bridges from
-                        the <a href="https://bridges.torproject.org">HTTP distributor</a>. You can also send
-                        an email to <a href="mailto:bridges at torproject.org">bridges at torproject.org</a> <span class="note">
-                        (please note that you must send the email using an address from one of the following email providers: riseup, gmail or yahoo).</span>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-
-    <hr />
-    
-    <footer class="container">
-        <p>© The Tor Project 2016</p>
-    </footer>    
-    
-    </div>
-
-    </body>
-</html>
diff --git a/upload/latest_torbrowser.cfg b/upload/latest_torbrowser.cfg
deleted file mode 100644
index 0abe3fb..0000000
--- a/upload/latest_torbrowser.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-[version]
-current = 4.0.3
-
diff --git a/upload/readme_gh.tpl b/upload/readme_gh.tpl
deleted file mode 100644
index 63ed23a..0000000
--- a/upload/readme_gh.tpl
+++ /dev/null
@@ -1,40 +0,0 @@
-# Download Tor Browser
-
-In this repository you will find links to download the latest version of
-Tor Browser, which currently is %TB_VERSION%. Please select one of the links below:
-
-## Windows
-[Download Tor Browser](%WINDOWS_EN%) (English) ([signature file](%WINDOWS_EN_SIG%)).
-
-[Download Tor Browser](%WINDOWS_FA%) (Farsi) ([signature file](%WINDOWS_FA_SIG%)).
-
-[Download Tor Browser](%WINDOWS_TR%) (Turkish) ([signature file](%WINDOWS_TR_SIG%)).
-
-[Download Tor Browser](%WINDOWS_ZH%) (Chinese) ([signature file](%WINDOWS_ZH_SIG%)).
-
-## OS X
-[Download Tor Browser](%OSX_EN%) (English) ([signature file](%OSX_EN_SIG%)).
-
-[Download Tor Browser](%OSX_FA%) (Farsi) ([signature file](%OSX_FA_SIG%)).
-
-[Download Tor Browser](%OSX_TR%) (Turkish) ([signature file](%OSX_TR_SIG%)).
-
-[Download Tor Browser](%OSX_ZH%) (Chinese) ([signature file](%OSX_ZH_SIG%)).
-
-## Linux 32-bit
-[Download Tor Browser](%LINUX32_EN%) (English) ([signature file](%LINUX32_EN_SIG%)).
-
-[Download Tor Browser](%LINUX32_FA%) (Farsi) ([signature file](%LINUX32_FA_SIG%)).
-
-[Download Tor Browser](%LINUX32_TR%) (Turkish) ([signature file](%LINUX32_TR_SIG%)).
-
-[Download Tor Browser](%LINUX32_ZH%) (Chinese) ([signature file](%LINUX32_ZH_SIG%)).
-
-## Linux 64-bit
-[Download Tor Browser](%LINUX64_EN%) (English) ([signature file](%LINUX64_EN_SIG%)).
-
-[Download Tor Browser](%LINUX64_FA%) (Farsi) ([signature file](%LINUX64_FA_SIG%)).
-
-[Download Tor Browser](%LINUX64_TR%) (Turkish) ([signature file](%LINUX64_TR_SIG%)).
-
-[Download Tor Browser](%LINUX64_ZH%) (Chinese) ([signature file](%LINUX64_ZH_SIG%)).
diff --git a/upload/torbrowser-key.asc b/upload/torbrowser-key.asc
deleted file mode 100644
index 345f65d..0000000
Binary files a/upload/torbrowser-key.asc and /dev/null differ





More information about the tor-commits mailing list