FreedomBox/actions/syncthing
Sunil Mohan Adapa eada506b23
actions/*: Use SPDX license identifier
Reviewed-by: Veiko Aasa <veiko17@disroot.org>
2020-02-19 14:39:36 +02:00

62 lines
1.6 KiB
Python
Executable File

#!/usr/bin/python3
# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Configuration helper for Syncthing.
"""
import argparse
import grp
import os
import pwd
import shutil
import subprocess
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 Syncthing')
subparsers.required = True
return parser.parse_args()
def subcommand_setup(_):
"""Actions to be performed before installing Syncthing"""
data_dir = '/var/lib/syncthing'
# Create syncthing group if needed.
try:
grp.getgrnam('syncthing')
except KeyError:
subprocess.run(['addgroup', '--system', 'syncthing'], check=True)
# Create syncthing user is needed.
try:
pwd.getpwnam('syncthing')
except KeyError:
subprocess.run([
'adduser', '--system', '--ingroup', 'syncthing', '--home',
'/var/lib/syncthing', '--gecos',
'Syncthing file synchronization server', 'syncthing'
], check=True)
if not os.path.exists(data_dir):
os.makedirs(data_dir, mode=0o750)
shutil.chown(data_dir, user='syncthing', group='syncthing')
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()