#!/bin/sh
set -e

# 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

. /usr/share/debconf/confmodule
trap "db_stop || true" EXIT HUP INT QUIT TERM

PACKAGE=landscape-common

# Use the default installed Python 3.  Running just "python3" might run
# something from /usr/local/bin, which doesn't necessarily support
# running the landscape client.
PYTHON=/usr/bin/python3

case "$1" in
    configure)

        #########################################
        # from landscape-base

        # Create landscape system user
        if ! getent passwd landscape >/dev/null; then
            adduser --quiet --system --group --disabled-password \
                --home /var/lib/landscape --no-create-home landscape
            touch /var/lib/landscape/.cleanup.user
        fi

        # Create landscape system group (for <= 1.0.29.1-0ubuntu0.9.04.0)
        if ! getent group landscape >/dev/null; then
            addgroup --quiet --system landscape
            touch /var/lib/landscape/.cleanup.group
        fi

        # Ensure primary group is landscape (for <= 1.0.29.1-0ubuntu0.9.04.0)
        if ! usermod -g landscape landscape > /dev/null 2>&1; then
          echo "ERROR: usermod -g landscape landscape failed."
        fi

        # Fix ownerships.
        chown -R root:landscape /etc/landscape
        chmod 0775 /etc/landscape/
        chown -R landscape:landscape /var/lib/landscape
        chown -R landscape:landscape /var/log/landscape

        #########################################
        # from landscape-client-base

        # 0.9.1 introduces non-backwards compatible changes.  This detects
        # whether or not the data is in the current format.  If not, all
        # existing data is removed.
        DATA_DIR=/var/lib/landscape

        if [ -d $DATA_DIR/data ]; then
            rm -rf $DATA_DIR/*
        elif [ -f $DATA_DIR/client/data.bpickle ]; then
            LAST_BYTE=`sed -n '$,$s/.*\(.\)/\1/p' $DATA_DIR/client/data.bpickle`
            if [ "$LAST_BYTE" = e ]; then
                rm -rf $DATA_DIR/*
            fi
        fi

        # Fix prior ownerships, we exclude the custom-graph-scripts directory
        # because there might script-generated files that we want to preserve
        # the ownership of.
        if [ -d /var/lib/landscape/client ]; then
            find /var/lib/landscape/client/ -wholename /var/lib/landscape/client/custom-graph-scripts -prune -or -exec chown landscape {} \; > /dev/null 2>&1
        fi
        chown -Rf landscape:root /etc/landscape/client.conf || true

        #########################################
        # from landscape-sysinfo

        db_get $PACKAGE/sysinfo
        # Choices:
        #  * Do not display sysinfo on login
        #  * Cache sysinfo in /etc/motd
        #  * Run sysinfo on every login
        SYSINFO="${RET:-Cache sysinfo in /etc/motd}"
        WRAPPER=/usr/share/landscape/landscape-sysinfo.wrapper
        PROFILE_LOCATION=/etc/profile.d/50-landscape-sysinfo.sh
        UPDATE_MOTD_LOCATION=/etc/update-motd.d/50-landscape-sysinfo
        if [ "$RET" = "Cache sysinfo in /etc/motd" ]; then
            rm -f $PROFILE_LOCATION 2>/dev/null || true
            ln -sf $WRAPPER $UPDATE_MOTD_LOCATION
            update-motd 2>/dev/null || true
        elif [ "$RET" = "Run sysinfo on every login" ]; then
            rm -f $UPDATE_MOTD_LOCATION 2>/dev/null || true
            update-motd 2>/dev/null || true
            ln -sf $WRAPPER $PROFILE_LOCATION
        else
            rm -f $UPDATE_MOTD_LOCATION 2>/dev/null || true
            update-motd 2>/dev/null || true
            rm -f $PROFILE_LOCATION || true
        fi

        # We rely on landscape-base to create the user and log dir.

    ;;

    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#

exit 0
