summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changes/bug-update-requirements1
-rw-r--r--changes/bug_improve_openvpn_detection3
-rw-r--r--pkg/requirements.pip2
-rw-r--r--src/leap/bitmask/services/eip/vpnlaunchers.py13
-rw-r--r--src/leap/bitmask/services/eip/vpnprocess.py5
5 files changed, 22 insertions, 2 deletions
diff --git a/changes/bug-update-requirements b/changes/bug-update-requirements
new file mode 100644
index 00000000..e86e6e84
--- /dev/null
+++ b/changes/bug-update-requirements
@@ -0,0 +1 @@
+ o Update leap.common minimum version needed.
diff --git a/changes/bug_improve_openvpn_detection b/changes/bug_improve_openvpn_detection
new file mode 100644
index 00000000..99f43a07
--- /dev/null
+++ b/changes/bug_improve_openvpn_detection
@@ -0,0 +1,3 @@
+ o Improve OpenVPN detection by searching for a specific leap-only
+ string in the command line. This makes it possible to run other
+ VPN instances while also using EIP. Fixes #3268 and #3364. \ No newline at end of file
diff --git a/pkg/requirements.pip b/pkg/requirements.pip
index 042633a0..f533e521 100644
--- a/pkg/requirements.pip
+++ b/pkg/requirements.pip
@@ -17,7 +17,7 @@ twisted
qt4reactor
python-gnupg
-leap.common>=0.2.5
+leap.common>=0.3.0
leap.soledad>=0.1.0
leap.keymanager>=0.2.0
diff --git a/src/leap/bitmask/services/eip/vpnlaunchers.py b/src/leap/bitmask/services/eip/vpnlaunchers.py
index 8a127ce9..31a1c17b 100644
--- a/src/leap/bitmask/services/eip/vpnlaunchers.py
+++ b/src/leap/bitmask/services/eip/vpnlaunchers.py
@@ -402,6 +402,10 @@ class LinuxVPNLauncher(VPNLauncher):
openvpn = first(openvpn_possibilities)
args = []
+ args += [
+ '--setenv', "LEAPOPENVPN", "1"
+ ]
+
pkexec = self.maybe_pkexec()
if pkexec:
args.append(openvpn)
@@ -658,6 +662,10 @@ class DarwinVPNLauncher(VPNLauncher):
openvpn = first(openvpn_possibilities)
args = [openvpn]
+ args += [
+ '--setenv', "LEAPOPENVPN", "1"
+ ]
+
if openvpn_verb is not None:
args += ['--verb', '%d' % (openvpn_verb,)]
@@ -825,6 +833,11 @@ class WindowsVPNLauncher(VPNLauncher):
openvpn = first(openvpn_possibilities)
args = []
+
+ args += [
+ '--setenv', "LEAPOPENVPN", "1"
+ ]
+
if openvpn_verb is not None:
args += ['--verb', '%d' % (openvpn_verb,)]
diff --git a/src/leap/bitmask/services/eip/vpnprocess.py b/src/leap/bitmask/services/eip/vpnprocess.py
index 95ea2334..a896b60c 100644
--- a/src/leap/bitmask/services/eip/vpnprocess.py
+++ b/src/leap/bitmask/services/eip/vpnprocess.py
@@ -229,6 +229,9 @@ class VPNManager(object):
"""
# Timers, in secs
+ # NOTE: We need to set a bigger poll time in OSX because it seems
+ # openvpn malfunctions when you ask it a lot of things in a short
+ # amount of time.
POLL_TIME = 2.5 if IS_MAC else 1.0
CONNECTION_RETRY_TIME = 1
@@ -579,7 +582,7 @@ class VPNManager(object):
# we need to be able to filter out arguments in the form
# --openvpn-foo, since otherwise we are shooting ourselves
# in the feet.
- if any(map(lambda s: s.startswith("openvpn"), p.cmdline)):
+ if any(map(lambda s: s.find("LEAPOPENVPN") != -1, p.cmdline)):
openvpn_process = p
break
except psutil.error.AccessDenied: