/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 Makefile

  • Committer: Teddy Hogeborn
  • Date: 2015-03-10 18:03:38 UTC
  • Revision ID: teddy@recompile.se-20150310180338-pcxw6r2qmw9k6br9
Add ":!RSA" to GnuTLS priority string, to disallow non-DHE kx.

If Mandos was somehow made to use a non-ephemeral Diffie-Hellman key
exchange algorithm in the TLS handshake, any saved network traffic
could then be decrypted later if the Mandos client key was obtained.
By default, Mandos uses ephemeral DH key exchanges which does not have
this problem, but a non-ephemeral key exchange algorithm was still
enabled by default.  The simplest solution is to simply turn that off,
which ensures that Mandos will always use ephemeral DH key exchanges.

There is a "PFS" priority string specifier, but we can't use it because:

1. Security-wise, it is a mix between "NORMAL" and "SECURE128" - it
   enables a lot more algorithms than "SECURE256".

2. It is only available since GnuTLS 3.2.4.

Thanks to Andreas Fischer <af@bantuX.org> for reporting this issue.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
WARN=-O -Wall -Wformat=2 -Winit-self -Wmissing-include-dirs \
2
 
        -Wswitch-default -Wswitch-enum -Wunused-parameter \
3
 
        -Wstrict-aliasing=2 -Wextra -Wfloat-equal -Wundef -Wshadow \
 
1
WARN=-O -Wall -Wextra -Wdouble-promotion -Wformat=2 -Winit-self \
 
2
        -Wmissing-include-dirs -Wswitch-default -Wswitch-enum \
 
3
        -Wunused -Wuninitialized -Wstrict-overflow=5 \
 
4
        -Wsuggest-attribute=pure -Wsuggest-attribute=const \
 
5
        -Wsuggest-attribute=noreturn -Wfloat-equal -Wundef -Wshadow \
4
6
        -Wunsafe-loop-optimizations -Wpointer-arith \
5
7
        -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings \
6
 
        -Wconversion -Wstrict-prototypes -Wold-style-definition \
7
 
        -Wpacked -Wnested-externs -Winline -Wvolatile-register-var
8
 
#       -Wunreachable-code 
 
8
        -Wconversion -Wlogical-op -Waggregate-return \
 
9
        -Wstrict-prototypes -Wold-style-definition \
 
10
        -Wmissing-format-attribute -Wnormalized=nfc -Wpacked \
 
11
        -Wredundant-decls -Wnested-externs -Winline -Wvla \
 
12
        -Wvolatile-register-var -Woverlength-strings
9
13
#DEBUG=-ggdb3
10
 
# For info about _FORTIFY_SOURCE, see
11
 
# <http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html>
12
 
FORTIFY=-D_FORTIFY_SOURCE=2 # -fstack-protector-all
 
14
# For info about _FORTIFY_SOURCE, see feature_test_macros(7)
 
15
# and <http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html>.
 
16
FORTIFY=-D_FORTIFY_SOURCE=2 -fstack-protector-all -fPIC
 
17
LINK_FORTIFY_LD=-z relro -z now
 
18
LINK_FORTIFY=
 
19
 
 
20
# If BROKEN_PIE is set, do not build with -pie
 
21
ifndef BROKEN_PIE
 
22
FORTIFY += -fPIE
 
23
LINK_FORTIFY += -pie
 
24
endif
13
25
#COVERAGE=--coverage
14
 
OPTIMIZE=-Os
 
26
OPTIMIZE=-Os -fno-strict-aliasing
15
27
LANGUAGE=-std=gnu99
 
28
htmldir=man
 
29
version=1.6.9
 
30
SED=sed
 
31
 
 
32
USER=$(firstword $(subst :, ,$(shell getent passwd _mandos || getent passwd nobody || echo 65534)))
 
33
GROUP=$(firstword $(subst :, ,$(shell getent group _mandos || getent group nobody || echo 65534)))
16
34
 
17
35
## Use these settings for a traditional /usr/local install
18
36
# PREFIX=$(DESTDIR)/usr/local
20
38
# KEYDIR=$(DESTDIR)/etc/mandos/keys
21
39
# MANDIR=$(PREFIX)/man
22
40
# INITRAMFSTOOLS=$(DESTDIR)/etc/initramfs-tools
 
41
# STATEDIR=$(DESTDIR)/var/lib/mandos
 
42
# LIBDIR=$(PREFIX)/lib
23
43
##
24
44
 
25
45
## These settings are for a package-type install
28
48
KEYDIR=$(DESTDIR)/etc/keys/mandos
29
49
MANDIR=$(PREFIX)/share/man
30
50
INITRAMFSTOOLS=$(DESTDIR)/usr/share/initramfs-tools
 
51
STATEDIR=$(DESTDIR)/var/lib/mandos
 
52
LIBDIR=$(shell \
 
53
        for d in \
 
54
        "/usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null`" \
 
55
        "`rpm --eval='%{_libdir}' 2>/dev/null`" /usr/lib; do \
 
56
                if [ -d "$$d" -a "$$d" = "$${d%/}" ]; then \
 
57
                        echo "$(DESTDIR)$$d"; \
 
58
                        break; \
 
59
                fi; \
 
60
        done)
31
61
##
32
62
 
33
 
GNUTLS_CFLAGS=$(shell libgnutls-config --cflags)
34
 
GNUTLS_LIBS=$(shell libgnutls-config --libs)
 
63
SYSTEMD=$(DESTDIR)$(shell pkg-config systemd --variable=systemdsystemunitdir)
 
64
 
 
65
GNUTLS_CFLAGS=$(shell pkg-config --cflags-only-I gnutls)
 
66
GNUTLS_LIBS=$(shell pkg-config --libs gnutls)
35
67
AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
36
68
AVAHI_LIBS=$(shell pkg-config --libs avahi-core)
37
 
GPGME_CFLAGS=$(shell gpgme-config --cflags)
38
 
GPGME_LIBS=$(shell gpgme-config --libs)
 
69
GPGME_CFLAGS=$(shell gpgme-config --cflags; getconf LFS_CFLAGS)
 
70
GPGME_LIBS=$(shell gpgme-config --libs; getconf LFS_LIBS; \
 
71
        getconf LFS_LDFLAGS)
39
72
 
40
73
# Do not change these two
41
 
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
42
 
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS)
43
 
LDFLAGS=$(COVERAGE)
 
74
CFLAGS+=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
 
75
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS) \
 
76
        -DVERSION='"$(version)"'
 
77
LDFLAGS+=-Xlinker --as-needed $(COVERAGE) $(LINK_FORTIFY) $(foreach flag,$(LINK_FORTIFY_LD),-Xlinker $(flag))
44
78
 
45
79
# Commands to format a DocBook <refentry> document into a manual page
46
 
DOCBOOKTOMAN=cd $(dir $<); xsltproc --nonet --xinclude \
 
80
DOCBOOKTOMAN=$(strip cd $(dir $<); xsltproc --nonet --xinclude \
47
81
        --param man.charmap.use.subset          0 \
48
82
        --param make.year.ranges                1 \
49
83
        --param make.single.year.ranges         1 \
50
84
        --param man.output.quietly              1 \
51
85
        --param man.authors.section.enabled     0 \
52
 
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
 
86
        /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
53
87
        $(notdir $<); \
54
 
        $(MANPOST) $(notdir $@)
55
 
# DocBook-to-man post-processing to fix a '\n' escape bug
56
 
MANPOST=sed --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
57
 
 
58
 
PLUGINS=plugins.d/password-prompt plugins.d/mandos-client
59
 
PROGS=plugin-runner $(PLUGINS)
60
 
DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
 
88
        if locale --all 2>/dev/null | grep --regexp='^en_US\.utf8$$' \
 
89
        && type man 2>/dev/null; then LANG=en_US.UTF-8 MANWIDTH=80 \
 
90
        man --warnings --encoding=UTF-8 --local-file $(notdir $@); \
 
91
        fi >/dev/null)
 
92
 
 
93
DOCBOOKTOHTML=$(strip xsltproc --nonet --xinclude \
 
94
        --param make.year.ranges                1 \
 
95
        --param make.single.year.ranges         1 \
 
96
        --param man.output.quietly              1 \
 
97
        --param man.authors.section.enabled     0 \
 
98
        --param citerefentry.link               1 \
 
99
        --output $@ \
 
100
        /usr/share/xml/docbook/stylesheet/nwalsh/xhtml/docbook.xsl \
 
101
        $<; $(HTMLPOST) $@)
 
102
# Fix citerefentry links
 
103
HTMLPOST=$(SED) --in-place \
 
104
        --expression='s/\(<a class="citerefentry" href="\)\("><span class="citerefentry"><span class="refentrytitle">\)\([^<]*\)\(<\/span>(\)\([^)]*\)\()<\/span><\/a>\)/\1\3.\5\2\3\4\5\6/g'
 
105
 
 
106
PLUGINS=plugins.d/password-prompt plugins.d/mandos-client \
 
107
        plugins.d/usplash plugins.d/splashy plugins.d/askpass-fifo \
 
108
        plugins.d/plymouth
 
109
CPROGS=plugin-runner $(PLUGINS)
 
110
PROGS=mandos mandos-keygen mandos-ctl mandos-monitor $(CPROGS)
 
111
DOCS=mandos.8 mandos-keygen.8 mandos-monitor.8 mandos-ctl.8 \
 
112
        mandos.conf.5 mandos-clients.conf.5 plugin-runner.8mandos \
61
113
        plugins.d/mandos-client.8mandos \
62
 
        plugins.d/password-prompt.8mandos mandos.conf.5 \
63
 
        mandos-clients.conf.5
64
 
 
65
 
objects=$(addsuffix .o,$(PROGS))
66
 
 
67
 
all: $(PROGS)
 
114
        plugins.d/password-prompt.8mandos plugins.d/usplash.8mandos \
 
115
        plugins.d/splashy.8mandos plugins.d/askpass-fifo.8mandos \
 
116
        plugins.d/plymouth.8mandos intro.8mandos
 
117
 
 
118
htmldocs=$(addsuffix .xhtml,$(DOCS))
 
119
 
 
120
objects=$(addsuffix .o,$(CPROGS))
 
121
 
 
122
all: $(PROGS) mandos.lsm
68
123
 
69
124
doc: $(DOCS)
70
125
 
71
 
%.5: %.xml legalnotice.xml
72
 
        $(DOCBOOKTOMAN)
73
 
 
74
 
%.8: %.xml legalnotice.xml
75
 
        $(DOCBOOKTOMAN)
76
 
 
77
 
%.8mandos: %.xml legalnotice.xml
78
 
        $(DOCBOOKTOMAN)
79
 
 
80
 
mandos.8: mandos.xml mandos-options.xml overview.xml legalnotice.xml
81
 
        $(DOCBOOKTOMAN)
82
 
 
83
 
mandos-keygen.8: mandos-keygen.xml overview.xml legalnotice.xml
84
 
        $(DOCBOOKTOMAN)
85
 
 
86
 
mandos.conf.5: mandos.conf.xml mandos-options.xml legalnotice.xml
87
 
        $(DOCBOOKTOMAN)
88
 
 
89
 
plugin-runner.8mandos: plugin-runner.xml overview.xml legalnotice.xml
90
 
        $(DOCBOOKTOMAN)
 
126
html: $(htmldocs)
 
127
 
 
128
%.5: %.xml common.ent legalnotice.xml
 
129
        $(DOCBOOKTOMAN)
 
130
%.5.xhtml: %.xml common.ent legalnotice.xml
 
131
        $(DOCBOOKTOHTML)
 
132
 
 
133
%.8: %.xml common.ent legalnotice.xml
 
134
        $(DOCBOOKTOMAN)
 
135
%.8.xhtml: %.xml common.ent legalnotice.xml
 
136
        $(DOCBOOKTOHTML)
 
137
 
 
138
%.8mandos: %.xml common.ent legalnotice.xml
 
139
        $(DOCBOOKTOMAN)
 
140
%.8mandos.xhtml: %.xml common.ent legalnotice.xml
 
141
        $(DOCBOOKTOHTML)
 
142
 
 
143
intro.8mandos: intro.xml common.ent legalnotice.xml
 
144
        $(DOCBOOKTOMAN)
 
145
intro.8mandos.xhtml: intro.xml common.ent legalnotice.xml
 
146
        $(DOCBOOKTOHTML)
 
147
 
 
148
mandos.8: mandos.xml common.ent mandos-options.xml overview.xml \
 
149
                legalnotice.xml
 
150
        $(DOCBOOKTOMAN)
 
151
mandos.8.xhtml: mandos.xml common.ent mandos-options.xml \
 
152
                overview.xml legalnotice.xml
 
153
        $(DOCBOOKTOHTML)
 
154
 
 
155
mandos-keygen.8: mandos-keygen.xml common.ent overview.xml \
 
156
                legalnotice.xml
 
157
        $(DOCBOOKTOMAN)
 
158
mandos-keygen.8.xhtml: mandos-keygen.xml common.ent overview.xml \
 
159
                 legalnotice.xml
 
160
        $(DOCBOOKTOHTML)
 
161
 
 
162
mandos-monitor.8: mandos-monitor.xml common.ent overview.xml \
 
163
                legalnotice.xml
 
164
        $(DOCBOOKTOMAN)
 
165
mandos-monitor.8.xhtml: mandos-monitor.xml common.ent overview.xml \
 
166
                 legalnotice.xml
 
167
        $(DOCBOOKTOHTML)
 
168
 
 
169
mandos-ctl.8: mandos-ctl.xml common.ent overview.xml \
 
170
                legalnotice.xml
 
171
        $(DOCBOOKTOMAN)
 
172
mandos-ctl.8.xhtml: mandos-ctl.xml common.ent overview.xml \
 
173
                 legalnotice.xml
 
174
        $(DOCBOOKTOHTML)
 
175
 
 
176
mandos.conf.5: mandos.conf.xml common.ent mandos-options.xml \
 
177
                legalnotice.xml
 
178
        $(DOCBOOKTOMAN)
 
179
mandos.conf.5.xhtml: mandos.conf.xml common.ent mandos-options.xml \
 
180
                legalnotice.xml
 
181
        $(DOCBOOKTOHTML)
 
182
 
 
183
plugin-runner.8mandos: plugin-runner.xml common.ent overview.xml \
 
184
                legalnotice.xml
 
185
        $(DOCBOOKTOMAN)
 
186
plugin-runner.8mandos.xhtml: plugin-runner.xml common.ent \
 
187
                overview.xml legalnotice.xml
 
188
        $(DOCBOOKTOHTML)
91
189
 
92
190
plugins.d/mandos-client.8mandos: plugins.d/mandos-client.xml \
 
191
                                        common.ent \
93
192
                                        mandos-options.xml \
94
193
                                        overview.xml legalnotice.xml
95
194
        $(DOCBOOKTOMAN)
96
 
 
97
 
plugins.d/mandos-client: plugins.d/mandos-client.o
98
 
        $(LINK.o) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) \
99
 
                $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
100
 
 
101
 
.PHONY : all doc clean distclean run-client run-server install \
102
 
        install-server install-client uninstall uninstall-server \
103
 
        uninstall-client purge purge-server purge-client
 
195
plugins.d/mandos-client.8mandos.xhtml: plugins.d/mandos-client.xml \
 
196
                                        common.ent \
 
197
                                        mandos-options.xml \
 
198
                                        overview.xml legalnotice.xml
 
199
        $(DOCBOOKTOHTML)
 
200
 
 
201
# Update all these files with version number $(version)
 
202
common.ent: Makefile
 
203
        $(strip $(SED) --in-place \
 
204
                --expression='s/^\(<!ENTITY version "\)[^"]*">$$/\1$(version)">/' \
 
205
                $@)
 
206
 
 
207
mandos: Makefile
 
208
        $(strip $(SED) --in-place \
 
209
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
 
210
                $@)
 
211
 
 
212
mandos-keygen: Makefile
 
213
        $(strip $(SED) --in-place \
 
214
                --expression='s/^\(VERSION="\)[^"]*"$$/\1$(version)"/' \
 
215
                $@)
 
216
 
 
217
mandos-ctl: Makefile
 
218
        $(strip $(SED) --in-place \
 
219
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
 
220
                $@)
 
221
 
 
222
mandos-monitor: Makefile
 
223
        $(strip $(SED) --in-place \
 
224
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
 
225
                $@)
 
226
 
 
227
mandos.lsm: Makefile
 
228
        $(strip $(SED) --in-place \
 
229
                --expression='s/^\(Version:\).*/\1\t$(version)/' \
 
230
                $@)
 
231
        $(strip $(SED) --in-place \
 
232
                --expression='s/^\(Entered-date:\).*/\1\t$(shell date --rfc-3339=date --reference=Makefile)/' \
 
233
                $@)
 
234
        $(strip $(SED) --in-place \
 
235
                --expression='s/\(mandos_\)[0-9.]\+\(\.orig\.tar\.gz\)/\1$(version)\2/' \
 
236
                $@)
 
237
 
 
238
plugins.d/mandos-client: plugins.d/mandos-client.c
 
239
        $(LINK.c) $^ -lrt $(GNUTLS_LIBS) $(AVAHI_LIBS) $(strip\
 
240
                ) $(GPGME_LIBS) $(LOADLIBES) $(LDLIBS) -o $@
 
241
 
 
242
.PHONY : all doc html clean distclean mostlyclean maintainer-clean \
 
243
        check run-client run-server install install-html \
 
244
        install-server install-client-nokey install-client uninstall \
 
245
        uninstall-server uninstall-client purge purge-server \
 
246
        purge-client
104
247
 
105
248
clean:
106
 
        -rm --force $(PROGS) $(objects) $(DOCS) core
 
249
        -rm --force $(CPROGS) $(objects) $(htmldocs) $(DOCS) core
107
250
 
108
251
distclean: clean
109
252
mostlyclean: clean
110
253
maintainer-clean: clean
111
 
        -rm --force --recursive keydir confdir
 
254
        -rm --force --recursive keydir confdir statedir
112
255
 
113
 
check:
 
256
check:  all
114
257
        ./mandos --check
 
258
        ./mandos-ctl --check
115
259
 
116
260
# Run the client with a local config and key
117
261
run-client: all keydir/seckey.txt keydir/pubkey.txt
 
262
        @echo "###################################################################"
 
263
        @echo "# The following error messages are harmless and can be safely     #"
 
264
        @echo "# ignored.  The messages are caused by not running as root, but   #"
 
265
        @echo "# you should NOT run \"make run-client\" as root unless you also    #"
 
266
        @echo "# unpacked and compiled Mandos as root, which is NOT recommended. #"
 
267
        @echo "# From plugin-runner: setgid: Operation not permitted             #"
 
268
        @echo "#                     setuid: Operation not permitted             #"
 
269
        @echo "# From askpass-fifo:  mkfifo: Permission denied                   #"
 
270
        @echo "# From mandos-client:                                             #"
 
271
        @echo "#             Failed to raise privileges: Operation not permitted #"
 
272
        @echo "#             Warning: network hook \"*\" exited with status *      #"
 
273
        @echo "###################################################################"
 
274
# We set GNOME_KEYRING_CONTROL to block pam_gnome_keyring
118
275
        ./plugin-runner --plugin-dir=plugins.d \
119
276
                --config-file=plugin-runner.conf \
120
 
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt
 
277
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt,--network-hook-dir=network-hooks.d \
 
278
                --env-for=mandos-client:GNOME_KEYRING_CONTROL= \
 
279
                $(CLIENTARGS)
121
280
 
122
281
# Used by run-client
123
282
keydir/seckey.txt keydir/pubkey.txt: mandos-keygen
125
284
        ./mandos-keygen --dir keydir --force
126
285
 
127
286
# Run the server with a local config
128
 
run-server: confdir/mandos.conf confdir/clients.conf
129
 
        ./mandos --debug --configdir=confdir
 
287
run-server: confdir/mandos.conf confdir/clients.conf statedir
 
288
        ./mandos --debug --no-dbus --configdir=confdir \
 
289
                --statedir=statedir $(SERVERARGS)
130
290
 
131
291
# Used by run-server
132
292
confdir/mandos.conf: mandos.conf
136
296
        install --directory confdir
137
297
        install --mode=u=rw $< $@
138
298
# Add a client password
139
 
        ./mandos-keygen --dir keydir --password >> $@
 
299
        ./mandos-keygen --dir keydir --password --no-ssh >> $@
 
300
statedir:
 
301
        install --directory statedir
140
302
 
141
303
install: install-server install-client-nokey
142
304
 
 
305
install-html: html
 
306
        install --directory $(htmldir)
 
307
        install --mode=u=rw,go=r --target-directory=$(htmldir) \
 
308
                $(htmldocs)
 
309
 
143
310
install-server: doc
144
 
        install --directory $(CONFDIR) $(MANDIR)/man5 \
145
 
                $(MANDIR)/man8 $(DESTDIR)/etc/init.d \
146
 
                $(DESTDIR)/etc/default $(PREFIX)/sbin
 
311
        install --directory $(CONFDIR)
 
312
        if install --directory --mode=u=rwx --owner=$(USER) \
 
313
                --group=$(GROUP) $(STATEDIR); then \
 
314
                :; \
 
315
        elif install --directory --mode=u=rwx $(STATEDIR); then \
 
316
                chown -- $(USER):$(GROUP) $(STATEDIR) || :; \
 
317
        fi
147
318
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
 
319
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
 
320
                mandos-ctl
 
321
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
 
322
                mandos-monitor
148
323
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
149
324
                mandos.conf
150
325
        install --mode=u=rw --target-directory=$(CONFDIR) \
151
326
                clients.conf
 
327
        install --mode=u=rw,go=r dbus-mandos.conf \
 
328
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
152
329
        install --mode=u=rwx,go=rx init.d-mandos \
153
330
                $(DESTDIR)/etc/init.d/mandos
 
331
        if [ "$(SYSTEMD)" != "$(DESTDIR)" -a -d "$(SYSTEMD)" ]; then \
 
332
                install --mode=u=rw,go=r mandos.service $(SYSTEMD); \
 
333
        fi
154
334
        install --mode=u=rw,go=r default-mandos \
155
335
                $(DESTDIR)/etc/default/mandos
156
 
        update-rc.d mandos defaults
 
336
        if [ -z $(DESTDIR) ]; then \
 
337
                update-rc.d mandos defaults 25 15;\
 
338
        fi
157
339
        gzip --best --to-stdout mandos.8 \
158
340
                > $(MANDIR)/man8/mandos.8.gz
 
341
        gzip --best --to-stdout mandos-monitor.8 \
 
342
                > $(MANDIR)/man8/mandos-monitor.8.gz
 
343
        gzip --best --to-stdout mandos-ctl.8 \
 
344
                > $(MANDIR)/man8/mandos-ctl.8.gz
159
345
        gzip --best --to-stdout mandos.conf.5 \
160
346
                > $(MANDIR)/man5/mandos.conf.5.gz
161
347
        gzip --best --to-stdout mandos-clients.conf.5 \
162
348
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
 
349
        gzip --best --to-stdout intro.8mandos \
 
350
                > $(MANDIR)/man8/intro.8mandos.gz
163
351
 
164
352
install-client-nokey: all doc
165
 
        install --directory $(PREFIX)/lib/mandos $(CONFDIR) \
166
 
                $(MANDIR)/man8 $(PREFIX)/sbin \
167
 
                $(INITRAMFSTOOLS)/hooks \
168
 
                $(INITRAMFSTOOLS)/conf-hooks.d \
169
 
                $(INITRAMFSTOOLS)/scripts/local-top
170
 
        install --directory --mode=u=rwx $(KEYDIR)
171
 
        install --directory --mode=u=rwx \
172
 
                $(PREFIX)/lib/mandos/plugins.d
173
 
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
 
353
        install --directory $(LIBDIR)/mandos $(CONFDIR)
 
354
        install --directory --mode=u=rwx $(KEYDIR) \
 
355
                $(LIBDIR)/mandos/plugins.d
 
356
        if [ "$(CONFDIR)" != "$(LIBDIR)/mandos" ]; then \
174
357
                install --mode=u=rwx \
175
 
                        --directory "$(CONFDIR)/plugins.d" && \
176
 
                install --mode=u=rw,go=r etc-plugins.d-README \
177
 
                        $(CONFDIR)/plugins.d/README ; \
 
358
                        --directory "$(CONFDIR)/plugins.d"; \
178
359
        fi
 
360
        install --mode=u=rwx,go=rx --directory \
 
361
                "$(CONFDIR)/network-hooks.d"
179
362
        install --mode=u=rwx,go=rx \
180
 
                --target-directory=$(PREFIX)/lib/mandos plugin-runner
 
363
                --target-directory=$(LIBDIR)/mandos plugin-runner
181
364
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
182
365
                mandos-keygen
183
366
        install --mode=u=rwx,go=rx \
184
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
367
                --target-directory=$(LIBDIR)/mandos/plugins.d \
185
368
                plugins.d/password-prompt
186
369
        install --mode=u=rwxs,go=rx \
187
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
370
                --target-directory=$(LIBDIR)/mandos/plugins.d \
188
371
                plugins.d/mandos-client
189
 
        install --mode=u=rwx,go=rx \
190
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
372
        install --mode=u=rwxs,go=rx \
 
373
                --target-directory=$(LIBDIR)/mandos/plugins.d \
191
374
                plugins.d/usplash
 
375
        install --mode=u=rwxs,go=rx \
 
376
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
377
                plugins.d/splashy
 
378
        install --mode=u=rwxs,go=rx \
 
379
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
380
                plugins.d/askpass-fifo
 
381
        install --mode=u=rwxs,go=rx \
 
382
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
383
                plugins.d/plymouth
192
384
        install initramfs-tools-hook \
193
385
                $(INITRAMFSTOOLS)/hooks/mandos
194
 
        install initramfs-tools-hook-conf \
 
386
        install --mode=u=rw,go=r initramfs-tools-hook-conf \
195
387
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos
196
388
        install initramfs-tools-script \
197
 
                $(INITRAMFSTOOLS)/scripts/local-top/mandos
 
389
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos
198
390
        install --mode=u=rw,go=r plugin-runner.conf $(CONFDIR)
199
391
        gzip --best --to-stdout mandos-keygen.8 \
200
392
                > $(MANDIR)/man8/mandos-keygen.8.gz
201
393
        gzip --best --to-stdout plugin-runner.8mandos \
202
394
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
 
395
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
 
396
                > $(MANDIR)/man8/mandos-client.8mandos.gz
203
397
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
204
398
                > $(MANDIR)/man8/password-prompt.8mandos.gz
205
 
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
206
 
                > $(MANDIR)/man8/mandos-client.8mandos.gz
 
399
        gzip --best --to-stdout plugins.d/usplash.8mandos \
 
400
                > $(MANDIR)/man8/usplash.8mandos.gz
 
401
        gzip --best --to-stdout plugins.d/splashy.8mandos \
 
402
                > $(MANDIR)/man8/splashy.8mandos.gz
 
403
        gzip --best --to-stdout plugins.d/askpass-fifo.8mandos \
 
404
                > $(MANDIR)/man8/askpass-fifo.8mandos.gz
 
405
        gzip --best --to-stdout plugins.d/plymouth.8mandos \
 
406
                > $(MANDIR)/man8/plymouth.8mandos.gz
207
407
 
208
408
install-client: install-client-nokey
209
409
# Post-installation stuff
215
415
 
216
416
uninstall-server:
217
417
        -rm --force $(PREFIX)/sbin/mandos \
 
418
                $(PREFIX)/sbin/mandos-ctl \
 
419
                $(PREFIX)/sbin/mandos-monitor \
218
420
                $(MANDIR)/man8/mandos.8.gz \
 
421
                $(MANDIR)/man8/mandos-monitor.8.gz \
 
422
                $(MANDIR)/man8/mandos-ctl.8.gz \
219
423
                $(MANDIR)/man5/mandos.conf.5.gz \
220
424
                $(MANDIR)/man5/mandos-clients.conf.5.gz
221
425
        update-rc.d -f mandos remove
227
431
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
228
432
                $(DESTDIR)/etc/crypttab
229
433
        -rm --force $(PREFIX)/sbin/mandos-keygen \
230
 
                $(PREFIX)/lib/mandos/plugin-runner \
231
 
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
232
 
                $(PREFIX)/lib/mandos/plugins.d/mandos-client \
233
 
                $(PREFIX)/lib/mandos/plugins.d/usplash \
 
434
                $(LIBDIR)/mandos/plugin-runner \
 
435
                $(LIBDIR)/mandos/plugins.d/password-prompt \
 
436
                $(LIBDIR)/mandos/plugins.d/mandos-client \
 
437
                $(LIBDIR)/mandos/plugins.d/usplash \
 
438
                $(LIBDIR)/mandos/plugins.d/splashy \
 
439
                $(LIBDIR)/mandos/plugins.d/askpass-fifo \
 
440
                $(LIBDIR)/mandos/plugins.d/plymouth \
234
441
                $(INITRAMFSTOOLS)/hooks/mandos \
235
442
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
236
 
                $(INITRAMFSTOOLS)/scripts/local-top/mandos \
 
443
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
 
444
                $(MANDIR)/man8/mandos-keygen.8.gz \
237
445
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
238
 
                $(MANDIR)/man8/mandos-keygen.8.gz \
 
446
                $(MANDIR)/man8/mandos-client.8mandos.gz
239
447
                $(MANDIR)/man8/password-prompt.8mandos.gz \
240
 
                $(MANDIR)/man8/mandos-client.8mandos.gz
241
 
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
242
 
                rm --force $(CONFDIR)/plugins.d/README; \
243
 
        fi
244
 
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
245
 
                 $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
 
448
                $(MANDIR)/man8/usplash.8mandos.gz \
 
449
                $(MANDIR)/man8/splashy.8mandos.gz \
 
450
                $(MANDIR)/man8/askpass-fifo.8mandos.gz \
 
451
                $(MANDIR)/man8/plymouth.8mandos.gz \
 
452
        -rmdir $(LIBDIR)/mandos/plugins.d $(CONFDIR)/plugins.d \
 
453
                 $(LIBDIR)/mandos $(CONFDIR) $(KEYDIR)
246
454
        update-initramfs -k all -u
247
455
 
248
456
purge: purge-server purge-client
249
457
 
250
458
purge-server: uninstall-server
251
459
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf \
 
460
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
252
461
                $(DESTDIR)/etc/default/mandos \
253
462
                $(DESTDIR)/etc/init.d/mandos \
 
463
                $(SYSTEMD)/mandos.service \
 
464
                $(DESTDIR)/run/mandos.pid \
254
465
                $(DESTDIR)/var/run/mandos.pid
255
466
        -rmdir $(CONFDIR)
256
467