/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-client.postinst

  • Committer: Björn Påhlsson
  • Date: 2008-01-18 21:18:26 UTC
  • mto: This revision was merged to the branch mainline in revision 6.
  • Revision ID: belorn@legolas-20080118211826-5rbwo54l4bwim5x2
Client:
        [Working version in initrd for booting]
        Added #ifdef DEBUG statements through out the program
        Added support to keep bouth tcp and udp up at the same time
        Catching several more error return codes that was unchecked.
        Starts the Network interface during startup.
        Added support for entering password on console
        Added error handling, like looping until a password has been received.
        Added cleanup handling so console state is always restored
                
removed:
        Old server.cpp [see next version]
        Test certificates

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