/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-16 03:29:08 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080816032908-ihw7c05r2mnyk389
Add feature to specify custom environment variables for plugins.

* plugin-runner.c (plugin): New members "environ" and "envc" to
                            contain possible custom environment.
  (getplugin): Return NULL on failure instead of doing exit(); all
               callers changed.
  (add_to_char_array): New helper function for "add_argument" and
                       "add_environment".
  (addargument): Renamed to "add_argument".  Return bool.  Call
                 "add_to_char_array" to actually do things.
  (add_environment): New; analogous to "add_argument".
  (addcustomargument): Renamed to "add_to_argv" to avoid confusion
                       with "add_argument".
  (main): New options "--global-envs" and "--envs-for" to specify
          custom environment for plugins.  Print environment for
          plugins in debug mode.  Use asprintf instead of strcpy and
          strcat.  Use execve() for plugins with custom environments.
          Free environment for plugin when freeing plugin list.

Show diffs side-by-side

added added

removed removed

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