diff --git a/actions/xmpp b/actions/xmpp new file mode 100755 index 000000000..e7ea14743 --- /dev/null +++ b/actions/xmpp @@ -0,0 +1,63 @@ +#!/usr/bin/python3 +# -*- mode: python -*- +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +""" +Configuration helper for the ejabberd service +""" + +import argparse +import subprocess + + +def parse_arguments(): + """Return parsed command line arguments as dictionary""" + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') + + # Get whether ejabberd is installed + subparsers.add_parser('get-installed', + help='Get whether ejabberd is installed') + + return parser.parse_args() + + +def subcommand_get_installed(_): + """Get whether ejabberd is installed""" + print('installed' if get_installed() else 'not installed') + + +def get_installed(): + """Check if ejabberd is installed""" + with open('/dev/null', 'w') as file_handle: + status = subprocess.call(['which', 'ejabberdctl'], stdout=file_handle) + + return not status + + +def main(): + """Parse arguments and perform all duties""" + arguments = parse_arguments() + + subcommand = arguments.subcommand.replace('-', '_') + subcommand_method = globals()['subcommand_' + subcommand] + subcommand_method(arguments) + + +if __name__ == '__main__': + main() diff --git a/plinth/modules/xmpp/xmpp.py b/plinth/modules/xmpp/xmpp.py index 4ecd78da2..8f1f98cff 100644 --- a/plinth/modules/xmpp/xmpp.py +++ b/plinth/modules/xmpp/xmpp.py @@ -67,10 +67,23 @@ def init(): @login_required def index(request): """Serve XMPP page""" - main = "

XMPP Server Accounts and Configuration

" + is_installed = actions.superuser_run( + 'xmpp', + ['get-installed']).strip() == 'installed' - sidebar_right = render_to_string('menu_block.html', {'menu': SIDE_MENU}, - RequestContext(request)) + main = "

XMPP Server Accounts and Configuration

" + if not is_installed: + main += """ +

ejabberd is not installed, please install it. ejabberd comes pre-installed +with FreedomBox. On any Debian-based system (such as FreedomBox) you may install +it using the command 'aptitude install ejabberd'

+""" + + if is_installed: + sidebar_right = render_to_string('menu_block.html', {'menu': SIDE_MENU}, + RequestContext(request)) + else: + sidebar_right = None return TemplateResponse(request, 'base.html', {'title': _('XMPP Server'),