mirror of
https://github.com/torproject/torbrowser-launcher.git
synced 2024-10-06 23:23:22 +00:00
Make downloading over Tor work
This commit is contained in:
parent
ca0027cd86
commit
0195e48991
4
BUILD.md
4
BUILD.md
@ -12,7 +12,7 @@ Then install dependencies, build a package, and install:
|
||||
### Debian, Ubuntu, Linux Mint, etc.
|
||||
|
||||
```sh
|
||||
sudo apt-get install build-essential dh-python python3-all python3-stdeb python3-qt5 python3-gpg python3-requests tor
|
||||
sudo apt-get install build-essential dh-python python3-all python3-stdeb python3-qt5 python3-gpg python3-requests python3-socks tor
|
||||
./build_deb.sh
|
||||
sudo dpkg -i deb_dist/torbrowser-launcher_*.deb
|
||||
```
|
||||
@ -20,7 +20,7 @@ sudo dpkg -i deb_dist/torbrowser-launcher_*.deb
|
||||
### Red Hat, Fedora, CentOS, etc.
|
||||
|
||||
```sh
|
||||
sudo dnf install rpm-build python3-qt5 python3-gpg python3-requests tor
|
||||
sudo dnf install rpm-build python3-qt5 python3-gpg python3-requests python3-pysocks tor
|
||||
./build_rpm.sh
|
||||
sudo yum install dist/torbrowser-launcher-*.rpm
|
||||
```
|
||||
|
@ -305,7 +305,7 @@ class Common(object):
|
||||
'tbl_version': self.tbl_version,
|
||||
'installed': False,
|
||||
'download_over_tor': False,
|
||||
'tor_socks_address': 'tcp:127.0.0.1:9050',
|
||||
'tor_socks_address': '127.0.0.1:9050',
|
||||
'mirror': self.default_mirror,
|
||||
'force_en-US': False,
|
||||
}
|
||||
@ -323,6 +323,11 @@ class Common(object):
|
||||
settings[setting] = default_settings[setting]
|
||||
resave = True
|
||||
|
||||
# make sure tor_socks_address doesn't start with 'tcp:'
|
||||
if settings['tor_socks_address'].startswith('tcp:'):
|
||||
settings['tor_socks_address'] = settings['tor_socks_address'][4:]
|
||||
resave = True
|
||||
|
||||
# make sure the version is current
|
||||
if settings['tbl_version'] != self.tbl_version:
|
||||
settings['tbl_version'] = self.tbl_version
|
||||
|
@ -37,8 +37,8 @@ import threading
|
||||
import re
|
||||
import unicodedata
|
||||
import requests
|
||||
import socks
|
||||
import gpg
|
||||
import OpenSSL
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
from PyQt5 import QtCore, QtWidgets, QtGui
|
||||
@ -81,16 +81,6 @@ class Launcher(QtWidgets.QMainWindow):
|
||||
|
||||
# If Tor Browser is not installed, detect latest version, download, and install
|
||||
if not self.common.settings['installed'] or not self.check_min_version():
|
||||
# If downloading over Tor, include txsocksx
|
||||
if self.common.settings['download_over_tor']:
|
||||
try:
|
||||
import txsocksx
|
||||
print(_('Downloading over Tor'))
|
||||
except ImportError:
|
||||
Alert(self.common, _("The python-txsocksx package is missing, downloads will not happen over tor"))
|
||||
self.common.settings['download_over_tor'] = False
|
||||
self.common.save_settings()
|
||||
|
||||
# Different message if downloading for the first time, or because your installed version is too low
|
||||
download_message = ""
|
||||
if not self.common.settings['installed']:
|
||||
@ -109,6 +99,9 @@ class Launcher(QtWidgets.QMainWindow):
|
||||
'extract',
|
||||
'run'])
|
||||
|
||||
if self.common.settings['download_over_tor']:
|
||||
print(_('Downloading over Tor'))
|
||||
|
||||
else:
|
||||
# Tor Browser is already installed, so run
|
||||
self.run(False)
|
||||
@ -283,12 +276,10 @@ class Launcher(QtWidgets.QMainWindow):
|
||||
# Initialize the progress bar
|
||||
self.progress_bar.setValue(0)
|
||||
self.progress_bar.setMaximum(100)
|
||||
self.progress_bar.setFormat(_('Downloading') + ' {0}, %p%'.format(name))
|
||||
|
||||
if self.common.settings['download_over_tor']:
|
||||
# TODO: make requests work over SOCKS5 proxy
|
||||
# this is the proxy to use: self.common.settings['tor_socks_address']
|
||||
pass
|
||||
self.progress_bar.setFormat(_('Downloading') + ' {0} '.format(name) + _('(over Tor)') + ', %p%')
|
||||
else:
|
||||
self.progress_bar.setFormat(_('Downloading') + ' {0}, %p%'.format(name))
|
||||
|
||||
def progress_update(total_bytes, bytes_so_far):
|
||||
percent = float(bytes_so_far) / float(total_bytes)
|
||||
@ -300,7 +291,9 @@ class Launcher(QtWidgets.QMainWindow):
|
||||
amount /= float(size)
|
||||
break
|
||||
|
||||
message = _('Downloaded')+(' %2.1f%% (%2.1f %s)' % ((percent * 100.0), amount, units))
|
||||
message = _('Downloaded') + (' %2.1f%% (%2.1f %s)' % ((percent * 100.0), amount, units))
|
||||
if self.common.settings['download_over_tor']:
|
||||
message += ' ' + _('(over Tor)')
|
||||
|
||||
self.progress_bar.setMaximum(total_bytes)
|
||||
self.progress_bar.setValue(bytes_so_far)
|
||||
@ -484,11 +477,23 @@ class DownloadThread(QtCore.QThread):
|
||||
self.url = url
|
||||
self.path = path
|
||||
|
||||
# Use tor socks5 proxy, if enabled
|
||||
if self.common.settings['download_over_tor']:
|
||||
socks5_address = 'socks5://{}'.format(self.common.settings['tor_socks_address'])
|
||||
self.proxies = {
|
||||
'https': socks5_address,
|
||||
'http': socks5_address
|
||||
}
|
||||
else:
|
||||
self.proxies = None
|
||||
|
||||
def run(self):
|
||||
with open(self.path, "wb") as f:
|
||||
try:
|
||||
# Start the request
|
||||
r = requests.get(self.url, headers={'User-Agent': 'torbrowser-launcher'}, stream=True)
|
||||
r = requests.get(self.url,
|
||||
headers={'User-Agent': 'torbrowser-launcher'},
|
||||
stream=True, proxies=self.proxies)
|
||||
|
||||
# If status code isn't 200, something went wrong
|
||||
if r.status_code != 200:
|
||||
|
Loading…
Reference in New Issue
Block a user