diff options
| author | Tomás Touceda <chiiph@leap.se> | 2013-03-13 14:02:13 -0300 | 
|---|---|---|
| committer | Tomás Touceda <chiiph@leap.se> | 2013-03-13 14:02:13 -0300 | 
| commit | ef43dff37c6db915757184ad51bc017d45e70c98 (patch) | |
| tree | a07b0a4d18efe2962a54132cbe134a3c73d059f9 | |
| parent | 4359515dafe572398262ce91bf88d4f122042981 (diff) | |
Notify the user of pkexec/polkit/openvpn checks
| -rw-r--r-- | src/leap/gui/mainwindow.py | 22 | ||||
| -rw-r--r-- | src/leap/gui/ui/mainwindow.ui | 3 | ||||
| -rw-r--r-- | src/leap/services/eip/vpnlaunchers.py | 21 | 
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 | 
