Log a message right before exiting gracefully
[privoxy.git] / debian / postinst
index ee710cf..a841de7 100644 (file)
@@ -23,15 +23,95 @@ set -e
 #     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)
-        if ! grep -q '^privoxy:' /etc/passwd
-        then
-            adduser --system --home /etc/privoxy --ingroup nogroup \
-                    --disabled-password privoxy >/dev/null
-        fi
-        chown -R privoxy.adm /var/log/privoxy /etc/privoxy
-        chmod 750 /var/log/privoxy /etc/privoxy
+        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)