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