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