#!/bin/sh set -e KRILL_CONF="/etc/krill.conf" KRILL_CONF_PERMS=640 KRILL_HOME="/var/lib/krill/" KRILL_DATA="${KRILL_HOME}data/" KRILL_USER="krill" create_user() { if id ${KRILL_USER} > /dev/null 2>&1; then return; fi adduser --system --home "${KRILL_HOME}" --group ${KRILL_USER} } generate_password() { # Tries not to depend on too many other commmands # being installed. cat /dev/random | tr -dc A-Za-z0-9 | head -c 32 } create_first_time_configuration() { if [ ! -f "${KRILL_CONF}" ]; then # generate a token for authenticating with Krill ADMIN_TOKEN="$(generate_password)" # generate a config file using our preferred filesystem locations # and generated admin token # note: we don't configure Krill to store its PID file under /var/run/ # because that requires root privileges potentially at least once per # boot, and Krill doesn't drop privileges yet so when run as a non-root # user has no right to create the file or missing /var/run/subdir. # See: https://stackoverflow.com/a/28312577 printf "%s\n" \ "log_type = \"syslog\"" \ "storage_uri = \"${KRILL_DATA}\"" \ "admin_token = \"${ADMIN_TOKEN}\"" > "${KRILL_CONF}" # Ensure that the config file has the correct ownership chown ${KRILL_USER}:${KRILL_USER} ${KRILL_CONF} # Ensure that the config file has the correct permissions chmod ${KRILL_CONF_PERMS} ${KRILL_CONF} fi } case "$1" in configure) create_user create_first_time_configuration ;; esac #DEBHELPER#