diff options
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | onionshare/onion.py | 22 | ||||
-rw-r--r-- | onionshare_gui/onionshare_gui.py | 41 | ||||
-rw-r--r-- | onionshare_gui/server_status.py | 15 | ||||
-rw-r--r-- | onionshare_gui/settings_dialog.py | 6 | ||||
-rw-r--r-- | share/locale/en.json | 2 | ||||
-rw-r--r-- | share/locale/nl.json | 1 |
7 files changed, 16 insertions, 72 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 6169840b..f1d13fc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,6 @@ * Client-side web interfact redesigned * New feature: Support for meek_lite pluggable transports (Amazon and Azure) * New feature: Support for custom obfs4 and meek-lite bridges -* New feature: ability to cancel share before it starts * Bug fix: the UpdateChecker no longer blocks the UI when checking * Bug fix: simultaneous downloads (broken in 1.2) * Update Tor to 0.2.3.9 diff --git a/onionshare/onion.py b/onionshare/onion.py index 068648ba..887650c9 100644 --- a/onionshare/onion.py +++ b/onionshare/onion.py @@ -488,8 +488,8 @@ class Onion(object): auth_cookie = list(res.client_auth.values())[0] self.auth_string = 'HidServAuth {} {}'.format(onion_host, auth_cookie) + self.settings.save() if onion_host is not None: - self.settings.save() return onion_host else: raise TorErrorProtocolError(strings._('error_tor_protocol_error')) @@ -500,19 +500,13 @@ class Onion(object): """ common.log('Onion', 'cleanup') - # Cleanup the ephemeral onion services, if we have any - try: - onions = self.c.list_ephemeral_hidden_services() - for onion in onions: - try: - common.log('Onion', 'cleanup', 'trying to remove onion {}'.format(onion)) - self.c.remove_ephemeral_hidden_service(onion) - except: - common.log('Onion', 'cleanup', 'could not remove onion {}.. moving on anyway'.format(onion)) - pass - except: - pass - self.service_id = None + # Cleanup the ephemeral onion service + if self.service_id: + try: + self.c.remove_ephemeral_hidden_service(self.service_id) + except: + pass + self.service_id = None if stop_tor: # Stop tor process diff --git a/onionshare_gui/onionshare_gui.py b/onionshare_gui/onionshare_gui.py index e6987cfb..4f664225 100644 --- a/onionshare_gui/onionshare_gui.py +++ b/onionshare_gui/onionshare_gui.py @@ -78,9 +78,6 @@ class OnionShareGui(QtWidgets.QMainWindow): self.server_status.server_stopped.connect(self.stop_server) self.server_status.server_stopped.connect(self.update_server_status_indicator) self.server_status.server_stopped.connect(self.update_primary_action) - self.server_status.server_canceled.connect(self.cancel_server) - self.server_status.server_canceled.connect(self.file_selection.server_stopped) - self.server_status.server_canceled.connect(self.update_primary_action) self.start_server_finished.connect(self.clear_message) self.start_server_finished.connect(self.server_status.start_server_finished) self.start_server_finished.connect(self.update_server_status_indicator) @@ -401,10 +398,9 @@ class OnionShareGui(QtWidgets.QMainWindow): # wait for modules in thread to load, preventing a thread-related cx_Freeze crash time.sleep(0.2) - common.log('OnionshareGui', 'start_server', 'Starting an onion thread') - self.t = OnionThread(function=start_onion_service, kwargs={'self': self}) - self.t.daemon = True - self.t.start() + t = threading.Thread(target=start_onion_service, kwargs={'self': self}) + t.daemon = True + t.start() def start_server_step2(self): """ @@ -487,14 +483,6 @@ class OnionShareGui(QtWidgets.QMainWindow): self._zip_progress_bar = None self.status_bar.clearMessage() - def cancel_server(self): - """ - Cancel the server while it is preparing to start - """ - if self.t: - self.t.terminate() - self.stop_server() - def stop_server(self): """ Stop the onionshare server. @@ -789,26 +777,3 @@ class ZipProgressBar(QtWidgets.QProgressBar): self.setValue(100) else: self.setValue(0) - - -class OnionThread(QtCore.QThread): - """ - A QThread for starting our Onion Service. - By using QThread rather than threading.Thread, we are able - to call quit() or terminate() on the startup if the user - decided to cancel (in which case do not proceed with obtaining - the Onion address and starting the web server). - """ - def __init__(self, function, kwargs=None): - super(OnionThread, self).__init__() - common.log('OnionThread', '__init__') - self.function = function - if not kwargs: - self.kwargs = {} - else: - self.kwargs = kwargs - - def run(self): - common.log('OnionThread', 'run') - - self.function(**self.kwargs) diff --git a/onionshare_gui/server_status.py b/onionshare_gui/server_status.py index 03540415..6c5cc080 100644 --- a/onionshare_gui/server_status.py +++ b/onionshare_gui/server_status.py @@ -29,7 +29,6 @@ class ServerStatus(QtWidgets.QWidget): """ server_started = QtCore.pyqtSignal() server_stopped = QtCore.pyqtSignal() - server_canceled = QtCore.pyqtSignal() button_clicked = QtCore.pyqtSignal() url_copied = QtCore.pyqtSignal() hidservauth_copied = QtCore.pyqtSignal() @@ -191,7 +190,7 @@ class ServerStatus(QtWidgets.QWidget): self.server_button.setToolTip(strings._('gui_stop_server_shutdown_timeout_tooltip', True).format(self.timeout)) elif self.status == self.STATUS_WORKING: self.server_button.setStyleSheet(button_working_style) - self.server_button.setEnabled(True) + self.server_button.setEnabled(False) self.server_button.setText(strings._('gui_please_wait')) if self.settings.get('shutdown_timeout'): self.shutdown_timeout_container.hide() @@ -219,8 +218,6 @@ class ServerStatus(QtWidgets.QWidget): self.start_server() elif self.status == self.STATUS_STARTED: self.stop_server() - elif self.status == self.STATUS_WORKING: - self.cancel_server() self.button_clicked.emit() def start_server(self): @@ -248,16 +245,6 @@ class ServerStatus(QtWidgets.QWidget): self.update() self.server_stopped.emit() - def cancel_server(self): - """ - Cancel the server. - """ - common.log('ServerStatus', 'cancel_server', 'Canceling the server mid-startup') - self.status = self.STATUS_WORKING - self.shutdown_timeout_reset() - self.update() - self.server_canceled.emit() - def stop_server_finished(self): """ The server has finished stopping. diff --git a/onionshare_gui/settings_dialog.py b/onionshare_gui/settings_dialog.py index a279723e..e7bd2fae 100644 --- a/onionshare_gui/settings_dialog.py +++ b/onionshare_gui/settings_dialog.py @@ -169,7 +169,7 @@ class SettingsDialog(QtWidgets.QDialog): (self.tor_path, self.tor_geo_ip_file_path, self.tor_geo_ipv6_file_path, self.obfs4proxy_file_path) = common.get_tor_paths() if not os.path.isfile(self.obfs4proxy_file_path): self.tor_bridges_use_meek_lite_amazon_radio = QtWidgets.QRadioButton(strings._('gui_settings_tor_bridges_meek_lite_amazon_radio_option_no_obfs4proxy', True)) - self.tor_bridges_use_meel_lite_amazon_radio.setEnabled(False) + self.tor_bridges_use_meek_lite_amazon_radio.setEnabled(False) else: self.tor_bridges_use_meek_lite_amazon_radio = QtWidgets.QRadioButton(strings._('gui_settings_tor_bridges_meek_lite_amazon_radio_option', True)) self.tor_bridges_use_meek_lite_amazon_radio.toggled.connect(self.tor_bridges_use_meek_lite_amazon_radio_toggled) @@ -179,7 +179,7 @@ class SettingsDialog(QtWidgets.QDialog): (self.tor_path, self.tor_geo_ip_file_path, self.tor_geo_ipv6_file_path, self.obfs4proxy_file_path) = common.get_tor_paths() if not os.path.isfile(self.obfs4proxy_file_path): self.tor_bridges_use_meek_lite_azure_radio = QtWidgets.QRadioButton(strings._('gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy', True)) - self.tor_bridges_use_meel_lite_azure_radio.setEnabled(False) + self.tor_bridges_use_meek_lite_azure_radio.setEnabled(False) else: self.tor_bridges_use_meek_lite_azure_radio = QtWidgets.QRadioButton(strings._('gui_settings_tor_bridges_meek_lite_azure_radio_option', True)) self.tor_bridges_use_meek_lite_azure_radio.toggled.connect(self.tor_bridges_use_meek_lite_azure_radio_toggled) @@ -494,7 +494,7 @@ class SettingsDialog(QtWidgets.QDialog): def tor_bridges_use_meek_lite_azure_radio_toggled(self, checked): """ - meel_lite_azure bridges option was toggled. If checked, disable custom bridge options. + meek_lite_azure bridges option was toggled. If checked, disable custom bridge options. """ if checked: self.tor_bridges_use_custom_textbox_options.hide() diff --git a/share/locale/en.json b/share/locale/en.json index 6cd5b4e2..3c426c67 100644 --- a/share/locale/en.json +++ b/share/locale/en.json @@ -52,7 +52,7 @@ "gui_copied_hidservauth": "The HidServAuth line has been copied to clipboard", "gui_starting_server1": "Starting Tor onion service...", "gui_starting_server2": "Crunching files...", - "gui_please_wait": "Starting... Click to cancel", + "gui_please_wait": "Please wait...", "error_hs_dir_cannot_create": "Cannot create onion service dir {0:s}", "error_hs_dir_not_writable": "onion service dir {0:s} is not writable", "using_ephemeral": "Starting ephemeral Tor onion service and awaiting publication", diff --git a/share/locale/nl.json b/share/locale/nl.json index 1203f2ee..3dd74664 100644 --- a/share/locale/nl.json +++ b/share/locale/nl.json @@ -64,7 +64,6 @@ "error_stealth_not_supported": "Om een geheime onion service te maken heb je minstens Tor 0.2.9.1-alpha (of Tor Browser 6.5) en minstens python3-stem 1.5.0 nodig.", "error_ephemeral_not_supported": "OnionShare vereist minstens Tor 0.2.7.1 en minstens python3-stem 1.4.0.", "gui_settings_window_title": "Instellingen", - "gui_settings_window_title": "Instellingen", "gui_settings_stealth_label": "Stealth (geavanceerd)", "gui_settings_stealth_option": "Maak stealth onion services", "gui_settings_stealth_option_details": "Dit maakt OnionShare veiliger, maar ook lastiger voor de ontvanger om te verbinden.<br><a href=\"https://github.com/micahflee/onionshare/wiki/Stealth-Onion-Services\">Meer informatie</a>.", |