/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: Teddy Hogeborn
  • Date: 2024-11-17 18:43:11 UTC
  • mto: This revision was merged to the branch mainline in revision 412.
  • Revision ID: teddy@recompile.se-20241117184311-ox25kvngy62h209g
Debian package: Avoid suggesting a C compiler unnecessarily

The list of suggested packages, meant to enable the "mandos" program
to find the correct value of SO_BINDTODEVICE by using a C compiler,
are not necessary when Python 3.3 or later is used, since it has the
SO_BINDTODEVICE constant defined in the "socket" module.  Also, Python
2.6 or older has the same constant in the old "IN" module.  Therefore,
we should suggest these Python versions as alternatives to a C
compiler, so that a C compiler is not installed unnecessarily.

debian/control (Package: mandos/Suggests): Add "python3 (>= 3.3)" and
"python (<= 2.6)" as alternatives to "libc6-dev | libc-dev" and
"c-compiler".

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
update_initramfs()
24
24
{
25
25
    if command -v update-initramfs >/dev/null; then
26
 
        update-initramfs -k all -u
 
26
        update-initramfs -k all -u 1>&2
27
27
    elif command -v dracut >/dev/null; then
28
28
        dracut_version="`dpkg-query --showformat='${Version}' --show dracut`"
29
29
        if dpkg --compare-versions "$dracut_version" lt 043-1 \
37
37
            # Dracut preserves old permissions of initramfs image
38
38
            # files, so we adjust permissions before creating new
39
39
            # initramfs image containing secret keys.
40
 
            chmod go-r /boot/initrd.img-"$kversion"
 
40
            if [ -e /boot/initrd.img-"$kversion" ]; then
 
41
                chmod go-r /boot/initrd.img-"$kversion"
 
42
            else
 
43
                # An initrd image has not yet been created for this
 
44
                # kernel, possibly because this new kernel is about to
 
45
                # be, but has not yet been, installed.  In this case,
 
46
                # we create an empty file with the right permissions
 
47
                # so that Dracut will preserve those permissions when
 
48
                # it creates the real, new initrd image for this
 
49
                # kernel.
 
50
                install --mode=u=rw /dev/null \
 
51
                        /boot/initrd.img-"$kversion"
 
52
            fi
41
53
            if [ "$kversion" != "*" ]; then
42
 
                /etc/kernel/postinst.d/dracut "$kversion"
 
54
                /etc/kernel/postinst.d/dracut "$kversion" 1>&2
43
55
            fi
44
56
        done
45
57
    fi
58
70
    if dpkg --compare-versions "$2" lt "1.0.3-1"; then
59
71
        case "`getent passwd mandos`" in
60
72
            *:Mandos\ password\ system,,,:/nonexistent:/bin/false)
61
 
                usermod --login _mandos mandos
62
 
                groupmod --new-name _mandos mandos
 
73
                usermod --login _mandos mandos 1>&2
 
74
                groupmod --new-name _mandos mandos 1>&2
63
75
                return
64
76
                ;;
65
77
        esac
68
80
    if ! getent passwd _mandos >/dev/null; then
69
81
        adduser --system --force-badname --quiet --home /nonexistent \
70
82
            --no-create-home --group --disabled-password \
71
 
            --gecos "Mandos password system" _mandos
 
83
            --gecos "Mandos password system" _mandos 1>&2
72
84
    fi
73
85
}
74
86
 
78
90
    # mandos-keygen
79
91
    if ! [ -r /etc/keys/mandos/pubkey.txt \
80
92
              -a -r /etc/keys/mandos/seckey.txt ]; then
81
 
        mandos-keygen
82
 
        gpg-connect-agent KILLAGENT /bye || :
 
93
        mandos-keygen 1>&2
 
94
        gpg-connect-agent KILLAGENT /bye 1>&2 || :
83
95
        return 0
84
96
    fi
85
97
 
90
102
        if ! certtool --password='' \
91
103
             --load-privkey=/etc/keys/mandos/tls-privkey.pem \
92
104
             --outfile=/dev/null --pubkey-info --no-text \
93
 
             2>/dev/null; then
 
105
              1>&2 2>/dev/null; then
94
106
            shred --remove -- /etc/keys/mandos/tls-privkey.pem \
95
107
                  2>/dev/null || :
96
108
            rm --force -- /etc/keys/mandos/tls-pubkey.pem
109
121
 
110
122
    if certtool --generate-privkey --password='' \
111
123
                --outfile "$TLS_PRIVKEYTMP" --sec-param ultra \
112
 
                --key-type=ed25519 --pkcs8 --no-text 2>/dev/null; then
 
124
                --key-type=ed25519 --pkcs8 --no-text 1>&2 \
 
125
                2>/dev/null; then
113
126
 
114
127
        local umask=$(umask)
115
128
        umask 077
120
133
        if ! certtool --password='' \
121
134
             --load-privkey=/etc/keys/mandos/tls-privkey.pem \
122
135
             --outfile=/etc/keys/mandos/tls-pubkey.pem --pubkey-info \
123
 
             --no-text 2>/dev/null; then
 
136
             --no-text 1>&2 2>/dev/null; then
124
137
            # Otherwise try OpenSSL
125
138
            if ! openssl pkey -in /etc/keys/mandos/tls-privkey.pem \
126
 
                 -out /etc/keys/mandos/tls-pubkey.pem -pubout; then
 
139
                 -out /etc/keys/mandos/tls-pubkey.pem -pubout \
 
140
                 1>&2; then
127
141
                rm --force /etc/keys/mandos/tls-pubkey.pem
128
142
                # None of the commands succeded; give up
129
143
                umask $umask
155
169
    DHFILE="`mktemp -t mandos-client-dh-parameters.XXXXXXXXXX.pem`"
156
170
    # First try certtool from GnuTLS
157
171
    if ! certtool --generate-dh-params --sec-param high \
158
 
         --outfile "$DHFILE"; then
 
172
         --outfile "$DHFILE" 1>&2; then
159
173
        # Otherwise try OpenSSL
160
174
        if ! openssl genpkey -genparam -algorithm DH -out "$DHFILE" \
161
 
             -pkeyopt dh_paramgen_prime_len:3072; then
 
175
             -pkeyopt dh_paramgen_prime_len:3072 1>&2; then
162
176
            # None of the commands succeded; give up
163
 
            rm -- "$DHFILE"
 
177
            rm --force -- "$DHFILE"
164
178
            return 1
165
179
        fi
166
180
    fi
169
183
    sed --in-place --expression='1i-----BEGIN DH PARAMETERS-----' \
170
184
            "$DHFILE"
171
185
    cp --archive "$DHFILE" /etc/keys/mandos/dhparams.pem
172
 
    rm -- "$DHFILE"
 
186
    rm --force -- "$DHFILE"
173
187
}
174
188
 
175
189
case "$1" in