diff options
-rw-r--r-- | src/leap/bitmask/vpn/launchers/linux.py | 16 | ||||
-rw-r--r-- | src/leap/bitmask/vpn/process.py | 19 |
2 files changed, 29 insertions, 6 deletions
diff --git a/src/leap/bitmask/vpn/launchers/linux.py b/src/leap/bitmask/vpn/launchers/linux.py index 53a915a7..48977835 100644 --- a/src/leap/bitmask/vpn/launchers/linux.py +++ b/src/leap/bitmask/vpn/launchers/linux.py @@ -165,21 +165,37 @@ class LinuxVPNLauncher(VPNLauncher): :return: A VPN command ready to be launched. :rtype: list """ + command = [] # we use `super` in order to send the class to use command = super(LinuxVPNLauncher, kls).get_vpn_command( vpnconfig, providerconfig, socket_host, socket_port, remotes, openvpn_verb) + print("command super %s" % command) + # XXX DEBUG local variable command referenced before assignment + # this was breaking the snap. re-do in a more robust way. + + command = ["pkexec", "/usr/local/sbin/bitmask-root", "openvpn", "start"] + command + + """ command.insert(0, force_eval(kls.BITMASK_ROOT)) command.insert(1, "openvpn") command.insert(2, "start") + """ + print("Inserted: %s" % command) + + """ if os.getuid() != 0: + print("OS UID != 0") policyChecker = LinuxPolicyChecker() + print("checker %s", policyChecker) pkexec = policyChecker.get_usable_pkexec() if pkexec: command.insert(0, first(pkexec)) + """ + print("Final: %s" % command) return command def terminate_or_kill(self, terminatefun, killfun, proc): diff --git a/src/leap/bitmask/vpn/process.py b/src/leap/bitmask/vpn/process.py index 27cb51ec..35ccf9f6 100644 --- a/src/leap/bitmask/vpn/process.py +++ b/src/leap/bitmask/vpn/process.py @@ -293,17 +293,24 @@ class _VPNProcess(protocol.ProcessProtocol): :rtype: list of str """ - command = self._launcher.get_vpn_command( - vpnconfig=self._vpnconfig, - providerconfig=self._providerconfig, - socket_host=self._host, - socket_port=self._port, - remotes=self._remotes) + print("GETTING COMMAND", self._launcher) + try: + command = self._launcher.get_vpn_command( + vpnconfig=self._vpnconfig, + providerconfig=self._providerconfig, + socket_host=self._host, + socket_port=self._port, + remotes=self._remotes) + print("Command: %s", command) + except Exception as exc: + print("ERROR: %r" % exc) encoding = sys.getfilesystemencoding() + print("encoding", encoding) for i, c in enumerate(command): if not isinstance(c, str): command[i] = c.encode(encoding) + print("command: %s", command) self.log.debug("Running VPN with command: ") self.log.debug("{0}".format(" ".join(command))) |