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