summaryrefslogtreecommitdiff
path: root/onionshare_gui/threads.py
diff options
context:
space:
mode:
Diffstat (limited to 'onionshare_gui/threads.py')
-rw-r--r--onionshare_gui/threads.py72
1 files changed, 55 insertions, 17 deletions
diff --git a/onionshare_gui/threads.py b/onionshare_gui/threads.py
index 26a9ee6b..090574c1 100644
--- a/onionshare_gui/threads.py
+++ b/onionshare_gui/threads.py
@@ -27,6 +27,7 @@ class OnionThread(QtCore.QThread):
"""
Starts the onion service, and waits for it to finish
"""
+
success = QtCore.pyqtSignal()
success_early = QtCore.pyqtSignal()
error = QtCore.pyqtSignal(str)
@@ -34,25 +35,34 @@ class OnionThread(QtCore.QThread):
def __init__(self, mode):
super(OnionThread, self).__init__()
self.mode = mode
- self.mode.common.log('OnionThread', '__init__')
+ self.mode.common.log("OnionThread", "__init__")
# allow this thread to be terminated
self.setTerminationEnabled()
def run(self):
- self.mode.common.log('OnionThread', 'run')
+ self.mode.common.log("OnionThread", "run")
+
+ # Make a new static URL path for each new share
+ self.mode.web.generate_static_url_path()
- # Choose port and slug early, because we need them to exist in advance for scheduled shares
- self.mode.app.stay_open = not self.mode.common.settings.get('close_after_first_download')
+ # Choose port and password early, because we need them to exist in advance for scheduled shares
+ self.mode.app.stay_open = not self.mode.common.settings.get(
+ "close_after_first_download"
+ )
if not self.mode.app.port:
self.mode.app.choose_port()
- if not self.mode.common.settings.get('public_mode'):
- if not self.mode.web.slug:
- self.mode.web.generate_slug(self.mode.common.settings.get('slug'))
+ if not self.mode.common.settings.get("public_mode"):
+ if not self.mode.web.password:
+ self.mode.web.generate_password(
+ self.mode.common.settings.get("password")
+ )
try:
if self.mode.obtain_onion_early:
- self.mode.app.start_onion_service(await_publication=False, save_scheduled_key=True)
+ self.mode.app.start_onion_service(
+ await_publication=False, save_scheduled_key=True
+ )
# wait for modules in thread to load, preventing a thread-related cx_Freeze crash
time.sleep(0.2)
self.success_early.emit()
@@ -67,7 +77,19 @@ class OnionThread(QtCore.QThread):
self.mode.web_thread.start()
self.success.emit()
- except (TorTooOld, TorErrorInvalidSetting, TorErrorAutomatic, TorErrorSocketPort, TorErrorSocketFile, TorErrorMissingPassword, TorErrorUnreadableCookieFile, TorErrorAuthError, TorErrorProtocolError, BundledTorTimeout, OSError) as e:
+ except (
+ TorTooOld,
+ TorErrorInvalidSetting,
+ TorErrorAutomatic,
+ TorErrorSocketPort,
+ TorErrorSocketFile,
+ TorErrorMissingPassword,
+ TorErrorUnreadableCookieFile,
+ TorErrorAuthError,
+ TorErrorProtocolError,
+ BundledTorTimeout,
+ OSError,
+ ) as e:
self.error.emit(e.args[0])
return
@@ -76,17 +98,23 @@ class WebThread(QtCore.QThread):
"""
Starts the web service
"""
+
success = QtCore.pyqtSignal()
error = QtCore.pyqtSignal(str)
def __init__(self, mode):
super(WebThread, self).__init__()
self.mode = mode
- self.mode.common.log('WebThread', '__init__')
+ self.mode.common.log("WebThread", "__init__")
def run(self):
- self.mode.common.log('WebThread', 'run')
- self.mode.web.start(self.mode.app.port, self.mode.app.stay_open, self.mode.common.settings.get('public_mode'), self.mode.web.slug)
+ self.mode.common.log("WebThread", "run")
+ self.mode.web.start(
+ self.mode.app.port,
+ self.mode.app.stay_open,
+ self.mode.common.settings.get("public_mode"),
+ self.mode.web.password,
+ )
self.success.emit()
@@ -94,30 +122,40 @@ class AutoStartTimer(QtCore.QThread):
"""
Waits for a prescribed time before allowing a share to start
"""
+
success = QtCore.pyqtSignal()
error = QtCore.pyqtSignal(str)
+
def __init__(self, mode, canceled=False):
super(AutoStartTimer, self).__init__()
self.mode = mode
self.canceled = canceled
- self.mode.common.log('AutoStartTimer', '__init__')
+ self.mode.common.log("AutoStartTimer", "__init__")
# allow this thread to be terminated
self.setTerminationEnabled()
def run(self):
now = QtCore.QDateTime.currentDateTime()
- autostart_timer_datetime_delta = now.secsTo(self.mode.server_status.autostart_timer_datetime)
+ autostart_timer_datetime_delta = now.secsTo(
+ self.mode.server_status.autostart_timer_datetime
+ )
try:
# Sleep until scheduled time
while autostart_timer_datetime_delta > 0 and self.canceled == False:
time.sleep(0.1)
now = QtCore.QDateTime.currentDateTime()
- autostart_timer_datetime_delta = now.secsTo(self.mode.server_status.autostart_timer_datetime)
+ autostart_timer_datetime_delta = now.secsTo(
+ self.mode.server_status.autostart_timer_datetime
+ )
# Timer has now finished
if self.canceled == False:
- self.mode.server_status.server_button.setText(strings._('gui_please_wait'))
- self.mode.server_status_label.setText(strings._('gui_status_indicator_share_working'))
+ self.mode.server_status.server_button.setText(
+ strings._("gui_please_wait")
+ )
+ self.mode.server_status_label.setText(
+ strings._("gui_status_indicator_share_working")
+ )
self.success.emit()
except ValueError as e:
self.error.emit(e.args[0])