mirror of
https://github.com/onionshare/onionshare.git
synced 2025-07-27 00:25:45 -04:00
OnionShare connects fine when connection_type isn't bundled_tor, and it now displays errors and opens Settings when it can't connect to Tor
This commit is contained in:
parent
4d522e1e85
commit
ad2c5e94b4
2 changed files with 26 additions and 4 deletions
|
@ -25,6 +25,7 @@ from onionshare.settings import Settings
|
||||||
from onionshare.onion import *
|
from onionshare.onion import *
|
||||||
|
|
||||||
from .tor_connection_dialog import TorConnectionDialog
|
from .tor_connection_dialog import TorConnectionDialog
|
||||||
|
from .settings_dialog import SettingsDialog
|
||||||
from .menu import Menu
|
from .menu import Menu
|
||||||
from .file_selection import FileSelection
|
from .file_selection import FileSelection
|
||||||
from .server_status import ServerStatus
|
from .server_status import ServerStatus
|
||||||
|
@ -59,6 +60,7 @@ class OnionShareGui(QtWidgets.QMainWindow):
|
||||||
# Start the "Connecting to Tor" dialog, which calls onion.connect()
|
# Start the "Connecting to Tor" dialog, which calls onion.connect()
|
||||||
tor_con = TorConnectionDialog(self.settings, self.onion)
|
tor_con = TorConnectionDialog(self.settings, self.onion)
|
||||||
tor_con.canceled.connect(self._tor_connection_canceled)
|
tor_con.canceled.connect(self._tor_connection_canceled)
|
||||||
|
tor_con.open_settings.connect(self._tor_connection_open_settings)
|
||||||
tor_con.start()
|
tor_con.start()
|
||||||
|
|
||||||
# Menu bar
|
# Menu bar
|
||||||
|
@ -146,9 +148,19 @@ class OnionShareGui(QtWidgets.QMainWindow):
|
||||||
def quit():
|
def quit():
|
||||||
self.qtapp.quit()
|
self.qtapp.quit()
|
||||||
|
|
||||||
# Wait 1ms for the event loop to finish closing the TorConnectionDialog before quitting
|
# Wait 1ms for the event loop to finish closing the TorConnectionDialog
|
||||||
QtCore.QTimer.singleShot(1, quit)
|
QtCore.QTimer.singleShot(1, quit)
|
||||||
|
|
||||||
|
def _tor_connection_open_settings(self):
|
||||||
|
"""
|
||||||
|
The TorConnectionDialog wants to open the Settings dialog
|
||||||
|
"""
|
||||||
|
def open_settings():
|
||||||
|
SettingsDialog(self.qtapp)
|
||||||
|
|
||||||
|
# Wait 1ms for the event loop to finish closing the TorConnectionDialog
|
||||||
|
QtCore.QTimer.singleShot(1, open_settings)
|
||||||
|
|
||||||
def start_server(self):
|
def start_server(self):
|
||||||
"""
|
"""
|
||||||
Start the onionshare server. This uses multiple threads to start the Tor onion
|
Start the onionshare server. This uses multiple threads to start the Tor onion
|
||||||
|
|
|
@ -22,10 +22,14 @@ from PyQt5 import QtCore, QtWidgets, QtGui
|
||||||
from onionshare import strings, helpers
|
from onionshare import strings, helpers
|
||||||
from onionshare.onion import *
|
from onionshare.onion import *
|
||||||
|
|
||||||
|
from .alert import Alert
|
||||||
|
|
||||||
class TorConnectionDialog(QtWidgets.QProgressDialog):
|
class TorConnectionDialog(QtWidgets.QProgressDialog):
|
||||||
"""
|
"""
|
||||||
Connecting to Tor dialog.
|
Connecting to Tor dialog.
|
||||||
"""
|
"""
|
||||||
|
open_settings = QtCore.pyqtSignal()
|
||||||
|
|
||||||
def __init__(self, settings, onion):
|
def __init__(self, settings, onion):
|
||||||
super(TorConnectionDialog, self).__init__(None)
|
super(TorConnectionDialog, self).__init__(None)
|
||||||
self.settings = settings
|
self.settings = settings
|
||||||
|
@ -62,10 +66,16 @@ class TorConnectionDialog(QtWidgets.QProgressDialog):
|
||||||
|
|
||||||
except BundledTorCanceled as e:
|
except BundledTorCanceled as e:
|
||||||
self.cancel()
|
self.cancel()
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e.args[0])
|
# Cancel connecting to Tor
|
||||||
# TODO: Open settings to connect to Tor properly
|
self.cancel()
|
||||||
sys.exit()
|
|
||||||
|
# Display the exception in an alert box
|
||||||
|
Alert("{}\n\nTry adjusting how OnionShare connects to the Tor network in Settings.".format(e.args[0]), QtWidgets.QMessageBox.Warning)
|
||||||
|
|
||||||
|
# Open settings
|
||||||
|
self.open_settings.emit()
|
||||||
|
|
||||||
def tor_status_update(self, progress, summary):
|
def tor_status_update(self, progress, summary):
|
||||||
self.setValue(int(progress))
|
self.setValue(int(progress))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue