/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

First version of a somewhat complete D-Bus server interface.  Also
change user/group name to "_mandos".

* debian/mandos.postinst: Rename old "mandos" user and group to
                          "_mandos"; create "_mandos" user and group
                          if none exist.
* debian/mandos-client.postinst: - '' -

* initramfs-tools-hook: Try "_mandos" before "mandos" as user and
                        group name.

* mandos (_datetime_to_dbus_struct): New; was previously local.
  (Client.started): Renamed to "last_started".  All users changed.
  (Client.started): New; boolean.
  (Client.dbus_object_path): New.
  (Client.check_command): Renamed to "checker_command".  All users
                          changed.
  (Client.__init__): Set and use "self.dbus_object_path".  Set
                     "self.started".
  (Client.start): Update "self.started".  Emit "self.PropertyChanged"
                  signals for both "started" and "last_started".
  (Client.stop): Update "self.started".  Emit "self.PropertyChanged"
                 signal for "started".
  (Client.checker_callback): Take additional "command" argument.  All
                             callers changed. Emit
                             "self.PropertyChanged" signal.
  (Client.bump_timeout): Emit "self.PropertyChanged" signal for
                         "last_checked_ok".
  (Client.start_checker): Emit "self.PropertyChanged" signal for
                          "checker_running".
  (Client.stop_checker): Emit "self.PropertyChanged" signal for
                         "checker_running".
  (Client.still_valid): Bug fix: use "getattr(self, started, False)"
                        instead of "self.started" in case this client
                        object is so new that the "started" attribute
                        has not been created yet.
  (Client.IntervalChanged, Client.CheckerIsRunning, Client.GetChecker,
  Client.GetCreated, Client.GetFingerprint, Client.GetHost,
  Client.GetInterval, Client.GetName, Client.GetStarted,
  Client.GetTimeout, Client.StateChanged, Client.TimeoutChanged):
  Removed; all callers changed.
  (Client.CheckerCompleted): Add "condition" and "command" arguments.
                             All callers changed.
  (Client.GetAllProperties, Client.PropertyChanged): New.
  (Client.StillValid): Renamed to "IsStillValid".
  (Client.StartChecker): Changed to its own function to avoid the
                         return value from "Client.start_checker()".
  (Client.Stop): Changed to its own function to avoid the return value
                 from "Client.stop()".
  (main): Try "_mandos" before "mandos" as user and group name.
          Removed inner function "remove_from_clients".  New inner
          class "MandosServer".

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 -Winline -Wvolatile-register-var
 
8
#       -Wunreachable-code 
 
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 -fPIE -pie
 
13
LINK_FORTIFY=-z relro -pie
39
14
#COVERAGE=--coverage
40
 
OPTIMIZE=-Os -fno-strict-aliasing
41
 
LANGUAGE=-std=gnu11
 
15
OPTIMIZE=-Os
 
16
LANGUAGE=-std=gnu99
42
17
htmldir=man
43
 
version=1.7.11
 
18
version=1.0.2
44
19
SED=sed
45
20
 
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
21
## Use these settings for a traditional /usr/local install
50
22
# PREFIX=$(DESTDIR)/usr/local
51
23
# CONFDIR=$(DESTDIR)/etc/mandos
52
24
# KEYDIR=$(DESTDIR)/etc/mandos/keys
53
25
# MANDIR=$(PREFIX)/man
54
26
# INITRAMFSTOOLS=$(DESTDIR)/etc/initramfs-tools
55
 
# STATEDIR=$(DESTDIR)/var/lib/mandos
56
 
# LIBDIR=$(PREFIX)/lib
57
27
##
58
28
 
59
29
## These settings are for a package-type install
62
32
KEYDIR=$(DESTDIR)/etc/keys/mandos
63
33
MANDIR=$(PREFIX)/share/man
64
34
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
35
##
76
36
 
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)
 
37
GNUTLS_CFLAGS=$(shell libgnutls-config --cflags)
 
38
GNUTLS_LIBS=$(shell libgnutls-config --libs)
82
39
AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
83
40
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)
 
41
GPGME_CFLAGS=$(shell gpgme-config --cflags)
 
42
GPGME_LIBS=$(shell gpgme-config --libs)
89
43
 
90
44
# 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))
 
45
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
 
46
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS) \
 
47
        -DVERSION='"$(version)"'
 
48
LDFLAGS=$(COVERAGE) $(LINK_FORTIFY)
95
49
 
96
50
# Commands to format a DocBook <refentry> document into a manual page
97
 
DOCBOOKTOMAN=$(strip cd $(dir $<); xsltproc --nonet --xinclude \
 
51
DOCBOOKTOMAN=cd $(dir $<); xsltproc --nonet --xinclude \
98
52
        --param man.charmap.use.subset          0 \
99
53
        --param make.year.ranges                1 \
100
54
        --param make.single.year.ranges         1 \
101
55
        --param man.output.quietly              1 \
102
56
        --param man.authors.section.enabled     0 \
103
 
        /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
 
57
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
104
58
        $(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)
 
59
        $(MANPOST) $(notdir $@)
 
60
# DocBook-to-man post-processing to fix a '\n' escape bug
 
61
MANPOST=$(SED) --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
109
62
 
110
 
DOCBOOKTOHTML=$(strip xsltproc --nonet --xinclude \
 
63
DOCBOOKTOHTML=xsltproc --nonet --xinclude \
111
64
        --param make.year.ranges                1 \
112
65
        --param make.single.year.ranges         1 \
113
66
        --param man.output.quietly              1 \
115
68
        --param citerefentry.link               1 \
116
69
        --output $@ \
117
70
        /usr/share/xml/docbook/stylesheet/nwalsh/xhtml/docbook.xsl \
118
 
        $<; $(HTMLPOST) $@)
 
71
        $<; $(HTMLPOST) $@
119
72
# Fix citerefentry links
120
73
HTMLPOST=$(SED) --in-place \
121
74
        --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
75
 
123
76
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 \
 
77
        plugins.d/usplash plugins.d/splashy plugins.d/askpass-fifo
 
78
CPROGS=plugin-runner $(PLUGINS)
 
79
PROGS=mandos mandos-keygen $(CPROGS)
 
80
DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
131
81
        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
 
82
        plugins.d/password-prompt.8mandos mandos.conf.5 \
 
83
        plugins.d/usplash.8mandos plugins.d/splashy.8mandos \
 
84
        plugins.d/askpass-fifo.8mandos mandos-clients.conf.5
135
85
 
136
86
htmldocs=$(addsuffix .xhtml,$(DOCS))
137
87
 
158
108
%.8mandos.xhtml: %.xml common.ent legalnotice.xml
159
109
        $(DOCBOOKTOHTML)
160
110
 
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
111
mandos.8: mandos.xml common.ent mandos-options.xml overview.xml \
167
112
                legalnotice.xml
168
113
        $(DOCBOOKTOMAN)
177
122
                 legalnotice.xml
178
123
        $(DOCBOOKTOHTML)
179
124
 
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
125
mandos.conf.5: mandos.conf.xml common.ent mandos-options.xml \
195
126
                legalnotice.xml
196
127
        $(DOCBOOKTOMAN)
218
149
 
219
150
# Update all these files with version number $(version)
220
151
common.ent: Makefile
221
 
        $(strip $(SED) --in-place \
222
 
                --expression='s/^\(<!ENTITY version "\)[^"]*">$$/\1$(version)">/' \
223
 
                $@)
 
152
        $(SED) --in-place \
 
153
                --expression='s/^\(<ENTITY VERSION "\)[^"]*">$$/\1$(version)"/' \
 
154
                $@
224
155
 
225
156
mandos: Makefile
226
 
        $(strip $(SED) --in-place \
 
157
        $(SED) --in-place \
227
158
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
228
 
                $@)
 
159
                $@
229
160
 
230
161
mandos-keygen: Makefile
231
 
        $(strip $(SED) --in-place \
 
162
        $(SED) --in-place \
232
163
                --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
 
                $@)
 
164
                $@
244
165
 
245
166
mandos.lsm: Makefile
246
 
        $(strip $(SED) --in-place \
 
167
        $(SED) --in-place \
247
168
                --expression='s/^\(Version:\).*/\1\t$(version)/' \
248
 
                $@)
249
 
        $(strip $(SED) --in-place \
 
169
                $@
 
170
        $(SED) --in-place \
250
171
                --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
 
172
                $@
 
173
 
 
174
plugins.d/mandos-client: plugins.d/mandos-client.o
 
175
        $(LINK.o) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) \
 
176
                $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
 
177
 
 
178
.PHONY : all doc html clean distclean run-client run-server install \
 
179
        install-server install-client uninstall uninstall-server \
 
180
        uninstall-client purge purge-server purge-client
269
181
 
270
182
clean:
271
183
        -rm --force $(CPROGS) $(objects) $(htmldocs) $(DOCS) core
273
185
distclean: clean
274
186
mostlyclean: clean
275
187
maintainer-clean: clean
276
 
        -rm --force --recursive keydir confdir statedir
 
188
        -rm --force --recursive keydir confdir
277
189
 
278
190
check:  all
279
191
        ./mandos --check
280
 
        ./mandos-ctl --check
281
192
 
282
193
# Run the client with a local config and key
283
194
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.  The messages are caused by not running as root, but   #"
287
 
        @echo "# you should NOT run \"make run-client\" as root unless you also    #"
288
 
        @echo "# unpacked and compiled Mandos as root, which is NOT recommended. #"
289
 
        @echo "# From plugin-runner: setgid: Operation not permitted             #"
290
 
        @echo "#                     setuid: Operation not permitted             #"
291
 
        @echo "# From askpass-fifo:  mkfifo: Permission denied                   #"
292
 
        @echo "# From mandos-client:                                             #"
293
 
        @echo "#             Failed to raise privileges: Operation not permitted #"
294
 
        @echo "#             Warning: network hook \"*\" exited with status *      #"
295
 
        @echo "###################################################################"
296
 
# We set GNOME_KEYRING_CONTROL to block pam_gnome_keyring
297
195
        ./plugin-runner --plugin-dir=plugins.d \
298
 
                --plugin-helper-dir=plugin-helpers \
299
196
                --config-file=plugin-runner.conf \
300
 
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt,--network-hook-dir=network-hooks.d \
301
 
                --env-for=mandos-client:GNOME_KEYRING_CONTROL= \
302
 
                $(CLIENTARGS)
 
197
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt
303
198
 
304
199
# Used by run-client
305
200
keydir/seckey.txt keydir/pubkey.txt: mandos-keygen
307
202
        ./mandos-keygen --dir keydir --force
308
203
 
309
204
# Run the server with a local config
310
 
run-server: confdir/mandos.conf confdir/clients.conf statedir
311
 
        ./mandos --debug --no-dbus --configdir=confdir \
312
 
                --statedir=statedir $(SERVERARGS)
 
205
run-server: confdir/mandos.conf confdir/clients.conf
 
206
        ./mandos --debug --configdir=confdir
313
207
 
314
208
# Used by run-server
315
209
confdir/mandos.conf: mandos.conf
319
213
        install --directory confdir
320
214
        install --mode=u=rw $< $@
321
215
# Add a client password
322
 
        ./mandos-keygen --dir keydir --password --no-ssh >> $@
323
 
statedir:
324
 
        install --directory statedir
 
216
        ./mandos-keygen --dir keydir --password >> $@
325
217
 
326
218
install: install-server install-client-nokey
327
219
 
332
224
 
333
225
install-server: doc
334
226
        install --directory $(CONFDIR)
335
 
        if install --directory --mode=u=rwx --owner=$(USER) \
336
 
                --group=$(GROUP) $(STATEDIR); then \
337
 
                :; \
338
 
        elif install --directory --mode=u=rwx $(STATEDIR); then \
339
 
                chown -- $(USER):$(GROUP) $(STATEDIR) || :; \
340
 
        fi
341
 
        if [ "$(TMPFILES)" != "$(DESTDIR)" -a -d "$(TMPFILES)" ]; then \
342
 
                install --mode=u=rw,go=r tmpfiles.d-mandos.conf \
343
 
                        $(TMPFILES)/mandos.conf; \
344
 
        fi
345
227
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
346
 
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
347
 
                mandos-ctl
348
 
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
349
 
                mandos-monitor
350
228
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
351
229
                mandos.conf
352
230
        install --mode=u=rw --target-directory=$(CONFDIR) \
353
231
                clients.conf
354
 
        install --mode=u=rw,go=r dbus-mandos.conf \
355
 
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
356
232
        install --mode=u=rwx,go=rx init.d-mandos \
357
233
                $(DESTDIR)/etc/init.d/mandos
358
 
        if [ "$(SYSTEMD)" != "$(DESTDIR)" -a -d "$(SYSTEMD)" ]; then \
359
 
                install --mode=u=rw,go=r mandos.service $(SYSTEMD); \
360
 
        fi
361
234
        install --mode=u=rw,go=r default-mandos \
362
235
                $(DESTDIR)/etc/default/mandos
363
236
        if [ -z $(DESTDIR) ]; then \
365
238
        fi
366
239
        gzip --best --to-stdout mandos.8 \
367
240
                > $(MANDIR)/man8/mandos.8.gz
368
 
        gzip --best --to-stdout mandos-monitor.8 \
369
 
                > $(MANDIR)/man8/mandos-monitor.8.gz
370
 
        gzip --best --to-stdout mandos-ctl.8 \
371
 
                > $(MANDIR)/man8/mandos-ctl.8.gz
372
241
        gzip --best --to-stdout mandos.conf.5 \
373
242
                > $(MANDIR)/man5/mandos.conf.5.gz
374
243
        gzip --best --to-stdout mandos-clients.conf.5 \
375
244
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
376
 
        gzip --best --to-stdout intro.8mandos \
377
 
                > $(MANDIR)/man8/intro.8mandos.gz
378
245
 
379
246
install-client-nokey: all doc
380
 
        install --directory $(LIBDIR)/mandos $(CONFDIR)
 
247
        install --directory $(PREFIX)/lib/mandos $(CONFDIR)
381
248
        install --directory --mode=u=rwx $(KEYDIR) \
382
 
                $(LIBDIR)/mandos/plugins.d \
383
 
                $(LIBDIR)/mandos/plugin-helpers
384
 
        if [ "$(CONFDIR)" != "$(LIBDIR)/mandos" ]; then \
 
249
                $(PREFIX)/lib/mandos/plugins.d
 
250
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
385
251
                install --mode=u=rwx \
386
 
                        --directory "$(CONFDIR)/plugins.d" \
387
 
                        "$(CONFDIR)/plugin-helpers"; \
 
252
                        --directory "$(CONFDIR)/plugins.d"; \
388
253
        fi
389
 
        install --mode=u=rwx,go=rx --directory \
390
 
                "$(CONFDIR)/network-hooks.d"
391
254
        install --mode=u=rwx,go=rx \
392
 
                --target-directory=$(LIBDIR)/mandos plugin-runner
 
255
                --target-directory=$(PREFIX)/lib/mandos plugin-runner
393
256
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
394
257
                mandos-keygen
395
258
        install --mode=u=rwx,go=rx \
396
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
259
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
397
260
                plugins.d/password-prompt
398
261
        install --mode=u=rwxs,go=rx \
399
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
262
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
400
263
                plugins.d/mandos-client
401
264
        install --mode=u=rwxs,go=rx \
402
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
265
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
403
266
                plugins.d/usplash
404
267
        install --mode=u=rwxs,go=rx \
405
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
268
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
406
269
                plugins.d/splashy
407
270
        install --mode=u=rwxs,go=rx \
408
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
271
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
409
272
                plugins.d/askpass-fifo
410
 
        install --mode=u=rwxs,go=rx \
411
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
412
 
                plugins.d/plymouth
413
 
        install --mode=u=rwx,go=rx \
414
 
                --target-directory=$(LIBDIR)/mandos/plugin-helpers \
415
 
                plugin-helpers/mandos-client-iprouteadddel
416
273
        install initramfs-tools-hook \
417
274
                $(INITRAMFSTOOLS)/hooks/mandos
418
275
        install --mode=u=rw,go=r initramfs-tools-hook-conf \
419
276
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos
420
277
        install initramfs-tools-script \
421
 
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos
 
278
                $(INITRAMFSTOOLS)/scripts/local-top/mandos
422
279
        install --mode=u=rw,go=r plugin-runner.conf $(CONFDIR)
423
280
        gzip --best --to-stdout mandos-keygen.8 \
424
281
                > $(MANDIR)/man8/mandos-keygen.8.gz
425
282
        gzip --best --to-stdout plugin-runner.8mandos \
426
283
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
 
284
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
 
285
                > $(MANDIR)/man8/password-prompt.8mandos.gz
427
286
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
428
287
                > $(MANDIR)/man8/mandos-client.8mandos.gz
429
 
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
430
 
                > $(MANDIR)/man8/password-prompt.8mandos.gz
431
288
        gzip --best --to-stdout plugins.d/usplash.8mandos \
432
289
                > $(MANDIR)/man8/usplash.8mandos.gz
433
290
        gzip --best --to-stdout plugins.d/splashy.8mandos \
434
291
                > $(MANDIR)/man8/splashy.8mandos.gz
435
292
        gzip --best --to-stdout plugins.d/askpass-fifo.8mandos \
436
293
                > $(MANDIR)/man8/askpass-fifo.8mandos.gz
437
 
        gzip --best --to-stdout plugins.d/plymouth.8mandos \
438
 
                > $(MANDIR)/man8/plymouth.8mandos.gz
439
294
 
440
295
install-client: install-client-nokey
441
296
# Post-installation stuff
447
302
 
448
303
uninstall-server:
449
304
        -rm --force $(PREFIX)/sbin/mandos \
450
 
                $(PREFIX)/sbin/mandos-ctl \
451
 
                $(PREFIX)/sbin/mandos-monitor \
452
305
                $(MANDIR)/man8/mandos.8.gz \
453
 
                $(MANDIR)/man8/mandos-monitor.8.gz \
454
 
                $(MANDIR)/man8/mandos-ctl.8.gz \
455
306
                $(MANDIR)/man5/mandos.conf.5.gz \
456
307
                $(MANDIR)/man5/mandos-clients.conf.5.gz
457
308
        update-rc.d -f mandos remove
463
314
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
464
315
                $(DESTDIR)/etc/crypttab
465
316
        -rm --force $(PREFIX)/sbin/mandos-keygen \
466
 
                $(LIBDIR)/mandos/plugin-runner \
467
 
                $(LIBDIR)/mandos/plugins.d/password-prompt \
468
 
                $(LIBDIR)/mandos/plugins.d/mandos-client \
469
 
                $(LIBDIR)/mandos/plugins.d/usplash \
470
 
                $(LIBDIR)/mandos/plugins.d/splashy \
471
 
                $(LIBDIR)/mandos/plugins.d/askpass-fifo \
472
 
                $(LIBDIR)/mandos/plugins.d/plymouth \
 
317
                $(PREFIX)/lib/mandos/plugin-runner \
 
318
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
 
319
                $(PREFIX)/lib/mandos/plugins.d/mandos-client \
 
320
                $(PREFIX)/lib/mandos/plugins.d/usplash \
 
321
                $(PREFIX)/lib/mandos/plugins.d/splashy \
 
322
                $(PREFIX)/lib/mandos/plugins.d/askpass-fifo \
473
323
                $(INITRAMFSTOOLS)/hooks/mandos \
474
324
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
475
 
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
 
325
                $(INITRAMFSTOOLS)/scripts/local-top/mandos \
 
326
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
476
327
                $(MANDIR)/man8/mandos-keygen.8.gz \
477
 
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
478
 
                $(MANDIR)/man8/mandos-client.8mandos.gz
479
328
                $(MANDIR)/man8/password-prompt.8mandos.gz \
480
329
                $(MANDIR)/man8/usplash.8mandos.gz \
481
330
                $(MANDIR)/man8/splashy.8mandos.gz \
482
331
                $(MANDIR)/man8/askpass-fifo.8mandos.gz \
483
 
                $(MANDIR)/man8/plymouth.8mandos.gz \
484
 
        -rmdir $(LIBDIR)/mandos/plugins.d $(CONFDIR)/plugins.d \
485
 
                 $(LIBDIR)/mandos $(CONFDIR) $(KEYDIR)
 
332
                $(MANDIR)/man8/mandos-client.8mandos.gz
 
333
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
 
334
                 $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
486
335
        update-initramfs -k all -u
487
336
 
488
337
purge: purge-server purge-client
489
338
 
490
339
purge-server: uninstall-server
491
340
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf \
492
 
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
493
341
                $(DESTDIR)/etc/default/mandos \
494
342
                $(DESTDIR)/etc/init.d/mandos \
495
 
                $(SYSTEMD)/mandos.service \
496
 
                $(DESTDIR)/run/mandos.pid \
497
343
                $(DESTDIR)/var/run/mandos.pid
498
344
        -rmdir $(CONFDIR)
499
345