mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-01-28 08:03:36 +00:00
- Since we are trusting the remote user header, it is much safer not listen on external addresses. We don't that since Apache connects on internal address.
107 lines
3.2 KiB
Python
Executable File
107 lines
3.2 KiB
Python
Executable File
#!/usr/bin/python3
|
|
#
|
|
# 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 <http://www.gnu.org/licenses/>.
|
|
#
|
|
|
|
"""
|
|
Configuration helper for Radicale.
|
|
"""
|
|
|
|
import argparse
|
|
import augeas
|
|
import subprocess
|
|
|
|
from plinth import action_utils
|
|
|
|
CONFIG_FILE = '/etc/radicale/config'
|
|
DEFAULT_FILE = '/etc/default/radicale'
|
|
|
|
|
|
def parse_arguments():
|
|
"""Return parsed command line arguments as dictionary."""
|
|
parser = argparse.ArgumentParser()
|
|
subparsers = parser.add_subparsers(dest='subcommand', help='Sub command')
|
|
|
|
subparsers.add_parser('setup', help='Setup Radicale configuration')
|
|
subparsers.add_parser('enable', help='Enable Radicale service')
|
|
subparsers.add_parser('disable', help='Disable Radicale service')
|
|
|
|
return parser.parse_args()
|
|
|
|
|
|
def subcommand_setup(_):
|
|
"""Setup Radicale configuration."""
|
|
aug = load_augeas()
|
|
|
|
aug.set('/files' + DEFAULT_FILE + '/ENABLE_RADICALE', 'yes')
|
|
|
|
aug.set('/files' + CONFIG_FILE + '/server/hosts',
|
|
'127.0.0.1:5232, [::1]:5232')
|
|
aug.set('/files' + CONFIG_FILE + '/server/base_prefix', '/radicale/')
|
|
aug.set('/files' + CONFIG_FILE + '/well-known/caldav',
|
|
'/radicale/%(user)s/caldav/')
|
|
aug.set('/files' + CONFIG_FILE + '/well-known/carddav',
|
|
'/radicale/%(user)s/carddav/')
|
|
aug.set('/files' + CONFIG_FILE + '/auth/type', 'remote_user')
|
|
aug.set('/files' + CONFIG_FILE + '/rights/type', 'owner_only')
|
|
|
|
aug.save()
|
|
|
|
action_utils.service_restart('radicale')
|
|
action_utils.webserver_enable('radicale-plinth')
|
|
|
|
|
|
def subcommand_enable(_):
|
|
"""Start service."""
|
|
action_utils.service_enable('radicale')
|
|
action_utils.webserver_enable('radicale-plinth')
|
|
|
|
|
|
def subcommand_disable(_):
|
|
"""Stop service."""
|
|
action_utils.webserver_disable('radicale-plinth')
|
|
action_utils.service_disable('radicale')
|
|
|
|
|
|
def load_augeas():
|
|
"""Initialize Augeas."""
|
|
aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD +
|
|
augeas.Augeas.NO_MODL_AUTOLOAD)
|
|
|
|
# shell-script config file lens
|
|
aug.set('/augeas/load/Shellvars/lens', 'Shellvars.lns')
|
|
aug.set('/augeas/load/Shellvars/incl[last() + 1]', DEFAULT_FILE)
|
|
|
|
# INI file lens
|
|
aug.set('/augeas/load/Puppet/lens', 'Puppet.lns')
|
|
aug.set('/augeas/load/Puppet/incl[last() + 1]', CONFIG_FILE)
|
|
|
|
aug.load()
|
|
return aug
|
|
|
|
|
|
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()
|