/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: Teddy Hogeborn
  • Date: 2015-01-25 00:02:51 UTC
  • Revision ID: teddy@recompile.se-20150125000251-j2bw50gfq9smqyxe
mandos.xml (SEE ALSO): Update links.

Update link to GnuPG home page, change reference from TLS 1.1 to TLS
1.2, and change to latest RFC for using OpenPGP keys with TLS (and use
its correct title).

Show diffs side-by-side

added added

removed removed

Lines of Context:
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 \
 
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 \
4
6
        -Wunsafe-loop-optimizations -Wpointer-arith \
5
7
        -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings \
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
 
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
13
25
#COVERAGE=--coverage
14
 
OPTIMIZE=-Os
 
26
OPTIMIZE=-Os -fno-strict-aliasing
15
27
LANGUAGE=-std=gnu99
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
22
 
 
23
 
GNUTLS_CFLAGS=$(shell libgnutls-config --cflags)
24
 
GNUTLS_LIBS=$(shell libgnutls-config --libs)
 
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)
25
67
AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
26
68
AVAHI_LIBS=$(shell pkg-config --libs avahi-core)
27
 
GPGME_CFLAGS=$(shell gpgme-config --cflags)
28
 
GPGME_LIBS=$(shell gpgme-config --libs)
 
69
GPGME_CFLAGS=$(shell gpgme-config --cflags; getconf LFS_CFLAGS)
 
70
GPGME_LIBS=$(shell gpgme-config --libs; getconf LFS_LIBS; \
 
71
        getconf LFS_LDFLAGS)
29
72
 
30
73
# Do not change these two
31
 
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
32
 
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS)
33
 
LDFLAGS=$(COVERAGE)
 
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))
34
78
 
35
 
DOCBOOKTOMAN=xsltproc --nonet \
 
79
# Commands to format a DocBook <refentry> document into a manual page
 
80
DOCBOOKTOMAN=$(strip cd $(dir $<); xsltproc --nonet --xinclude \
36
81
        --param man.charmap.use.subset          0 \
37
82
        --param make.year.ranges                1 \
38
83
        --param make.single.year.ranges         1 \
39
84
        --param man.output.quietly              1 \
40
 
        --param man.authors.section.enabled     0
41
 
# DocBook-to-man post-processing to fix a \n escape bug
42
 
MANPOST=sed --in-place --expression='s,\\en,\en,g;s,\\een,\\en,g'
43
 
 
44
 
PLUGINS=plugins.d/password-prompt plugins.d/password-request
45
 
PROGS=plugin-runner $(PLUGINS)
46
 
DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
47
 
        plugins.d/password-request.8mandos \
48
 
        plugins.d/password-prompt.8mandos mandos.conf.5 \
49
 
        mandos-clients.conf.5
50
 
 
51
 
objects=$(addsuffix .o,$(PROGS))
52
 
 
53
 
all: $(PROGS)
 
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
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
54
123
 
55
124
doc: $(DOCS)
56
125
 
57
 
%.5: %.xml
58
 
        cd $(dir $^); $(DOCBOOKTOMAN) $(notdir $^) $(MANPOST) $@
59
 
 
60
 
%.8: %.xml
61
 
        cd $(dir $^); $(DOCBOOKTOMAN) $(notdir $^); $(MANPOST) $@
62
 
 
63
 
%.8mandos: %.xml
64
 
        cd $(dir $^); $(DOCBOOKTOMAN) $(notdir $^) $(MANPOST) $@
65
 
 
66
 
plugins.d/password-request: plugins.d/password-request.o
67
 
        $(LINK.o) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) \
68
 
                $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
69
 
 
70
 
.PHONY : all doc clean distclean run-client run-server install \
71
 
        install-server install-client uninstall uninstall-server \
72
 
        uninstall-client purge purge-server purge-client
 
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 mostlyclean maintainer-clean \
 
243
        check run-client run-server install install-html \
 
244
        install-server install-client-nokey install-client uninstall \
 
245
        uninstall-server uninstall-client purge purge-server \
 
246
        purge-client
73
247
 
74
248
clean:
75
 
        -rm --force $(PROGS) $(objects) $(DOCS) core
 
249
        -rm --force $(CPROGS) $(objects) $(htmldocs) $(DOCS) core
76
250
 
77
251
distclean: clean
78
252
mostlyclean: clean
79
253
maintainer-clean: clean
80
 
        -rm --force --recursive keydir
 
254
        -rm --force --recursive keydir confdir statedir
81
255
 
82
 
check:
 
256
check:  all
83
257
        ./mandos --check
 
258
        ./mandos-ctl --check
84
259
 
85
 
run-client: all
86
 
        -mkdir keydir
87
 
        -./mandos-keygen --dir keydir
 
260
# Run the client with a local config and key
 
261
run-client: all keydir/seckey.txt keydir/pubkey.txt
 
262
        @echo "###################################################################"
 
263
        @echo "# The following error messages are harmless and can be safely     #"
 
264
        @echo "# ignored.  The messages are caused by not running as root, but   #"
 
265
        @echo "# you should NOT run \"make run-client\" as root unless you also    #"
 
266
        @echo "# unpacked and compiled Mandos as root, which is NOT recommended. #"
 
267
        @echo "# From plugin-runner: setgid: Operation not permitted             #"
 
268
        @echo "#                     setuid: Operation not permitted             #"
 
269
        @echo "# From askpass-fifo:  mkfifo: Permission denied                   #"
 
270
        @echo "# From mandos-client:                                             #"
 
271
        @echo "#             Failed to raise privileges: Operation not permitted #"
 
272
        @echo "#             Warning: network hook \"*\" exited with status *      #"
 
273
        @echo "###################################################################"
 
274
# We set GNOME_KEYRING_CONTROL to block pam_gnome_keyring
88
275
        ./plugin-runner --plugin-dir=plugins.d \
89
 
                --options-for=password-request:--keydir=keydir
90
 
 
91
 
run-server:
92
 
        ./mandos --debug --configdir=.
93
 
 
94
 
install: install-server install-client
 
276
                --config-file=plugin-runner.conf \
 
277
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt,--network-hook-dir=network-hooks.d \
 
278
                --env-for=mandos-client:GNOME_KEYRING_CONTROL= \
 
279
                $(CLIENTARGS)
 
280
 
 
281
# Used by run-client
 
282
keydir/seckey.txt keydir/pubkey.txt: mandos-keygen
 
283
        install --directory keydir
 
284
        ./mandos-keygen --dir keydir --force
 
285
 
 
286
# Run the server with a local config
 
287
run-server: confdir/mandos.conf confdir/clients.conf statedir
 
288
        ./mandos --debug --no-dbus --configdir=confdir \
 
289
                --statedir=statedir $(SERVERARGS)
 
290
 
 
291
# Used by run-server
 
292
confdir/mandos.conf: mandos.conf
 
293
        install --directory confdir
 
294
        install --mode=u=rw,go=r $^ $@
 
295
confdir/clients.conf: clients.conf keydir/seckey.txt
 
296
        install --directory confdir
 
297
        install --mode=u=rw $< $@
 
298
# Add a client password
 
299
        ./mandos-keygen --dir keydir --password --no-ssh >> $@
 
300
statedir:
 
301
        install --directory statedir
 
302
 
 
303
install: install-server install-client-nokey
 
304
 
 
305
install-html: html
 
306
        install --directory $(htmldir)
 
307
        install --mode=u=rw,go=r --target-directory=$(htmldir) \
 
308
                $(htmldocs)
95
309
 
96
310
install-server: doc
97
 
        mkdir --mode=0755 --parents $(CONFDIR) $(MANDIR)/man5 \
98
 
                $(MANDIR)/man8
99
 
        install --mode=0755 mandos $(PREFIX)/sbin/mandos
100
 
        install --mode=0644 --target-directory=$(CONFDIR) mandos.conf
101
 
        install --mode=0640 --target-directory=$(CONFDIR) \
 
311
        install --directory $(CONFDIR)
 
312
        if install --directory --mode=u=rwx --owner=$(USER) \
 
313
                --group=$(GROUP) $(STATEDIR); then \
 
314
                :; \
 
315
        elif install --directory --mode=u=rwx $(STATEDIR); then \
 
316
                chown -- $(USER):$(GROUP) $(STATEDIR) || :; \
 
317
        fi
 
318
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
 
319
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
 
320
                mandos-ctl
 
321
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
 
322
                mandos-monitor
 
323
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
 
324
                mandos.conf
 
325
        install --mode=u=rw --target-directory=$(CONFDIR) \
102
326
                clients.conf
 
327
        install --mode=u=rw,go=r dbus-mandos.conf \
 
328
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
 
329
        install --mode=u=rwx,go=rx init.d-mandos \
 
330
                $(DESTDIR)/etc/init.d/mandos
 
331
        if [ "$(SYSTEMD)" != "$(DESTDIR)" -a -d "$(SYSTEMD)" ]; then \
 
332
                install --mode=u=rw,go=r mandos.service $(SYSTEMD); \
 
333
        fi
 
334
        install --mode=u=rw,go=r default-mandos \
 
335
                $(DESTDIR)/etc/default/mandos
 
336
        if [ -z $(DESTDIR) ]; then \
 
337
                update-rc.d mandos defaults 25 15;\
 
338
        fi
103
339
        gzip --best --to-stdout mandos.8 \
104
340
                > $(MANDIR)/man8/mandos.8.gz
 
341
        gzip --best --to-stdout mandos-monitor.8 \
 
342
                > $(MANDIR)/man8/mandos-monitor.8.gz
 
343
        gzip --best --to-stdout mandos-ctl.8 \
 
344
                > $(MANDIR)/man8/mandos-ctl.8.gz
105
345
        gzip --best --to-stdout mandos.conf.5 \
106
346
                > $(MANDIR)/man5/mandos.conf.5.gz
107
347
        gzip --best --to-stdout mandos-clients.conf.5 \
108
348
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
 
349
        gzip --best --to-stdout intro.8mandos \
 
350
                > $(MANDIR)/man8/intro.8mandos.gz
109
351
 
110
 
install-client: all doc /usr/share/initramfs-tools/hooks/.
111
 
        mkdir --mode=0755 --parents $(PREFIX)/lib/mandos $(CONFDIR) \
112
 
                $(MANDIR)/man8
113
 
        -mkdir --mode=0700 $(PREFIX)/lib/mandos/plugins.d
114
 
        chmod u=rwx,g=,o= $(PREFIX)/lib/mandos/plugins.d
115
 
        install --mode=0755 --target-directory=$(PREFIX)/lib/mandos \
116
 
                plugin-runner
117
 
        install --mode=0755 --target-directory=$(PREFIX)/sbin \
 
352
install-client-nokey: all doc
 
353
        install --directory $(LIBDIR)/mandos $(CONFDIR)
 
354
        install --directory --mode=u=rwx $(KEYDIR) \
 
355
                $(LIBDIR)/mandos/plugins.d
 
356
        if [ "$(CONFDIR)" != "$(LIBDIR)/mandos" ]; then \
 
357
                install --mode=u=rwx \
 
358
                        --directory "$(CONFDIR)/plugins.d"; \
 
359
        fi
 
360
        install --mode=u=rwx,go=rx --directory \
 
361
                "$(CONFDIR)/network-hooks.d"
 
362
        install --mode=u=rwx,go=rx \
 
363
                --target-directory=$(LIBDIR)/mandos plugin-runner
 
364
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
118
365
                mandos-keygen
119
 
        install --mode=0755 \
120
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
366
        install --mode=u=rwx,go=rx \
 
367
                --target-directory=$(LIBDIR)/mandos/plugins.d \
121
368
                plugins.d/password-prompt
122
 
        install --mode=4755 \
123
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
124
 
                plugins.d/password-request
 
369
        install --mode=u=rwxs,go=rx \
 
370
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
371
                plugins.d/mandos-client
 
372
        install --mode=u=rwxs,go=rx \
 
373
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
374
                plugins.d/usplash
 
375
        install --mode=u=rwxs,go=rx \
 
376
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
377
                plugins.d/splashy
 
378
        install --mode=u=rwxs,go=rx \
 
379
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
380
                plugins.d/askpass-fifo
 
381
        install --mode=u=rwxs,go=rx \
 
382
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
383
                plugins.d/plymouth
125
384
        install initramfs-tools-hook \
126
 
                /usr/share/initramfs-tools/hooks/mandos
127
 
        install initramfs-tools-hook-conf \
128
 
                /usr/share/initramfs-tools/conf-hooks.d/mandos
 
385
                $(INITRAMFSTOOLS)/hooks/mandos
 
386
        install --mode=u=rw,go=r initramfs-tools-hook-conf \
 
387
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos
129
388
        install initramfs-tools-script \
130
 
                /usr/share/initramfs-tools/scripts/local-top/mandos
 
389
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos
 
390
        install --mode=u=rw,go=r plugin-runner.conf $(CONFDIR)
131
391
        gzip --best --to-stdout mandos-keygen.8 \
132
392
                > $(MANDIR)/man8/mandos-keygen.8.gz
133
393
        gzip --best --to-stdout plugin-runner.8mandos \
134
394
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
 
395
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
 
396
                > $(MANDIR)/man8/mandos-client.8mandos.gz
135
397
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
136
398
                > $(MANDIR)/man8/password-prompt.8mandos.gz
137
 
        gzip --best --to-stdout plugins.d/password-request.8mandos \
138
 
                > $(MANDIR)/man8/password-request.8mandos.gz
139
 
        -$(PREFIX)/sbin/mandos-keygen
 
399
        gzip --best --to-stdout plugins.d/usplash.8mandos \
 
400
                > $(MANDIR)/man8/usplash.8mandos.gz
 
401
        gzip --best --to-stdout plugins.d/splashy.8mandos \
 
402
                > $(MANDIR)/man8/splashy.8mandos.gz
 
403
        gzip --best --to-stdout plugins.d/askpass-fifo.8mandos \
 
404
                > $(MANDIR)/man8/askpass-fifo.8mandos.gz
 
405
        gzip --best --to-stdout plugins.d/plymouth.8mandos \
 
406
                > $(MANDIR)/man8/plymouth.8mandos.gz
 
407
 
 
408
install-client: install-client-nokey
 
409
# Post-installation stuff
 
410
        -$(PREFIX)/sbin/mandos-keygen --dir "$(KEYDIR)"
140
411
        update-initramfs -k all -u
 
412
        echo "Now run mandos-keygen --password --dir $(KEYDIR)"
141
413
 
142
414
uninstall: uninstall-server uninstall-client
143
415
 
144
 
uninstall-server: $(PREFIX)/sbin/mandos
 
416
uninstall-server:
145
417
        -rm --force $(PREFIX)/sbin/mandos \
 
418
                $(PREFIX)/sbin/mandos-ctl \
 
419
                $(PREFIX)/sbin/mandos-monitor \
146
420
                $(MANDIR)/man8/mandos.8.gz \
 
421
                $(MANDIR)/man8/mandos-monitor.8.gz \
 
422
                $(MANDIR)/man8/mandos-ctl.8.gz \
147
423
                $(MANDIR)/man5/mandos.conf.5.gz \
148
424
                $(MANDIR)/man5/mandos-clients.conf.5.gz
 
425
        update-rc.d -f mandos remove
149
426
        -rmdir $(CONFDIR)
150
427
 
151
428
uninstall-client:
152
429
# Refuse to uninstall client if /etc/crypttab is explicitly configured
153
430
# to use it.
154
431
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
155
 
                /etc/crypttab
 
432
                $(DESTDIR)/etc/crypttab
156
433
        -rm --force $(PREFIX)/sbin/mandos-keygen \
157
 
                $(PREFIX)/lib/mandos/plugin-runner \
158
 
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
159
 
                $(PREFIX)/lib/mandos/plugins.d/password-request \
160
 
                /usr/share/initramfs-tools/hooks/mandos \
161
 
                /usr/share/initramfs-tools/conf-hooks.d/mandos \
 
434
                $(LIBDIR)/mandos/plugin-runner \
 
435
                $(LIBDIR)/mandos/plugins.d/password-prompt \
 
436
                $(LIBDIR)/mandos/plugins.d/mandos-client \
 
437
                $(LIBDIR)/mandos/plugins.d/usplash \
 
438
                $(LIBDIR)/mandos/plugins.d/splashy \
 
439
                $(LIBDIR)/mandos/plugins.d/askpass-fifo \
 
440
                $(LIBDIR)/mandos/plugins.d/plymouth \
 
441
                $(INITRAMFSTOOLS)/hooks/mandos \
 
442
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
 
443
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
 
444
                $(MANDIR)/man8/mandos-keygen.8.gz \
162
445
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
163
 
                $(MANDIR)/man8/mandos-keygen.8.gz \
 
446
                $(MANDIR)/man8/mandos-client.8mandos.gz
164
447
                $(MANDIR)/man8/password-prompt.8mandos.gz \
165
 
                $(MANDIR)/man8/password-request.8mandos.gz
166
 
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
167
 
                 $(PREFIX)/lib/mandos $(CONFDIR)
 
448
                $(MANDIR)/man8/usplash.8mandos.gz \
 
449
                $(MANDIR)/man8/splashy.8mandos.gz \
 
450
                $(MANDIR)/man8/askpass-fifo.8mandos.gz \
 
451
                $(MANDIR)/man8/plymouth.8mandos.gz \
 
452
        -rmdir $(LIBDIR)/mandos/plugins.d $(CONFDIR)/plugins.d \
 
453
                 $(LIBDIR)/mandos $(CONFDIR) $(KEYDIR)
168
454
        update-initramfs -k all -u
169
455
 
170
456
purge: purge-server purge-client
171
457
 
172
458
purge-server: uninstall-server
173
 
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf
 
459
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf \
 
460
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
 
461
                $(DESTDIR)/etc/default/mandos \
 
462
                $(DESTDIR)/etc/init.d/mandos \
 
463
                $(SYSTEMD)/mandos.service \
 
464
                $(DESTDIR)/run/mandos.pid \
 
465
                $(DESTDIR)/var/run/mandos.pid
174
466
        -rmdir $(CONFDIR)
175
467
 
176
468
purge-client: uninstall-client
177
 
        -rm --force $(CONFDIR)/seckey.txt $(CONFDIR)/pubkey.txt
178
 
        -rmdir $(CONFDIR) $(CONFDIR)/plugins.d
 
469
        -shred --remove $(KEYDIR)/seckey.txt
 
470
        -rm --force $(CONFDIR)/plugin-runner.conf \
 
471
                $(KEYDIR)/pubkey.txt $(KEYDIR)/seckey.txt
 
472
        -rmdir $(KEYDIR) $(CONFDIR)/plugins.d $(CONFDIR)