#! /bin/sh
# postinst script for privoxy
#
# see: dh_installdeb(1)

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>
#        * <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
#
# quoting from the policy:
#     Any necessary prompting should almost always be confined to the
#     post-installation script, and should be protected with a conditional
#     so that unnecessary prompting doesn't happen if a package's
#     installation fails and the `postinst' is called with `abort-upgrade',
#     `abort-remove' or `abort-deconfigure'.

CONFDIR=/etc/privoxy
CONFIG=$CONFDIR/config
EXAMPLE_CONFIG=/usr/share/privoxy/config

. /usr/share/debconf/confmodule

case "$1" in
    configure)
        adduser --quiet --system --home $CONFDIR --no-create-home \
	    --ingroup nogroup --disabled-password privoxy
        chown privoxy:adm /var/log/privoxy
	[ -f /var/log/privoxy/logfile ] \
	    && chown privoxy:adm /var/log/privoxy/logfile
        chmod 750 /var/log/privoxy
	chown privoxy $CONFDIR/user.action $CONFDIR/trust
	[ -f $CONFDIR/match-all.action ] \
	    && chown privoxy $CONFDIR/match-all.action
	chown privoxy:adm /var/lib/privoxy/certs
	chmod 700 /var/lib/privoxy/certs

	db_get privoxy/listen-address || true
	perl -le '
                $done = 0;
                while (<STDIN>) {
                    chomp;
                    if ($_ =~ m/^\s*listen-address\s+.*/) {
                        if (!$done) {
                            foreach (@ARGV) {
                                print "listen-address  $_";
                            }
                        }
                        $done = 1;
                    } else {
                        print;
                    }
                }' \
	     $RET \
	     < $EXAMPLE_CONFIG > $CONFIG.ucftmp
	ucf --three-way --debconf-ok $CONFIG.ucftmp $CONFIG
	ucfr privoxy $CONFIG
	rm -f $CONFIG.ucftmp
	db_stop

	if [ "x$2" != "x" ] && dpkg --compare-versions "$2" lt "3.0.4"
	then
	    # Upgrading from a 3.0.3* version
	    chown root $CONFDIR/default.action
	fi

	if [ "x$2" != "x" ] && dpkg --compare-versions "$2" lt "3.0.7" \
	    && grep -q '^actionsfile [a-z]*[[:space:]]*#.*$' $CONFIG
	then
	    # Upgrading from version before 3.0.7 where the user kept his old 
	    # (modified) config file:
	    # Try to change   "actionsfile foo"  to  "actionsfile foo.action"
	    # as needed in 3.0.7:
	    sed 's/^actionsfile \([a-z]*\)\([ 	]*\#\)/actionsfile \1.action\2/' \
		-i.bak $CONFIG
	fi

	if [ "x$2" != "x" ] && dpkg --compare-versions "$2" lt "3.0.11"
	then
	    # Upgrading from a version before 3.0.11
	    # Try to work around problems with missing action files
	    if grep -q '^actionsfile.*global.action' $CONFIG
	    then
		if [ -e $CONFDIR/global.action ]
		then
		    mv $CONFDIR/global.action $CONFDIR/global.action.dpkg-old
		fi
		(cd $CONFDIR; ln -s match-all.action global.action)
	    fi
	    if grep -q '^actionsfile.*standard.action' $CONFIG
	    then
		if [ -e $CONFDIR/standard.action ]
		then
		    if ! grep -q migration $CONFDIR/standard.action
		    then
			mv $CONFDIR/standard.action \
			    $CONFDIR/standard.action.dpkg-old
			echo "# migration file. Not used in 3.0.11 and newer" \
			    > $CONFDIR/standard.action
		    fi
		else
		    echo "# migration file. Not used in 3.0.11 and newer" \
			> $CONFDIR/standard.action
		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#

exit 0


