#!/bin/sh
# preinst script for nfd
#
# see: dh_installdeb(1)

set -e

# summary of how this script can be called:
#        * <new-preinst> `install'
#        * <new-preinst> `install' <old-version>
#        * <new-preinst> `upgrade' <old-version>
#        * <old-preinst> `abort-upgrade' <new-version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package


case "$1" in
    install|upgrade)
        # Now we have to ensure the following state:
        # /etc/passwd: ndns:x:YYY:ZZZ:NDNS User:/nonexistent:/bin/false
        # /etc/group:  ndns:x:ZZZ:
        #
        # Sadly there could any state be present on the system so we have to
        # modify everything carefully i.e. not doing a chown before creating
        # the user etc...

        # creating ndns group if he isn't already there
        if ! getent group ndns >/dev/null; then
                # Adding system group: ndns.
                addgroup --system ndns >/dev/null
        fi

        # creating ndns user if he isn't already there
        if ! getent passwd ndns >/dev/null; then
                # Adding system user: ndns.
                adduser \
                  --system \
                  --disabled-login \
                  --ingroup ndns \
                  --home /var/lib/ndns \
                  --gecos "NDNS User" \
                  --shell /bin/bash \
                  ndns  >/dev/null
        fi
    ;;

    abort-upgrade)
    ;;

    *)
        echo "preinst called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.

#DEBHELPER#

exit 0
