From 5a3fb4eb5a24e250a75dac4a2a39ce5632a175b6 Mon Sep 17 00:00:00 2001 From: "Kali Kaneko (leap communications)" Date: Tue, 6 Sep 2016 22:22:07 -0400 Subject: [feat] add webui command: enable/disable/status --- src/leap/bitmask/core/dispatcher.py | 59 +++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 5 deletions(-) (limited to 'src/leap/bitmask/core/dispatcher.py') diff --git a/src/leap/bitmask/core/dispatcher.py b/src/leap/bitmask/core/dispatcher.py index 0ea4e478..368a5bb6 100644 --- a/src/leap/bitmask/core/dispatcher.py +++ b/src/leap/bitmask/core/dispatcher.py @@ -39,9 +39,12 @@ class SubCommand(object): __metaclass__ = APICommand def dispatch(self, service, *parts, **kw): - subcmd = parts[1] + try: + subcmd = parts[1] + _method = getattr(self, 'do_' + subcmd.upper(), None) + except IndexError: + _method = None - _method = getattr(self, 'do_' + subcmd.upper(), None) if not _method: raise RuntimeError('No such subcommand') return defer.maybeDeferred(_method, service, *parts, **kw) @@ -155,6 +158,27 @@ class MailCmd(SubCommand): return d +class WebUICmd(SubCommand): + + label = 'web' + + @register_method('dict') + def do_ENABLE(self, service, *parts, **kw): + d = service.do_enable_service(self.label) + return d + + @register_method('dict') + def do_DISABLE(self, service, *parts, **kw): + d = service.do_disable_service(self.label) + return d + + @register_method('dict') + def do_STATUS(self, webui, *parts, **kw): + print 'webui', webui + d = webui.do_status() + return d + + class KeysCmd(SubCommand): label = 'keys' @@ -267,6 +291,7 @@ class CommandDispatcher(object): self.subcommand_mail = MailCmd() self.subcommand_keys = KeysCmd() self.subcommand_events = EventsCmd() + self.subcommand_webui = WebUICmd() # XXX -------------------------------------------- # TODO move general services to another subclass @@ -298,7 +323,7 @@ class CommandDispatcher(object): def do_EIP(self, *parts): eip = self._get_service(self.subcommand_eip.label) if not eip: - return _format_result('eip: disabled') + return _format_result({'eip': 'disabled'}) subcmd = parts[1] dispatch = self._subcommand_eip.dispatch @@ -322,16 +347,39 @@ class CommandDispatcher(object): kw = {'bonafide': bonafide} if not mail: - return _format_result('mail: disabled') + return _format_result({'mail': 'disabled'}) if subcmd == 'disable': d = dispatch(self.core) - else: + elif subcmd != 'enable': d = dispatch(mail, *parts, **kw) d.addCallbacks(_format_result, _format_error) return d + + def do_WEBUI(self, *parts): + subcmd = parts[1] + dispatch = self.subcommand_webui.dispatch + + if subcmd == 'enable': + d = dispatch(self.core, *parts) + + webui_label = 'web' + webui = self._get_service(webui_label) + kw = {} + + if not webui: + return _format_result({'webui': 'disabled'}) + if subcmd == 'disable': + d = dispatch(self.core, *parts) + elif subcmd != 'enable': + d = dispatch(webui, *parts, **kw) + + d.addCallbacks(_format_result, _format_error) + return d + + def do_KEYS(self, *parts): dispatch = self.subcommand_keys.dispatch @@ -353,6 +401,7 @@ class CommandDispatcher(object): d.addCallbacks(_format_result, _format_error) return d + def dispatch(self, msg): cmd = msg[0] -- cgit v1.2.3