diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/leap/gui/mainwindow.py | 16 | ||||
| -rw-r--r-- | src/leap/services/eip/vpnlaunchers.py | 14 | 
2 files changed, 26 insertions, 4 deletions
diff --git a/src/leap/gui/mainwindow.py b/src/leap/gui/mainwindow.py index 1d0d3120..f333d7ec 100644 --- a/src/leap/gui/mainwindow.py +++ b/src/leap/gui/mainwindow.py @@ -52,10 +52,12 @@ from leap.services.eip.vpnprocess import VPN  from leap.services.eip.vpnprocess import OpenVPNAlreadyRunning  from leap.services.eip.vpnprocess import AlienOpenVPNAlreadyRunning -from leap.services.eip.vpnlaunchers import (VPNLauncherException, -                                            OpenVPNNotFoundException, -                                            EIPNoPkexecAvailable, -                                            EIPNoPolkitAuthAgentAvailable) +from leap.services.eip.vpnlaunchers import VPNLauncherException +from leap.services.eip.vpnlaunchers import OpenVPNNotFoundException +from leap.services.eip.vpnlaunchers import EIPNoPkexecAvailable +from leap.services.eip.vpnlaunchers import EIPNoPolkitAuthAgentAvailable +from leap.services.eip.vpnlaunchers import EIPNoTunKextLoaded +  from leap.util import __version__ as VERSION  from leap.util.keyring_helpers import has_keyring @@ -1037,6 +1039,12 @@ class MainWindow(QtGui.QMainWindow):                          "running and try again."),                  error=True)              self._set_eipstatus_off() +        except EIPNoTunKextLoaded: +            self._status_panel.set_global_status( +                self.tr("Encrypted Internet cannot be started because " +                        "the tuntap extension is not installed properly " +                        "in your system.")) +            self._set_eipstatus_off()          except EIPNoPkexecAvailable:              self._status_panel.set_global_status(                  self.tr("We could not find <b>pkexec</b> " diff --git a/src/leap/services/eip/vpnlaunchers.py b/src/leap/services/eip/vpnlaunchers.py index 81d9b43b..8522d1df 100644 --- a/src/leap/services/eip/vpnlaunchers.py +++ b/src/leap/services/eip/vpnlaunchers.py @@ -58,6 +58,10 @@ class EIPNoPkexecAvailable(VPNLauncherException):      pass +class EIPNoTunKextLoaded(VPNLauncherException): +    pass + +  class VPNLauncher:      """      Abstract launcher class @@ -520,6 +524,13 @@ class DarwinVPNLauncher(VPNLauncher):              to, frompath, to, to)          return cmd +    @classmethod +    def maybe_kextloaded(kls): +        """ +        Checks if the needed kext is loaded before launching openvpn. +        """ +        return bool(commands.getoutput('kextstat | grep "leap.tun"')) +      def _get_resource_path(self):          """          Returns the absolute path to the app resources directory @@ -600,6 +611,9 @@ class DarwinVPNLauncher(VPNLauncher):          leap_assert(socket_host, "We need a socket host!")          leap_assert(socket_port, "We need a socket port!") +        if not self.maybe_kextloaded(): +            raise EIPNoTunKextLoaded +          kwargs = {}          if ProviderConfig.standalone:              kwargs['path_extension'] = os.path.join(  | 
