summaryrefslogtreecommitdiff
path: root/src/leap/bitmask/core/service.py
diff options
context:
space:
mode:
authorKali Kaneko (leap communications) <kali@leap.se>2017-04-27 19:13:22 +0200
committerKali Kaneko (leap communications) <kali@leap.se>2017-05-01 16:13:13 +0200
commit5009f2c227ab55d70022f24f7f32299e26fd11ea (patch)
tree4a9f0de06387452c1e4f487dcc4d11044a5a76c7 /src/leap/bitmask/core/service.py
parentad9a4a2326fd6f596072981f21c64a6d984bd6cb (diff)
[feature] streamline and move manhole into core
Diffstat (limited to 'src/leap/bitmask/core/service.py')
-rw-r--r--src/leap/bitmask/core/service.py32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/leap/bitmask/core/service.py b/src/leap/bitmask/core/service.py
index 2972a51c..314c8899 100644
--- a/src/leap/bitmask/core/service.py
+++ b/src/leap/bitmask/core/service.py
@@ -20,18 +20,22 @@ Bitmask-core Service.
import json
import os
import uuid
+import tempfile
try:
import resource
except ImportError:
pass
+from twisted.conch import manhole_tap
from twisted.internet import reactor
+from twisted.internet.endpoints import TCP4ServerEndpoint
from twisted.logger import Logger
from leap.bitmask import __version__
from leap.bitmask.core import configurable
-from leap.bitmask.core import _zmq
+from leap.bitmask.core import manhole
from leap.bitmask.core import flags
+from leap.bitmask.core import _zmq
from leap.bitmask.core import _session
from leap.bitmask.core.web.service import HTTPDispatcherService
from leap.bitmask.vpn.service import VPNService
@@ -80,6 +84,15 @@ class BitmaskBackend(configurable.ConfigurableService):
def enabled(service):
return self.get_config('services', service, False, boolean=True)
+ def with_manhole():
+ user = self.get_config('manhole', 'user', None)
+ passwd = self.get_config('manhole', 'passwd', None)
+ port = self.get_config('manhole', 'port', None)
+ if user and passwd:
+ conf = {'user': user, 'passwd': passwd, 'port': port}
+ return conf
+ return None
+
on_start = reactor.callWhenRunning
on_start(self.init_events)
@@ -102,6 +115,10 @@ class BitmaskBackend(configurable.ConfigurableService):
if enabled('websockets'):
on_start(self._init_websockets)
+ manholecfg = with_manhole()
+ if manhole:
+ on_start(self._init_manhole, manholecfg)
+
def _touch_token_file(self):
path = os.path.join(self.basedir, 'authtoken')
with open(path, 'w') as f:
@@ -209,6 +226,19 @@ class BitmaskBackend(configurable.ConfigurableService):
service.setServiceParent(self)
return service
+ def _init_manhole(self, cfg):
+ try:
+ port = int(cfg.get('port'))
+ except ValueError:
+ port = manhole.PORT
+ user, passwd = cfg['user'], cfg['passwd']
+ sshFactory = manhole.getManholeFactory(
+ {'core': self}, user, passwd)
+ endpoint = TCP4ServerEndpoint(reactor, port)
+ endpoint.listen(sshFactory)
+
+ log.info('Started manhole in PORT {0!s}'.format(port))
+
def do_stats(self):
return self.core_commands.do_stats()