/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: 2008-08-29 05:53:59 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080829055359-wkdasnyxtylmnxus
* mandos.xml (EXAMPLE): Replaced all occurences of command name with
                        "&COMMANDNAME;".

* plugins.d/password-prompt.c (main): Improved some documentation
                                      strings.  Do perror() of
                                      tcgetattr() fails.  Add debug
                                      output if interrupted by signal.
                                      Loop over write() instead of
                                      using fwrite() when outputting
                                      password.  Add debug output if
                                      getline() returns 0, unless it
                                      was caused by a signal.  Add
                                      exit status code to debug
                                      output.

* plugins.d/password-prompt.xml: Changed all single quotes to double
                                 quotes for consistency.  Removed
                                 <?xml-stylesheet>.
  (ENTITY TIMESTAMP): New.  Automatically updated by Emacs time-stamp
                      by using Emacs local variables.
  (/refentry/refentryinfo/title): Changed to "Mandos Manual".
  (/refentry/refentryinfo/productname): Changed to "Mandos".
  (/refentry/refentryinfo/date): New; set to "&TIMESTAMP;".
  (/refentry/refentryinfo/copyright): Split copyright holders.
  (/refentry/refnamediv/refpurpose): Improved wording.
  (SYNOPSIS): Fix to use correct markup.  Add short options.
  (DESCRIPTION, OPTIONS): Improved wording.
  (OPTIONS): Improved wording.  Use more correct markup.  Document
             short options.
  (EXIT STATUS): Add text.
  (ENVIRONMENT): Document use of "cryptsource" and "crypttarget".
  (FILES): REMOVED.
  (BUGS): Add text.
  (EXAMPLE): Added some examples.
  (SECURITY): Added text.
  (SEE ALSO): Remove reference to mandos(8).  Add reference to
              crypttab(5).

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