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