summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/leap/gui/mainwindow.py22
-rw-r--r--src/leap/gui/ui/mainwindow.ui3
-rw-r--r--src/leap/services/eip/vpnlaunchers.py21
3 files changed, 41 insertions, 5 deletions
diff --git a/src/leap/gui/mainwindow.py b/src/leap/gui/mainwindow.py
index 9b4a70a5..9589bea0 100644
--- a/src/leap/gui/mainwindow.py
+++ b/src/leap/gui/mainwindow.py
@@ -30,7 +30,10 @@ from ui_mainwindow import Ui_MainWindow
from leap.config.providerconfig import ProviderConfig
from leap.crypto.srpauth import SRPAuth
from leap.services.eip.vpn import VPN
-from leap.services.eip.vpnlaunchers import VPNLauncherException
+from leap.services.eip.vpnlaunchers import (VPNLauncherException,
+ OpenVPNNotFoundException,
+ EIPNoPkexecAvailable,
+ EIPNoPolkitAuthAgentAvailable)
from leap.services.eip.providerbootstrapper import ProviderBootstrapper
from leap.services.eip.eipbootstrapper import EIPBootstrapper
from leap.services.eip.eipconfig import EIPConfig
@@ -605,8 +608,25 @@ class MainWindow(QtGui.QMainWindow):
self.ui.btnEipStartStop.disconnect(self)
self.ui.btnEipStartStop.clicked.connect(
self._stop_eip)
+ except EIPNoPolkitAuthAgentAvailable:
+ self._set_eip_status(self.tr("We could not find any "
+ "authentication "
+ "agent in your system.<br/>"
+ "Make sure you have "
+ "<b>polkit-gnome-authentication-"
+ "agent-1</b> "
+ "running and try again."),
+ error=True)
+ except EIPNoPkexecAvailable:
+ self._set_eip_status(self.tr("We could not find <b>pkexec</b> "
+ "in your system."),
+ error=True)
+ except OpenVPNNotFoundException:
+ self._set_eip_status(self.tr("We couldn't find openvpn"),
+ error=True)
except VPNLauncherException as e:
self._set_eip_status("%s" % (e,), error=True)
+
self.ui.btnEipStartStop.setEnabled(True)
def _stop_eip(self):
diff --git a/src/leap/gui/ui/mainwindow.ui b/src/leap/gui/ui/mainwindow.ui
index a8a8aa59..ca3db95c 100644
--- a/src/leap/gui/ui/mainwindow.ui
+++ b/src/leap/gui/ui/mainwindow.ui
@@ -274,6 +274,9 @@
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
</widget>
</item>
<item row="2" column="1" colspan="4">
diff --git a/src/leap/services/eip/vpnlaunchers.py b/src/leap/services/eip/vpnlaunchers.py
index 6f277481..9345c0b3 100644
--- a/src/leap/services/eip/vpnlaunchers.py
+++ b/src/leap/services/eip/vpnlaunchers.py
@@ -38,6 +38,18 @@ class VPNLauncherException(Exception):
pass
+class OpenVPNNotFoundException(VPNLauncherException):
+ pass
+
+
+class EIPNoPolkitAuthAgentAvailable(VPNLauncherException):
+ pass
+
+
+class EIPNoPkexecAvailable(VPNLauncherException):
+ pass
+
+
class VPNLauncher:
"""
Abstract launcher class
@@ -45,7 +57,6 @@ class VPNLauncher:
__metaclass__ = ABCMeta
- # TODO: document parameters
@abstractmethod
def get_vpn_command(self, eipconfig=None, providerconfig=None,
socket_host=None, socket_port=None):
@@ -137,9 +148,9 @@ def _has_updown_scripts(path):
def _is_auth_agent_running():
- return bool(
+ return len(
commands.getoutput(
- 'ps aux | grep polkit-[g]nome-authentication-agent-1'))
+ 'ps aux | grep polkit-[g]nome-authentication-agent-1')) > 0
class LinuxVPNLauncher(VPNLauncher):
@@ -181,7 +192,7 @@ class LinuxVPNLauncher(VPNLauncher):
openvpn_possibilities = which(self.OPENVPN_BIN)
if len(openvpn_possibilities) == 0:
- raise VPNLauncherException("We couldn't find openvpn")
+ raise OpenVPNNotFoundException()
openvpn = openvpn_possibilities[0]
args = []
@@ -196,8 +207,10 @@ class LinuxVPNLauncher(VPNLauncher):
else:
logger.warning("No polkit auth agent found. pkexec " +
"will use its own auth agent.")
+ raise EIPNoPolkitAuthAgentAvailable()
else:
logger.warning("System has no pkexec")
+ raise EIPNoPkexecAvailable()
# TODO: handle verbosity