aboutsummaryrefslogtreecommitdiff
path: root/onionshare_gui/update_checker.py
diff options
context:
space:
mode:
Diffstat (limited to 'onionshare_gui/update_checker.py')
-rw-r--r--onionshare_gui/update_checker.py60
1 files changed, 33 insertions, 27 deletions
diff --git a/onionshare_gui/update_checker.py b/onionshare_gui/update_checker.py
index 5d73efb4..a7e0b99c 100644
--- a/onionshare_gui/update_checker.py
+++ b/onionshare_gui/update_checker.py
@@ -2,7 +2,7 @@
"""
OnionShare | https://onionshare.org/
-Copyright (C) 2018 Micah Lee <micah@micahflee.com>
+Copyright (C) 2014-2018 Micah Lee <micah@micahflee.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -19,13 +19,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
from PyQt5 import QtCore
import datetime, time, socket, re, platform
+import socks
from distutils.version import LooseVersion as Version
-from onionshare import socks
from onionshare.settings import Settings
from onionshare.onion import Onion
-from . import strings, common
+from . import strings
class UpdateCheckerCheckError(Exception):
"""
@@ -53,18 +53,21 @@ class UpdateChecker(QtCore.QObject):
update_available = QtCore.pyqtSignal(str, str, str)
update_not_available = QtCore.pyqtSignal()
update_error = QtCore.pyqtSignal()
- update_invalid_version = QtCore.pyqtSignal()
+ update_invalid_version = QtCore.pyqtSignal(str)
- def __init__(self, onion, config=False):
+ def __init__(self, common, onion, config=False):
super(UpdateChecker, self).__init__()
- common.log('UpdateChecker', '__init__')
+
+ self.common = common
+
+ self.common.log('UpdateChecker', '__init__')
self.onion = onion
self.config = config
def check(self, force=False, config=False):
- common.log('UpdateChecker', 'check', 'force={}'.format(force))
+ self.common.log('UpdateChecker', 'check', 'force={}'.format(force))
# Load the settings
- settings = Settings(config)
+ settings = Settings(self.common, config)
settings.load()
# If force=True, then definitely check
@@ -87,11 +90,11 @@ class UpdateChecker(QtCore.QObject):
# Check for updates
if check_for_updates:
- common.log('UpdateChecker', 'check', 'checking for updates')
+ self.common.log('UpdateChecker', 'check', 'checking for updates')
# Download the latest-version file over Tor
try:
# User agent string includes OnionShare version and platform
- user_agent = 'OnionShare {}, {}'.format(common.get_version(), platform.system())
+ user_agent = 'OnionShare {}, {}'.format(self.common.version, self.common.platform)
# If the update is forced, add '?force=1' to the URL, to more
# accurately measure daily users
@@ -104,7 +107,7 @@ class UpdateChecker(QtCore.QObject):
else:
onion_domain = 'elx57ue5uyfplgva.onion'
- common.log('UpdateChecker', 'check', 'loading http://{}{}'.format(onion_domain, path))
+ self.common.log('UpdateChecker', 'check', 'loading http://{}{}'.format(onion_domain, path))
(socks_address, socks_port) = self.onion.get_tor_socks_port()
socks.set_default_proxy(socks.SOCKS5, socks_address, socks_port)
@@ -122,10 +125,10 @@ class UpdateChecker(QtCore.QObject):
http_response = s.recv(1024)
latest_version = http_response[http_response.find(b'\r\n\r\n'):].strip().decode('utf-8')
- common.log('UpdateChecker', 'check', 'latest OnionShare version: {}'.format(latest_version))
+ self.common.log('UpdateChecker', 'check', 'latest OnionShare version: {}'.format(latest_version))
except Exception as e:
- common.log('UpdateChecker', 'check', '{}'.format(e))
+ self.common.log('UpdateChecker', 'check', '{}'.format(e))
self.update_error.emit()
raise UpdateCheckerCheckError
@@ -133,7 +136,7 @@ class UpdateChecker(QtCore.QObject):
# This regex is: 1-3 dot-separated numeric components
version_re = r"^(\d+\.)?(\d+\.)?(\d+)$"
if not re.match(version_re, latest_version):
- self.update_invalid_version.emit()
+ self.update_invalid_version.emit(latest_version)
raise UpdateCheckerInvalidLatestVersion(latest_version)
# Update the last checked timestamp (dropping the seconds and milliseconds)
@@ -145,7 +148,7 @@ class UpdateChecker(QtCore.QObject):
# Do we need to update?
update_url = 'https://github.com/micahflee/onionshare/releases/tag/v{}'.format(latest_version)
- installed_version = common.get_version()
+ installed_version = self.common.version
if installed_version < latest_version:
self.update_available.emit(update_url, installed_version, latest_version)
return
@@ -157,19 +160,22 @@ class UpdateThread(QtCore.QThread):
update_available = QtCore.pyqtSignal(str, str, str)
update_not_available = QtCore.pyqtSignal()
update_error = QtCore.pyqtSignal()
- update_invalid_version = QtCore.pyqtSignal()
+ update_invalid_version = QtCore.pyqtSignal(str)
- def __init__(self, onion, config=False, force=False):
+ def __init__(self, common, onion, config=False, force=False):
super(UpdateThread, self).__init__()
- common.log('UpdateThread', '__init__')
+
+ self.common = common
+
+ self.common.log('UpdateThread', '__init__')
self.onion = onion
self.config = config
self.force = force
def run(self):
- common.log('UpdateThread', 'run')
+ self.common.log('UpdateThread', 'run')
- u = UpdateChecker(self.onion, self.config)
+ u = UpdateChecker(self.common, self.onion, self.config)
u.update_available.connect(self._update_available)
u.update_not_available.connect(self._update_not_available)
u.update_error.connect(self._update_error)
@@ -179,25 +185,25 @@ class UpdateThread(QtCore.QThread):
u.check(config=self.config,force=self.force)
except Exception as e:
# If update check fails, silently ignore
- common.log('UpdateThread', 'run', '{}'.format(e))
+ self.common.log('UpdateThread', 'run', '{}'.format(e))
pass
def _update_available(self, update_url, installed_version, latest_version):
- common.log('UpdateThread', '_update_available')
+ self.common.log('UpdateThread', '_update_available')
self.active = False
self.update_available.emit(update_url, installed_version, latest_version)
def _update_not_available(self):
- common.log('UpdateThread', '_update_not_available')
+ self.common.log('UpdateThread', '_update_not_available')
self.active = False
self.update_not_available.emit()
def _update_error(self):
- common.log('UpdateThread', '_update_error')
+ self.common.log('UpdateThread', '_update_error')
self.active = False
self.update_error.emit()
- def _update_invalid_version(self):
- common.log('UpdateThread', '_update_invalid_version')
+ def _update_invalid_version(self, latest_version):
+ self.common.log('UpdateThread', '_update_invalid_version')
self.active = False
- self.update_invalid_version.emit()
+ self.update_invalid_version.emit(latest_version)