diff options
| author | antialias <antialias@leap.se> | 2012-10-01 16:58:39 -0400 | 
|---|---|---|
| committer | antialias <antialias@leap.se> | 2012-10-01 16:58:39 -0400 | 
| commit | d0540e808749ff9f9e90ec5e055168f5f408e51b (patch) | |
| tree | 64d9d7009b7b6150205d6390e8a6eaffd79398c8 | |
| parent | bee0813fd3d99be1bf85f55fd63bc0c603d0104e (diff) | |
Now throws a CriticalError when an pre-exisiting openvpn istance is found.
| -rw-r--r-- | pkg/requirements.pip | 1 | ||||
| -rw-r--r-- | src/leap/eip/exceptions.py | 7 | ||||
| -rw-r--r-- | src/leap/eip/openvpnconnection.py | 15 | 
3 files changed, 22 insertions, 1 deletions
| diff --git a/pkg/requirements.pip b/pkg/requirements.pip index 5eeabf5c..a958d53f 100644 --- a/pkg/requirements.pip +++ b/pkg/requirements.pip @@ -2,5 +2,6 @@ argparse  configuration  requests  ping +psutil  netifaces  python-gnutls==1.1.9  # see https://bugs.launchpad.net/ubuntu/+source/python-gnutls/+bug/1027129 diff --git a/src/leap/eip/exceptions.py b/src/leap/eip/exceptions.py index f048621f..bb375cf0 100644 --- a/src/leap/eip/exceptions.py +++ b/src/leap/eip/exceptions.py @@ -93,6 +93,13 @@ class LeapBadConfigFetchedError(Warning):      message = "provider sent a malformed json file"      usermessage = "an error occurred during configuratio of leap services" + +class OpenVPNAlreadyRunning(EIPClientError): +    message = "Another OpenVPN Process is already running." +    usermessage = ("Another OpenVPN Process has been detect it." +                   "Please close it before starting LEAP") + +  #  # errors still needing some love  # diff --git a/src/leap/eip/openvpnconnection.py b/src/leap/eip/openvpnconnection.py index f4d1c449..a835ead9 100644 --- a/src/leap/eip/openvpnconnection.py +++ b/src/leap/eip/openvpnconnection.py @@ -3,6 +3,7 @@ OpenVPN Connection  """  from __future__ import (print_function)  import logging +import psutil  import socket  import time  from functools import partial @@ -87,6 +88,7 @@ to be triggered for each one of them.      def run_openvpn_checks(self):          logger.debug('running openvpn checks') +        self._check_if_running_instance()          self._set_ovpn_command()          self._check_vpn_keys() @@ -156,9 +158,20 @@ to be triggered for each one of them.              raise eip_exceptions.EIPNoCommandError          if self.subp is not None:              logger.debug('cowardly refusing to launch subprocess again') -            return +          self._launch_openvpn() +    def _check_if_running_instance(self): +        """ +        check if openvpn is already running +        """ +        for process in psutil.get_process_list(): +            if process.name == "openvpn": +                logger.debug('an openvpn instance is already running.') +                raise eip_exceptions.OpenVPNAlreadyRunning + +        logger.debug('no openvpn instance found.') +      def cleanup(self):          """          terminates child subprocess | 
