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

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