#!/bin/sh
set -e

KRILL_CONF="/etc/krill.conf"
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.
    date | md5sum | awk '{print $1}'
}

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
        krillc config simple \
            --data "${KRILL_DATA}" \
            --token "${ADMIN_TOKEN}" |
            sed -e "s|^\(### log_type.\+\)|\1\nlog_type = \"syslog\"|" \
                > "${KRILL_CONF}"
    fi
}

case "$1" in
configure)
    create_user
    create_first_time_configuration
    ;;
esac

#DEBHELPER#
