/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: Teddy Hogeborn
  • Date: 2008-08-02 10:48:24 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080802104824-fx0miwp9o4g9r31e
* plugbasedclient.c (struct process): New fields "eof", "completed",
                                      and "status".
  (handle_sigchld): New function.
  (main): Initialize "dir" to NULL to only closedir() it if necessary.
          Move "process_list" to be a global variable to be accessible
          by "handle_sigchld".  Make "handle_sigchld" handle SIGCHLD.
          Remove redundant check for NULL "dir".  Free "filename" when
          no longer used.  Block SIGCHLD around fork()/exec().
          Restore normal signals in child.  Only loop while running
          processes exist.  Print process buffer when the process is
          done and it has emitted EOF, not when it only emits EOF.
          Remove processes from list which exit non-cleanly.  In
          cleaning up, closedir() if necessary.  Bug fix: set next
          pointer correctly when freeing process list.

* plugins.d/passprompt.c (main): Do not ignore SIGQUIT.

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