diff options
Diffstat (limited to 'onionshare_gui/threads.py')
-rw-r--r-- | onionshare_gui/threads.py | 72 |
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]) |