diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/leap/bitmask/app.py | 15 | ||||
| -rw-r--r-- | src/leap/bitmask/frontend_app.py | 5 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/eip_preferenceswindow.py | 5 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/eip_status.py | 6 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/mainwindow.py | 45 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/preferenceswindow.py | 6 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/wizard.py | 10 | ||||
| -rw-r--r-- | src/leap/bitmask/services/eip/conductor.py | 5 | 
8 files changed, 54 insertions, 43 deletions
| diff --git a/src/leap/bitmask/app.py b/src/leap/bitmask/app.py index f1d87d18..9afe41be 100644 --- a/src/leap/bitmask/app.py +++ b/src/leap/bitmask/app.py @@ -43,9 +43,12 @@ import multiprocessing  import os  import sys +from leap.bitmask.backend.utils import generate_certificates +  from leap.bitmask import __version__ as VERSION  from leap.bitmask.config import flags  from leap.bitmask.frontend_app import run_frontend +from leap.bitmask.backend.leapbackend import run_backend  from leap.bitmask.logs.utils import create_logger  from leap.bitmask.platform_init.locks import we_are_the_one_and_only  from leap.bitmask.services.mail import plumber @@ -114,7 +117,6 @@ def start_app():      do_display_version(opts)      options = { -        'bypass_checks': opts.danger,          'start_hidden': opts.start_hidden,          'debug': opts.debug,          'log_file': opts.log_file, @@ -170,8 +172,15 @@ def start_app():      logger.info('Starting app') -    frontend = multiprocessing.Process(target=run_frontend, args=(options, )) -    frontend.start() +    generate_certificates() + +    app = lambda: run_frontend(options=options) +    gui_process = multiprocessing.Process(target=app) +    gui_process.start() + +    backend = lambda: run_backend(bypass_checks=opts.danger) +    backend_process = multiprocessing.Process(target=backend) +    backend_process.start()  if __name__ == "__main__": diff --git a/src/leap/bitmask/frontend_app.py b/src/leap/bitmask/frontend_app.py index ed67a77a..12703518 100644 --- a/src/leap/bitmask/frontend_app.py +++ b/src/leap/bitmask/frontend_app.py @@ -25,7 +25,6 @@ from PySide import QtCore, QtGui  from leap.bitmask.config import flags  from leap.bitmask.gui import locale_rc  # noqa - silence pylint  from leap.bitmask.gui.mainwindow import MainWindow -# from leap.bitmask.logs.utils import create_logger  import logging  logger = logging.getLogger(__name__) @@ -61,7 +60,6 @@ def run_frontend(options):      :param options: a dict of options parsed from the command line.      :type options: dict      """ -    bypass_checks = options["bypass_checks"]      start_hidden = options["start_hidden"]      # We force the style if on KDE so that it doesn't load all the kde @@ -90,8 +88,7 @@ def run_frontend(options):      qApp.setApplicationName("leap")      qApp.setOrganizationDomain("leap.se") -    window = MainWindow(bypass_checks=bypass_checks, -                        start_hidden=start_hidden) +    window = MainWindow(start_hidden=start_hidden)      sigint_window = partial(sigint_handler, window, logger=logger)      signal.signal(signal.SIGINT, sigint_window) diff --git a/src/leap/bitmask/gui/eip_preferenceswindow.py b/src/leap/bitmask/gui/eip_preferenceswindow.py index 530cd38d..caf663b1 100644 --- a/src/leap/bitmask/gui/eip_preferenceswindow.py +++ b/src/leap/bitmask/gui/eip_preferenceswindow.py @@ -33,7 +33,7 @@ class EIPPreferencesWindow(QtGui.QDialog):      """      Window that displays the EIP preferences.      """ -    def __init__(self, parent, domain, backend): +    def __init__(self, parent, domain, backend, leap_signaler):          """          :param parent: parent object of the EIPPreferencesWindow.          :type parent: QWidget @@ -46,6 +46,7 @@ class EIPPreferencesWindow(QtGui.QDialog):          self.AUTOMATIC_GATEWAY_LABEL = self.tr("Automatic")          self._settings = LeapSettings() +        self._leap_signaler = leap_signaler          self._backend = backend          # Load UI @@ -248,7 +249,7 @@ class EIPPreferencesWindow(QtGui.QDialog):          self.ui.cbGateways.setEnabled(False)      def _backend_connect(self): -        sig = self._backend.signaler +        sig = self._leap_signaler          sig.eip_get_gateways_list.connect(self._update_gateways_list)          sig.eip_get_gateways_list_error.connect(self._gateways_list_error)          sig.eip_uninitialized_provider.connect( diff --git a/src/leap/bitmask/gui/eip_status.py b/src/leap/bitmask/gui/eip_status.py index bd569343..01966d82 100644 --- a/src/leap/bitmask/gui/eip_status.py +++ b/src/leap/bitmask/gui/eip_status.py @@ -44,7 +44,7 @@ class EIPStatusWidget(QtGui.QWidget):      RATE_STR = "%1.2f KB/s"      TOTAL_STR = "%1.2f Kb" -    def __init__(self, parent=None, eip_conductor=None): +    def __init__(self, parent, eip_conductor, leap_signaler):          """          :param parent: the parent of the widget.          :type parent: QObject @@ -60,6 +60,8 @@ class EIPStatusWidget(QtGui.QWidget):          self.ui = Ui_EIPStatus()          self.ui.setupUi(self) +        self._leap_signaler = leap_signaler +          self.eip_conductor = eip_conductor          self.eipconnection = eip_conductor.eip_connection @@ -98,7 +100,7 @@ class EIPStatusWidget(QtGui.QWidget):          """          Connect backend signals.          """ -        signaler = self.eip_conductor._backend.signaler +        signaler = self._leap_signaler          signaler.eip_openvpn_already_running.connect(              self._on_eip_openvpn_already_running) diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index e53ab7f3..4b5d1c83 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -43,7 +43,8 @@ from leap.bitmask.platform_init import IS_WIN, IS_MAC, IS_LINUX  from leap.bitmask.platform_init.initializers import init_platform  from leap.bitmask.platform_init.initializers import init_signals -from leap.bitmask.backend import leapbackend +from leap.bitmask.backend.backend_proxy import BackendProxy +from leap.bitmask.backend.leapsignaler import LeapSignaler  from leap.bitmask.services.eip import conductor as eip_conductor  from leap.bitmask.services.mail import conductor as mail_conductor @@ -91,13 +92,10 @@ class MainWindow(QtGui.QMainWindow):      # We give the services some time to a halt before forcing quit.      SERVICES_STOP_TIMEOUT = 20000  # in milliseconds -    def __init__(self, bypass_checks=False, start_hidden=False): +    def __init__(self, start_hidden=False):          """          Constructor for the client main window -        :param bypass_checks: Set to true if the app should bypass first round -                              of checks for CA certificates at bootstrap -        :type bypass_checks: bool          :param start_hidden: Set to true if the app should not show the window                               but just the tray.          :type start_hidden: bool @@ -119,15 +117,16 @@ class MainWindow(QtGui.QMainWindow):          self.ui = Ui_MainWindow()          self.ui.setupUi(self)          self.menuBar().setNativeMenuBar(not IS_LINUX) -        self._backend = leapbackend.Backend(bypass_checks) -        self._backend.start() + +        self._backend = BackendProxy() + +        self._leap_signaler = LeapSignaler() +        self._leap_signaler.start()          self._settings = LeapSettings()          # Login Widget -        self._login_widget = LoginWidget( -            self._settings, -            self) +        self._login_widget = LoginWidget(self._settings, self)          self.ui.loginLayout.addWidget(self._login_widget)          # Mail Widget @@ -144,8 +143,9 @@ class MainWindow(QtGui.QMainWindow):          # EIP Control redux #########################################          self._eip_conductor = eip_conductor.EIPConductor( -            self._settings, self._backend) -        self._eip_status = EIPStatusWidget(self, self._eip_conductor) +            self._settings, self._backend, self._leap_signaler) +        self._eip_status = EIPStatusWidget(self, self._eip_conductor, +                                           self._leap_signaler)          init_signals.eip_missing_helpers.connect(              self._disable_eip_missing_helpers) @@ -258,7 +258,6 @@ class MainWindow(QtGui.QMainWindow):          self._logger_window = None -        self._bypass_checks = bypass_checks          self._start_hidden = start_hidden          self._mail_conductor = mail_conductor.MailConductor(self._backend) @@ -283,7 +282,7 @@ class MainWindow(QtGui.QMainWindow):              self._wizard_firstrun = True              self._disconnect_and_untrack()              self._wizard = Wizard(backend=self._backend, -                                  bypass_checks=bypass_checks) +                                  leap_signaler=self._leap_signaler)              # Give this window time to finish init and then show the wizard              QtDelayedCall(1, self._launch_wizard)              self._wizard.accepted.connect(self._finish_init) @@ -342,7 +341,7 @@ class MainWindow(QtGui.QMainWindow):                               that we are tracking to disconnect later.          :type only_tracked: bool          """ -        sig = self._backend.signaler +        sig = self._leap_signaler          conntrack = self._connect_and_track          auth_err = self._authentication_error @@ -480,7 +479,7 @@ class MainWindow(QtGui.QMainWindow):          if self._wizard is None:              self._disconnect_and_untrack()              self._wizard = Wizard(backend=self._backend, -                                  bypass_checks=self._bypass_checks) +                                  leap_signaler=self._leap_signaler)              self._wizard.accepted.connect(self._finish_init)              self._wizard.rejected.connect(self._rejected_wizard) @@ -575,7 +574,8 @@ class MainWindow(QtGui.QMainWindow):          if self._provider_details is not None:              mx_provided = MX_SERVICE in self._provider_details['services']          preferences = PreferencesWindow(self, user, domain, self._backend, -                                        self._soledad_started, mx_provided) +                                        self._soledad_started, mx_provided, +                                        self._leap_signaler)          self.soledad_ready.connect(preferences.set_soledad_ready)          preferences.show() @@ -686,7 +686,9 @@ class MainWindow(QtGui.QMainWindow):          Displays the EIP preferences window.          """          domain = self._login_widget.get_selected_provider() -        EIPPreferencesWindow(self, domain, self._backend).show() +        pref = EIPPreferencesWindow(self, domain, +                                    self._backend, self._leap_signaler) +        pref.show()      #      # updates @@ -1277,7 +1279,7 @@ class MainWindow(QtGui.QMainWindow):          if MX_SERVICE in self._enabled_services:              btn_enabled = self._login_widget.set_logout_btn_enabled              btn_enabled(False) -            sig = self._backend.signaler +            sig = self._leap_signaler              sig.soledad_bootstrap_failed.connect(lambda: btn_enabled(True))              sig.soledad_bootstrap_finished.connect(lambda: btn_enabled(True)) @@ -1711,10 +1713,10 @@ class MainWindow(QtGui.QMainWindow):          self._services_being_stopped = set(('imap', 'eip'))          imap_stopped = lambda: self._remove_service('imap') -        self._backend.signaler.imap_stopped.connect(imap_stopped) +        self._leap_signaler.imap_stopped.connect(imap_stopped)          eip_stopped = lambda: self._remove_service('eip') -        self._backend.signaler.eip_stopped.connect(eip_stopped) +        self._leap_signaler.eip_stopped.connect(eip_stopped)          logger.debug('Stopping mail services')          self._backend.imap_stop_service() @@ -1804,7 +1806,6 @@ class MainWindow(QtGui.QMainWindow):          if IS_WIN:              WindowsLock.release_all_locks() -        self._backend.stop()          self.close()          QtDelayedCall(100, twisted_main.quit) diff --git a/src/leap/bitmask/gui/preferenceswindow.py b/src/leap/bitmask/gui/preferenceswindow.py index a3b81d38..8cf8752e 100644 --- a/src/leap/bitmask/gui/preferenceswindow.py +++ b/src/leap/bitmask/gui/preferenceswindow.py @@ -38,7 +38,8 @@ class PreferencesWindow(QtGui.QDialog):      """      preferences_saved = QtCore.Signal() -    def __init__(self, parent, username, domain, backend, soledad_started, mx): +    def __init__(self, parent, username, domain, backend, soledad_started, mx, +                 leap_signaler):          """          :param parent: parent object of the PreferencesWindow.          :parent type: QWidget @@ -58,6 +59,7 @@ class PreferencesWindow(QtGui.QDialog):          self._username = username          self._domain = domain +        self._leap_signaler = leap_signaler          self._backend = backend          self._soledad_started = soledad_started          self._mx_provided = mx @@ -423,7 +425,7 @@ class PreferencesWindow(QtGui.QDialog):          """          Helper to connect to backend signals          """ -        sig = self._backend.signaler +        sig = self._leap_signaler          sig.prov_get_supported_services.connect(self._load_services) diff --git a/src/leap/bitmask/gui/wizard.py b/src/leap/bitmask/gui/wizard.py index 4f67958f..79cccc44 100644 --- a/src/leap/bitmask/gui/wizard.py +++ b/src/leap/bitmask/gui/wizard.py @@ -49,16 +49,12 @@ class Wizard(QtGui.QWizard):      REGISTER_USER_PAGE = 4      SERVICES_PAGE = 5 -    def __init__(self, backend, bypass_checks=False): +    def __init__(self, backend, leap_signaler):          """          Constructor for the main Wizard.          :param backend: Backend being used          :type backend: Backend -        :param bypass_checks: Set to true if the app should bypass -                              first round of checks for CA -                              certificates at bootstrap -        :type bypass_checks: bool          """          QtGui.QWizard.__init__(self) @@ -86,6 +82,8 @@ class Wizard(QtGui.QWizard):          self._connect_and_track(self.ui.lnProvider.returnPressed,                                  self._check_provider) +        self._leap_signaler = leap_signaler +          self._backend = backend          self._backend_connect() @@ -789,7 +787,7 @@ class Wizard(QtGui.QWizard):          """          Connects all the backend signals with the wizard.          """ -        sig = self._backend.signaler +        sig = self._leap_signaler          conntrack = self._connect_and_track          conntrack(sig.prov_name_resolution, self._name_resolution)          conntrack(sig.prov_https_connection, self._https_connection) diff --git a/src/leap/bitmask/services/eip/conductor.py b/src/leap/bitmask/services/eip/conductor.py index a8821160..dfd27f3d 100644 --- a/src/leap/bitmask/services/eip/conductor.py +++ b/src/leap/bitmask/services/eip/conductor.py @@ -33,7 +33,7 @@ logger = logging.getLogger(__name__)  class EIPConductor(object): -    def __init__(self, settings, backend, **kwargs): +    def __init__(self, settings, backend, leap_signaler, **kwargs):          """          Initializes EIP Conductor. @@ -46,6 +46,7 @@ class EIPConductor(object):          self.eip_connection = EIPConnection()          self.eip_name = get_service_display_name(EIP_SERVICE)          self._settings = settings +        self._leap_signaler = leap_signaler          self._backend = backend          self._eip_status = None @@ -76,7 +77,7 @@ class EIPConductor(object):          """          Connect to backend signals.          """ -        signaler = self._backend.signaler +        signaler = self._leap_signaler          # for conductor          signaler.eip_process_restart_tls.connect(self._do_eip_restart) | 
