#!/bin/sh
set -e

# Source debconf library.
. /usr/share/debconf/confmodule

# In Debian, this should be upgrade from 3-to-5, but the following code
# and the upgrade-4-to-5.lua file come from upstream. So I keep it like
# this for uniformity. Also, the issue relies on the lack of support on
# systemd sockets since 5.x.
# upgrade-4-to-5
export UPG_DIR=/var/lib/knot-resolver/.upgrade-4-to-5
if [ -f ${UPG_DIR}/.unfinished ] ; then
       rm -f ${UPG_DIR}/.unfinished
       kresd -c /usr/lib/@DEB_HOST_MULTIARCH@/knot-resolver/upgrade-4-to-5.lua >/dev/null 2>/dev/null
       db_input high knot-resolver/upgrade-buster-to-bullseye || true
       db_go || true
       cat ${UPG_DIR}/kresd.conf.net 2>/dev/null
fi

if [ "$1" = "configure" ]; then
    adduser --quiet --system --group --no-create-home --home /var/cache/knot-resolver knot-resolver
fi

# Restart any running kresd instances if the root key is updated.
# Note: if knot-resolver upstream watches this file and reloads it
# upon a change, we can and should remove this trigger.
if [ "$1" = "triggered" ]; then
    if [ "$2" = "/usr/share/dns/root.key" ]; then
        # systemctl of the sub-services is the preferred method to restart
        deb-systemd-invoke try-restart 'kresd@*.service' || true
        # but if we are running sysvinit, we can try to restart that process anyway
        # (kresd.service is masked on systems that use systemd)
        invoke-rc.d kresd try-restart || true
    fi
fi

if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then
    deb-systemd-invoke try-restart 'kresd@*.service' || true
    invoke-rc.d kresd try-restart || true
fi

#DEBHELPER#
