/mandos/release

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

« back to all changes in this revision

Viewing changes to debian/mandos-client.postinst

  • Committer: Björn Påhlsson
  • Date: 2008-07-20 02:52:20 UTC
  • Revision ID: belorn@braxen-20080720025220-r5u0388uy9iu23h6
Added following support:
Pluginbased client handler
rewritten Mandos client
       Avahi instead of udp server discovery
       openpgp encrypted key support
Passprompt stand alone application for direct console input
Added logging for Mandos server

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
 
set -e
19
 
 
20
 
# Update the initial RAM file system image
21
 
update_initramfs()
22
 
{
23
 
    update-initramfs -u -k all
24
 
    
25
 
    if dpkg --compare-versions "$2" lt-nl "1.0.10-1"; then
26
 
        # Make old initrd.img files unreadable too, in case they were
27
 
        # created with mandos-client 1.0.8 or older.
28
 
        find /boot -maxdepth 1 -type f -name "initrd.img-*.bak" \
29
 
            -print0 | xargs --null --no-run-if-empty chmod o-r
30
 
    fi
31
 
}
32
 
 
33
 
# Add user and group
34
 
add_mandos_user(){
35
 
    # Rename old "mandos" user and group
36
 
    if dpkg --compare-versions "$2" lt "1.0.3-1"; then
37
 
        case "`getent passwd mandos`" in
38
 
            *:Mandos\ password\ system,,,:/nonexistent:/bin/false)
39
 
                usermod --login _mandos mandos
40
 
                groupmod --new-name _mandos mandos
41
 
                return
42
 
                ;;
43
 
        esac
44
 
    fi
45
 
    # Create new user and group
46
 
    if ! getent passwd _mandos >/dev/null; then
47
 
        adduser --system --force-badname --quiet --home /nonexistent \
48
 
            --no-create-home --group --disabled-password \
49
 
            --gecos "Mandos password system" _mandos
50
 
    fi
51
 
}
52
 
 
53
 
# Create client key pair
54
 
create_key(){
55
 
    if [ -r /etc/keys/mandos/pubkey.txt \
56
 
        -a -r /etc/keys/mandos/seckey.txt ]; then
57
 
        return 0
58
 
    fi
59
 
    mandos-keygen
60
 
    gpg-connect-agent KILLAGENT /bye || :
61
 
}
62
 
 
63
 
create_dh_params(){
64
 
    if [ -r /etc/keys/mandos/dhparams.pem ]; then
65
 
        return 0
66
 
    fi
67
 
    # Create a Diffe-Hellman parameters file
68
 
    DHFILE="`mktemp -t mandos-client-dh-parameters.XXXXXXXXXX.pem`"
69
 
    # First try certtool from GnuTLS
70
 
    if ! certtool --generate-dh-params --sec-param high \
71
 
         --outfile "$DHFILE"; then
72
 
        # Otherwise try OpenSSL
73
 
        if ! openssl genpkey -genparam -algorithm DH -out "$DHFILE" \
74
 
             -pkeyopt dh_paramgen_prime_len:3072; then
75
 
            # None of the commands succeded; give up
76
 
            rm -- "$DHFILE"
77
 
            return 1
78
 
        fi
79
 
    fi
80
 
    sed --in-place --expression='0,/^-----BEGIN DH PARAMETERS-----$/d' \
81
 
        "$DHFILE"
82
 
    sed --in-place --expression='1i-----BEGIN DH PARAMETERS-----' \
83
 
            "$DHFILE"
84
 
    cp --archive "$DHFILE" /etc/keys/mandos/dhparams.pem
85
 
    rm -- "$DHFILE"
86
 
}
87
 
 
88
 
case "$1" in
89
 
    configure)
90
 
        add_mandos_user "$@"
91
 
        create_key "$@"
92
 
        create_dh_params "$@" || :
93
 
        update_initramfs "$@"
94
 
        if dpkg --compare-versions "$2" lt-nl "1.7.10-1"; then
95
 
            PLUGINHELPERDIR=/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null)/mandos/plugin-helpers
96
 
            if ! dpkg-statoverride --list "$PLUGINHELPERDIR" \
97
 
                 >/dev/null 2>&1; then
98
 
                chmod u=rwx,go= -- "$PLUGINHELPERDIR"
99
 
            fi
100
 
            if ! dpkg-statoverride --list /etc/mandos/plugin-helpers \
101
 
                 >/dev/null 2>&1; then
102
 
                chmod u=rwx,go= -- /etc/mandos/plugin-helpers
103
 
            fi
104
 
        fi
105
 
        ;;
106
 
    abort-upgrade|abort-deconfigure|abort-remove)
107
 
        ;;
108
 
 
109
 
    *)
110
 
        echo "$0 called with unknown argument '$1'" 1>&2
111
 
        exit 1
112
 
        ;;
113
 
esac
114
 
 
115
 
#DEBHELPER#
116
 
 
117
 
exit 0