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