summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/leap/bitmask/vpn/process.py1
-rw-r--r--src/leap/bitmask/vpn/service.py24
-rw-r--r--src/leap/bitmask/vpn/tunnel.py (renamed from src/leap/bitmask/vpn/manager.py)19
-rw-r--r--src/leap/bitmask/vpn/tunnelmanager.py (renamed from src/leap/bitmask/vpn/vpn.py)20
4 files changed, 41 insertions, 23 deletions
diff --git a/src/leap/bitmask/vpn/process.py b/src/leap/bitmask/vpn/process.py
index 9b235260..3de652ff 100644
--- a/src/leap/bitmask/vpn/process.py
+++ b/src/leap/bitmask/vpn/process.py
@@ -138,7 +138,6 @@ class _VPNProcess(protocol.ProcessProtocol, _management.VPNManagement):
if 'SIGTERM[soft,ping-restart]' in line:
self.restarting = True
self.log.info(line)
- # self._status.watch(line)
def processExited(self, failure):
"""
diff --git a/src/leap/bitmask/vpn/service.py b/src/leap/bitmask/vpn/service.py
index a792d1e6..fc39bcc8 100644
--- a/src/leap/bitmask/vpn/service.py
+++ b/src/leap/bitmask/vpn/service.py
@@ -26,7 +26,7 @@ from time import strftime
from twisted.internet import defer
from leap.bitmask.hooks import HookableService
-from leap.bitmask.vpn.vpn import VPNManager
+from leap.bitmask.vpn.tunnelmanager import TunnelManager
from leap.bitmask.vpn._checks import is_service_ready, get_vpn_cert_path
from leap.bitmask.vpn import privilege, helpers
from leap.bitmask.vpn.privilege import NoPolkitAuthAgentAvailable
@@ -53,7 +53,7 @@ class VPNService(HookableService):
super(VPNService, self).__init__()
self._started = False
- self._vpn = None
+ self._tunnelmanager = None
self._domain = ''
if basepath is None:
@@ -87,7 +87,7 @@ class VPNService(HookableService):
yield self._setup(domain)
try:
- started = self._vpn.start()
+ started = self._tunnelmanager.start()
# XXX capture it inside start method
# here I'd like to get (status, message)
@@ -108,15 +108,15 @@ class VPNService(HookableService):
# TODO -----------------------------
# when shutting down the main bitmaskd daemon, this should be called.
- if not self._vpn:
+ if not self._tunnelmanager:
raise Exception('VPN was not running')
if self._started:
- self._vpn.stop()
+ self._tunnelmanager.stop()
self._started = False
return {'result': 'vpn stopped'}
- elif self._vpn.is_firewall_up():
- self._vpn.stop_firewall()
+ elif self._tunnelmanager.is_firewall_up():
+ self._tunnelmanager.stop_firewall()
return {'result': 'firewall stopped'}
else:
raise Exception('VPN was not running')
@@ -128,8 +128,8 @@ class VPNService(HookableService):
'childrenStatus': {}
}
- if self._vpn:
- status = self._vpn.get_status()
+ if self._tunnelmanager:
+ status = self._tunnelmanager.get_status()
if self._domain:
status['domain'] = self._domain
@@ -179,7 +179,7 @@ class VPNService(HookableService):
@defer.inlineCallbacks
def _setup(self, provider):
- """Set up VPNManager for a specified provider.
+ """Set up TunnelManager for a specified provider.
:param provider: the provider to use, e.g. 'demo.bitmask.net'
:type provider: str"""
@@ -203,8 +203,8 @@ class VPNService(HookableService):
'Cannot find provider certificate. '
'Please configure provider.')
- self._vpn = VPNManager(provider, remotes, cert_path, key_path, ca_path,
- extra_flags)
+ self._tunnelmanager = TunnelManager(
+ provider, remotes, cert_path, key_path, ca_path, extra_flags)
def _cert_expires(self, provider):
path = os.path.join(self._basepath, "leap", "providers", provider,
diff --git a/src/leap/bitmask/vpn/manager.py b/src/leap/bitmask/vpn/tunnel.py
index 2b113a75..4236edf5 100644
--- a/src/leap/bitmask/vpn/manager.py
+++ b/src/leap/bitmask/vpn/tunnel.py
@@ -16,7 +16,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
-VPN Manager
+VPN Tunnel.
"""
import os
@@ -27,10 +27,20 @@ from ._config import _TempVPNConfig, _TempProviderConfig
from .constants import IS_WIN
-# TODO this is very badly named. There is another class that is called manager.
-# TODO Call it Tunnel? Tunnel = vpn + firewall
+# TODO refactor - this class is still a very light proxy around the
+# underlying VPNControl. The main methods here are start/stop, so this
+# looks like it could better use the Service interface.
+# TODO gateway selection should be done in this class.
+# TODO DO NOT pass VPNConfig/ProviderConfig beyond this class.
+# TODO split sync/async vpn control mechanisms.
-class TunnelManager(object):
+
+class VPNTunnel(object):
+
+ """
+ A VPN Tunnel holds the configuration for a VPN connection, and allows to
+ control that connection.
+ """
def __init__(self, provider, remotes, cert_path, key_path, ca_path,
extra_flags):
@@ -52,6 +62,7 @@ class TunnelManager(object):
self._providerconfig = _TempProviderConfig(provider, ca_path)
host, port = self._get_management_location()
+
self._vpn = VPNControl(remotes=remotes,
vpnconfig=self._vpnconfig,
providerconfig=self._providerconfig,
diff --git a/src/leap/bitmask/vpn/vpn.py b/src/leap/bitmask/vpn/tunnelmanager.py
index 23f0a582..5faac662 100644
--- a/src/leap/bitmask/vpn/vpn.py
+++ b/src/leap/bitmask/vpn/tunnelmanager.py
@@ -19,15 +19,23 @@
from colorama import Fore
from leap.bitmask.util import merge_status
-from leap.bitmask.vpn.manager import TunnelManager
+
from leap.bitmask.vpn.fw.firewall import FirewallManager
+from leap.bitmask.vpn.tunnel import VPNTunnel
+
+
+# TODO further refactor pending: merge with VPNService?
+
+class TunnelManager(object):
-class VPNManager(object):
+ """
+ A TunnelManager controls VPN and Firewall
+ """
def __init__(self, provider, remotes, cert, key, ca, flags):
- self._vpn = TunnelManager(
+ self._vpntunnel = VPNTunnel(
provider, remotes, cert, key, ca, flags)
self._firewall = FirewallManager(remotes)
self.starting = False
@@ -45,7 +53,7 @@ class VPNManager(object):
print(Fore.GREEN + "Firewall: started" + Fore.RESET)
try:
- vpn_ok = self._vpn.start()
+ vpn_ok = self._vpntunnel.start()
except Exception:
self.starting = False
return False
@@ -71,7 +79,7 @@ class VPNManager(object):
print(Fore.GREEN + "Firewall: stopped." + Fore.RESET)
print(Fore.BLUE + "VPN: stopping..." + Fore.RESET)
- vpn_ok = self._vpn.stop()
+ vpn_ok = self._vpntunnel.stop()
if not vpn_ok:
print (Fore.RED + "VPN: Error stopping." + Fore.RESET)
return False
@@ -87,7 +95,7 @@ class VPNManager(object):
def get_status(self):
childrenStatus = {
- "vpn": self._vpn.status,
+ "vpn": self._vpntunnel.status,
"firewall": self._firewall.status
}
if self.starting: