/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to debian/mandos.postinst

  • Committer: Teddy Hogeborn
  • Date: 2019-08-05 21:14:05 UTC
  • Revision ID: teddy@recompile.se-20190805211405-9m6hecekaihpttz9
Override lintian warnings about upgrading from old versions

There are some really things which are imperative that we fix in case
someone were to upgrade from a really old version.  We want to keep
these fixes in the postinst maintainer scripts, even though lintian
complains about such old upgrades not being supported by Debian in
general.  We prefer the code being there, for the sake of the users.

* debian/mandos-client.lintian-overrides
  (maintainer-script-supports-ancient-package-version): New.
  debian/mandos.lintian-overrides
  (maintainer-script-supports-ancient-package-version): - '' -

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
# This script can be called in the following ways:
 
3
#
 
4
# After the package was installed:
 
5
#       <postinst> configure <old-version>
 
6
#
 
7
#
 
8
# If prerm fails during upgrade or fails on failed upgrade:
 
9
#       <old-postinst> abort-upgrade <new-version>
 
10
#
 
11
# If prerm fails during deconfiguration of a package:
 
12
#       <postinst> abort-deconfigure in-favour <new-package> <version>
 
13
#                  removing <old-package> <version>
 
14
#
 
15
# If prerm fails during replacement due to conflict:
 
16
#       <postinst> abort-remove in-favour <new-package> <version>
 
17
 
 
18
. /usr/share/debconf/confmodule
 
19
 
 
20
set -e
 
21
 
 
22
case "$1" in
 
23
    configure)
 
24
        # Rename old "mandos" user and group
 
25
        if dpkg --compare-versions "$2" lt "1.0.3-1"; then
 
26
            case "`getent passwd mandos`" in
 
27
                *:Mandos\ password\ system,,,:/nonexistent:/bin/false)
 
28
                    usermod --login _mandos mandos
 
29
                    groupmod --new-name _mandos mandos
 
30
                    ;;
 
31
            esac
 
32
        fi
 
33
        # Create new user and group
 
34
        if ! getent passwd _mandos >/dev/null; then
 
35
            adduser --system --force-badname --quiet \
 
36
                --home /nonexistent --no-create-home --group \
 
37
                --disabled-password --gecos "Mandos password system" \
 
38
                _mandos
 
39
        elif dpkg --compare-versions "$2" eq 1.7.4-1 \
 
40
                || dpkg --compare-versions "$2" eq "1.7.4-1~bpo8+1"
 
41
        then
 
42
            start=no
 
43
            if ! [ -f /var/lib/mandos/clients.pickle ]; then
 
44
                invoke-rc.d mandos stop
 
45
                start=yes
 
46
            fi
 
47
            chown _mandos:_mandos /var/lib/mandos/clients.pickle \
 
48
                  2>/dev/null || :
 
49
            if [ "$start" = yes ]; then
 
50
                invoke-rc.d mandos start
 
51
            fi
 
52
        fi
 
53
        # Reload D-Bus daemon to be aware of the _mandos user & group
 
54
        if [ -x /etc/init.d/dbus ]; then
 
55
            invoke-rc.d dbus force-reload || :
 
56
        fi
 
57
        if ! dpkg-statoverride --list "/var/lib/mandos" >/dev/null \
 
58
             2>&1; then
 
59
            chown _mandos:_mandos /var/lib/mandos
 
60
            chmod u=rwx,go= /var/lib/mandos
 
61
        fi
 
62
 
 
63
        if dpkg --compare-versions "$2" eq "1.8.0-1" \
 
64
                || dpkg --compare-versions "$2" eq "1.8.0-1~bpo9+1"; then
 
65
            if grep --quiet --regexp='^[[:space:]]*key_id[[:space:]]*=[[:space:]]*[Ee]3[Bb]0[Cc]44298[Ff][Cc]1[Cc]149[Aa][Ff][Bb][Ff]4[Cc]8996[Ff][Bb]92427[Aa][Ee]41[Ee]4649[Bb]934[Cc][Aa]495991[Bb]7852[Bb]855[[:space:]]*$' /etc/mandos/clients.conf; then
 
66
                sed --in-place \
 
67
                    --expression='/^[[:space:]]*key_id[[:space:]]*=[[:space:]]*[Ee]3[Bb]0[Cc]44298[Ff][Cc]1[Cc]149[Aa][Ff][Bb][Ff]4[Cc]8996[Ff][Bb]92427[Aa][Ee]41[Ee]4649[Bb]934[Cc][Aa]495991[Bb]7852[Bb]855[[:space:]]*$/d' \
 
68
                    /etc/mandos/clients.conf
 
69
                invoke-rc.d mandos restart
 
70
                db_version 2.0
 
71
                db_fset mandos/removed_bad_key_ids seen false
 
72
                db_reset mandos/removed_bad_key_ids
 
73
                db_input critical mandos/removed_bad_key_ids || true
 
74
                db_go
 
75
                db_stop
 
76
            fi
 
77
        fi
 
78
 
 
79
        gnutls_version=$(dpkg-query --showformat='${Version}' \
 
80
                                    --show libgnutls30 \
 
81
                                    2>/dev/null || :)
 
82
        if [ -n "$gnutls_version" ] \
 
83
               && dpkg --compare-versions $gnutls_version ge 3.6.6; then
 
84
            db_version 2.0
 
85
            db_input critical mandos/key_id || true
 
86
            db_go
 
87
            db_stop
 
88
        fi
 
89
        ;;
 
90
    
 
91
    abort-upgrade|abort-deconfigure|abort-remove)
 
92
        ;;
 
93
    
 
94
    *)
 
95
        echo "$0 called with unknown argument '$1'" 1>&2
 
96
        exit 1
 
97
        ;;
 
98
esac
 
99
 
 
100
# Avahi version 0.6.31-2 and older provides "avahi" (instead of
 
101
# "avahi-daemon") in its /etc/init.d script header.  To make
 
102
# insserv(8) happy, we edit our /etc/init.d script header to contain
 
103
# the correct string before the code added by dh_installinit calls
 
104
# update.rc-d, which calls insserv.
 
105
avahi_version="`dpkg-query --showformat='${Version}' --show avahi-daemon`"
 
106
if dpkg --compare-versions "$avahi_version" le 0.6.31-2; then
 
107
    sed --in-place --expression='/^### BEGIN INIT INFO$/,/^### END INIT INFO$/s/^\(# Required-\(Stop\|Start\):.*avahi\)-daemon\>/\1/g' /etc/init.d/mandos
 
108
fi
 
109
 
 
110
#DEBHELPER#
 
111
 
 
112
exit 0