#!/bin/sh
# see: dh_installdeb(1)

set -e

# Do debconf stuff here
. /usr/share/debconf/confmodule

# summary of how this script can be called:
#        * <postinst> `configure' <most-recently-configured-version>
#        * <old-postinst> `abort-upgrade' <new version>
#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
#          <new-version>
#        * <postinst> `abort-remove'
#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
#          <failed-install-package> <version> `removing'
#          <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package


# ensure the right permissions for the logdir (#757438)
if [ -d /var/log/unattended-upgrades ]; then
  chown root:adm /var/log/unattended-upgrades || true
  chmod 0750 /var/log/unattended-upgrades
fi

case "$1" in
    configure)
	# *sigh* typo in filename in version 0.51ubuntu1
	if [ -e /etc/pm/sleep.d/10_unatteded-upgrades-hibernate ]; then
	    rm -f /etc/pm/sleep.d/10_unatteded-upgrades-hibernate
	fi

        db_get unattended-upgrades/enable_auto_updates || true
	CONFIG="/etc/apt/apt.conf.d/20auto-upgrades"
        if [ "${RET}" = "true" ]; then
	    NEWFILE="/usr/share/unattended-upgrades/20auto-upgrades"
	    ucf --three-way --debconf-ok "$NEWFILE" "$CONFIG"
	    ucfr unattended-upgrades "$CONFIG"
        elif [ "${RET}" = "false" ] && [ -e "$CONFIG" ]; then
            # disable again
	    NEWFILE="/usr/share/unattended-upgrades/20auto-upgrades-disabled"
	    ucf --three-way --debconf-ok "$NEWFILE" "$CONFIG"
	    ucfr unattended-upgrades "$CONFIG"
        fi

	CONFIG="/etc/apt/apt.conf.d/50unattended-upgrades"
	NEWFILE="$CONFIG.ucftmp"
	TEMPLATE="/usr/share/unattended-upgrades/50unattended-upgrades"
	cp -a -f "$TEMPLATE" "$NEWFILE"
	db_get unattended-upgrades/origins_pattern || true
	sed -i 's/"origin=Debian,codename=${distro_codename},label=Debian-Security";/'"${RET}"'/' "$NEWFILE"
	ucf --three-way --debconf-ok "$NEWFILE" "$CONFIG"
	ucfr unattended-upgrades "$CONFIG"
	rm -f "$NEWFILE"

        # Recover from incorrect init.d script header in versions < 0.64
        if dpkg --compare-versions "$2" lt "0.64" \
            && [ -f /etc/rc0.d/S[0-9][0-9]unattended-upgrades ] \
            && [ -f /etc/rc6.d/S[0-9][0-9]unattended-upgrades ] ; then
            update-rc.d -f unattended-upgrades remove
        fi
        # Recover from broken dh_installinit override in versions < 0.93.1+nmu1
        if dpkg --compare-versions "$2" lt "0.93.1+nmu1"; then
            if [ -f /etc/rc0.d/K[0-9][0-9]unattended-upgrades ] \
            && [ -f /etc/rc6.d/K[0-9][0-9]unattended-upgrades ] ; then
            	update-rc.d -f unattended-upgrades remove
	    fi
	    # If running systemd, explicitely disable the service otherwise
	    # the shutdown.target symlink will remain (See Debian Bug #797108)
	    if [ -d /run/systemd/system ]; then
	        if deb-systemd-helper --quiet was-enabled unattended-upgrades.service; then
	            deb-systemd-helper disable unattended-upgrades.service >/dev/null || true
	        fi
	    fi
	fi
    ;;

    abort-upgrade|abort-remove|abort-deconfigure)
    ;;

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

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

#DEBHELPER#

# Explicitly enable and start the service. Debian Bug #797108 for 
# deb-systemd-helper fails to correctly enable the unit. It checks for 
# enablement using the content of the WantedBy= which has changed so it
# sees the service as disable and will not enable it.
case "$1" in
    configure)
        if dpkg --compare-versions "$2" lt "0.93.1+nmu1" \
	&& [ -d /run/systemd/system ]; then
                # workaround systemd bug with enable --now which
                # fails to start the unit
		systemctl enable unattended-upgrades || true
		systemctl start unattended-upgrades || true
	fi
    ;;
esac
exit 0


