/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-03-18 22:29:25 UTC
  • Revision ID: teddy@recompile.se-20190318222925-jvhek84dgcfgj6g3
mandos-ctl: Refactor tests

* mandos-ctl: Where the clients names "foo" and "barbar" do not refer
              to the actual mock clients in the TestCommand class,
              change all occurrences of these names to "client1" and
              "client2" (or just "client" when only one is used) .
              Also change all test doubles to use correct terminology;
              some things called mocks are actually stubs or spies,
              and rename all true mocks to have "mock" in their names.
              Also eliminate duplicate values in tests; derive values
              from previously defined values whenever possible.

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
        if ! dpkg-statoverride --list "/var/lib/mandos" >/dev/null \
 
54
             2>&1; then
 
55
            chown _mandos:_mandos /var/lib/mandos
 
56
            chmod u=rwx,go= /var/lib/mandos
 
57
        fi
 
58
 
 
59
        if dpkg --compare-versions "$2" eq "1.8.0-1" \
 
60
                || dpkg --compare-versions "$2" eq "1.8.0-1~bpo9+1"; then
 
61
            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
 
62
                sed --in-place \
 
63
                    --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' \
 
64
                    /etc/mandos/clients.conf
 
65
                invoke-rc.d mandos restart
 
66
                db_version 2.0
 
67
                db_fset mandos/removed_bad_key_ids seen false
 
68
                db_reset mandos/removed_bad_key_ids
 
69
                db_input critical mandos/removed_bad_key_ids || true
 
70
                db_go
 
71
                db_stop
 
72
            fi
 
73
        fi
 
74
 
 
75
        gnutls_version=$(dpkg-query --showformat='${Version}' \
 
76
                                    --show libgnutls30 \
 
77
                                    2>/dev/null || :)
 
78
        if [ -n "$gnutls_version" ] \
 
79
               && dpkg --compare-versions $gnutls_version ge 3.6.6; then
 
80
            db_version 2.0
 
81
            db_input critical mandos/key_id || true
 
82
            db_go
 
83
            db_stop
 
84
        fi
 
85
        ;;
 
86
    
 
87
    abort-upgrade|abort-deconfigure|abort-remove)
 
88
        ;;
 
89
    
 
90
    *)
 
91
        echo "$0 called with unknown argument '$1'" 1>&2
 
92
        exit 1
 
93
        ;;
 
94
esac
 
95
 
 
96
# Avahi version 0.6.31-2 and older provides "avahi" (instead of
 
97
# "avahi-daemon") in its /etc/init.d script header.  To make
 
98
# insserv(8) happy, we edit our /etc/init.d script header to contain
 
99
# the correct string before the code added by dh_installinit calls
 
100
# update.rc-d, which calls insserv.
 
101
avahi_version="`dpkg-query --showformat='${Version}' --show avahi-daemon`"
 
102
if dpkg --compare-versions "$avahi_version" le 0.6.31-2; then
 
103
    sed --in-place --expression='/^### BEGIN INIT INFO$/,/^### END INIT INFO$/s/^\(# Required-\(Stop\|Start\):.*avahi\)-daemon\>/\1/g' /etc/init.d/mandos
 
104
fi
 
105
 
 
106
#DEBHELPER#
 
107
 
 
108
exit 0