/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to Makefile

  • Committer: Teddy Hogeborn
  • Date: 2008-12-10 01:26:02 UTC
  • mfrom: (237.1.2 mandos)
  • Revision ID: teddy@fukt.bsnet.se-20081210012602-vhz3h75xkj24t340
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
 
6
        -Wconversion -Wstrict-prototypes -Wold-style-definition \
 
7
        -Wpacked -Wnested-externs -Winline -Wvolatile-register-var
 
8
#       -Wunreachable-code 
13
9
#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
 
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
43
14
#COVERAGE=--coverage
44
 
OPTIMIZE=-Os -fno-strict-aliasing
45
 
LANGUAGE=-std=gnu11
 
15
OPTIMIZE=-Os
 
16
LANGUAGE=-std=gnu99
46
17
htmldir=man
47
 
version=1.7.1
 
18
version=1.0.2
48
19
SED=sed
49
20
 
50
 
USER=$(firstword $(subst :, ,$(shell getent passwd _mandos || getent passwd nobody || echo 65534)))
51
 
GROUP=$(firstword $(subst :, ,$(shell getent group _mandos || getent group nobody || echo 65534)))
52
 
 
53
21
## Use these settings for a traditional /usr/local install
54
22
# PREFIX=$(DESTDIR)/usr/local
55
23
# CONFDIR=$(DESTDIR)/etc/mandos
56
24
# KEYDIR=$(DESTDIR)/etc/mandos/keys
57
25
# MANDIR=$(PREFIX)/man
58
26
# INITRAMFSTOOLS=$(DESTDIR)/etc/initramfs-tools
59
 
# STATEDIR=$(DESTDIR)/var/lib/mandos
60
 
# LIBDIR=$(PREFIX)/lib
61
27
##
62
28
 
63
29
## These settings are for a package-type install
66
32
KEYDIR=$(DESTDIR)/etc/keys/mandos
67
33
MANDIR=$(PREFIX)/share/man
68
34
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
35
##
80
36
 
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)
 
37
GNUTLS_CFLAGS=$(shell libgnutls-config --cflags)
 
38
GNUTLS_LIBS=$(shell libgnutls-config --libs)
85
39
AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
86
40
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)
 
41
GPGME_CFLAGS=$(shell gpgme-config --cflags)
 
42
GPGME_LIBS=$(shell gpgme-config --libs)
92
43
 
93
44
# 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))
 
45
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
 
46
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS) \
 
47
        -DVERSION='"$(version)"'
 
48
LDFLAGS=$(COVERAGE) $(LINK_FORTIFY)
98
49
 
99
50
# Commands to format a DocBook <refentry> document into a manual page
100
 
DOCBOOKTOMAN=$(strip cd $(dir $<); xsltproc --nonet --xinclude \
 
51
DOCBOOKTOMAN=cd $(dir $<); xsltproc --nonet --xinclude \
101
52
        --param man.charmap.use.subset          0 \
102
53
        --param make.year.ranges                1 \
103
54
        --param make.single.year.ranges         1 \
104
55
        --param man.output.quietly              1 \
105
56
        --param man.authors.section.enabled     0 \
106
 
        /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
 
57
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
107
58
        $(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)
 
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'
112
62
 
113
 
DOCBOOKTOHTML=$(strip xsltproc --nonet --xinclude \
 
63
DOCBOOKTOHTML=xsltproc --nonet --xinclude \
114
64
        --param make.year.ranges                1 \
115
65
        --param make.single.year.ranges         1 \
116
66
        --param man.output.quietly              1 \
118
68
        --param citerefentry.link               1 \
119
69
        --output $@ \
120
70
        /usr/share/xml/docbook/stylesheet/nwalsh/xhtml/docbook.xsl \
121
 
        $<; $(HTMLPOST) $@)
 
71
        $<; $(HTMLPOST) $@
122
72
# Fix citerefentry links
123
73
HTMLPOST=$(SED) --in-place \
124
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'
125
75
 
126
76
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 \
 
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 \
134
81
        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
 
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
138
85
 
139
86
htmldocs=$(addsuffix .xhtml,$(DOCS))
140
87
 
161
108
%.8mandos.xhtml: %.xml common.ent legalnotice.xml
162
109
        $(DOCBOOKTOHTML)
163
110
 
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
111
mandos.8: mandos.xml common.ent mandos-options.xml overview.xml \
170
112
                legalnotice.xml
171
113
        $(DOCBOOKTOMAN)
180
122
                 legalnotice.xml
181
123
        $(DOCBOOKTOHTML)
182
124
 
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
125
mandos.conf.5: mandos.conf.xml common.ent mandos-options.xml \
198
126
                legalnotice.xml
199
127
        $(DOCBOOKTOMAN)
221
149
 
222
150
# Update all these files with version number $(version)
223
151
common.ent: Makefile
224
 
        $(strip $(SED) --in-place \
225
 
                --expression='s/^\(<!ENTITY version "\)[^"]*">$$/\1$(version)">/' \
226
 
                $@)
 
152
        $(SED) --in-place \
 
153
                --expression='s/^\(<ENTITY VERSION "\)[^"]*">$$/\1$(version)"/' \
 
154
                $@
227
155
 
228
156
mandos: Makefile
229
 
        $(strip $(SED) --in-place \
 
157
        $(SED) --in-place \
230
158
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
231
 
                $@)
 
159
                $@
232
160
 
233
161
mandos-keygen: Makefile
234
 
        $(strip $(SED) --in-place \
 
162
        $(SED) --in-place \
235
163
                --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
 
                $@)
 
164
                $@
247
165
 
248
166
mandos.lsm: Makefile
249
 
        $(strip $(SED) --in-place \
 
167
        $(SED) --in-place \
250
168
                --expression='s/^\(Version:\).*/\1\t$(version)/' \
251
 
                $@)
252
 
        $(strip $(SED) --in-place \
 
169
                $@
 
170
        $(SED) --in-place \
253
171
                --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
 
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
272
181
 
273
182
clean:
274
183
        -rm --force $(CPROGS) $(objects) $(htmldocs) $(DOCS) core
276
185
distclean: clean
277
186
mostlyclean: clean
278
187
maintainer-clean: clean
279
 
        -rm --force --recursive keydir confdir statedir
 
188
        -rm --force --recursive keydir confdir
280
189
 
281
190
check:  all
282
191
        ./mandos --check
283
 
        ./mandos-ctl --check
284
192
 
285
193
# Run the client with a local config and key
286
194
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
300
195
        ./plugin-runner --plugin-dir=plugins.d \
301
 
                --plugin-helper-dir=plugin-helpers \
302
196
                --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)
 
197
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt
306
198
 
307
199
# Used by run-client
308
200
keydir/seckey.txt keydir/pubkey.txt: mandos-keygen
310
202
        ./mandos-keygen --dir keydir --force
311
203
 
312
204
# 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)
 
205
run-server: confdir/mandos.conf confdir/clients.conf
 
206
        ./mandos --debug --configdir=confdir
316
207
 
317
208
# Used by run-server
318
209
confdir/mandos.conf: mandos.conf
322
213
        install --directory confdir
323
214
        install --mode=u=rw $< $@
324
215
# Add a client password
325
 
        ./mandos-keygen --dir keydir --password --no-ssh >> $@
326
 
statedir:
327
 
        install --directory statedir
 
216
        ./mandos-keygen --dir keydir --password >> $@
328
217
 
329
218
install: install-server install-client-nokey
330
219
 
335
224
 
336
225
install-server: doc
337
226
        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
227
        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
228
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
350
229
                mandos.conf
351
230
        install --mode=u=rw --target-directory=$(CONFDIR) \
352
231
                clients.conf
353
 
        install --mode=u=rw,go=r dbus-mandos.conf \
354
 
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
355
232
        install --mode=u=rwx,go=rx init.d-mandos \
356
233
                $(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
234
        install --mode=u=rw,go=r default-mandos \
361
235
                $(DESTDIR)/etc/default/mandos
362
236
        if [ -z $(DESTDIR) ]; then \
364
238
        fi
365
239
        gzip --best --to-stdout mandos.8 \
366
240
                > $(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
241
        gzip --best --to-stdout mandos.conf.5 \
372
242
                > $(MANDIR)/man5/mandos.conf.5.gz
373
243
        gzip --best --to-stdout mandos-clients.conf.5 \
374
244
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
375
 
        gzip --best --to-stdout intro.8mandos \
376
 
                > $(MANDIR)/man8/intro.8mandos.gz
377
245
 
378
246
install-client-nokey: all doc
379
 
        install --directory $(LIBDIR)/mandos $(CONFDIR)
 
247
        install --directory $(PREFIX)/lib/mandos $(CONFDIR)
380
248
        install --directory --mode=u=rwx $(KEYDIR) \
381
 
                $(LIBDIR)/mandos/plugins.d \
382
 
                $(LIBDIR)/mandos/plugin-helpers
383
 
        if [ "$(CONFDIR)" != "$(LIBDIR)/mandos" ]; then \
 
249
                $(PREFIX)/lib/mandos/plugins.d
 
250
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
384
251
                install --mode=u=rwx \
385
252
                        --directory "$(CONFDIR)/plugins.d"; \
386
 
                install --directory "$(CONFDIR)/plugin-helpers"; \
387
253
        fi
388
 
        install --mode=u=rwx,go=rx --directory \
389
 
                "$(CONFDIR)/network-hooks.d"
390
254
        install --mode=u=rwx,go=rx \
391
 
                --target-directory=$(LIBDIR)/mandos plugin-runner
 
255
                --target-directory=$(PREFIX)/lib/mandos plugin-runner
392
256
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
393
257
                mandos-keygen
394
258
        install --mode=u=rwx,go=rx \
395
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
259
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
396
260
                plugins.d/password-prompt
397
261
        install --mode=u=rwxs,go=rx \
398
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
262
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
399
263
                plugins.d/mandos-client
400
264
        install --mode=u=rwxs,go=rx \
401
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
265
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
402
266
                plugins.d/usplash
403
267
        install --mode=u=rwxs,go=rx \
404
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
268
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
405
269
                plugins.d/splashy
406
270
        install --mode=u=rwxs,go=rx \
407
 
                --target-directory=$(LIBDIR)/mandos/plugins.d \
 
271
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
408
272
                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
415
273
        install initramfs-tools-hook \
416
274
                $(INITRAMFSTOOLS)/hooks/mandos
417
275
        install --mode=u=rw,go=r initramfs-tools-hook-conf \
418
276
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos
419
277
        install initramfs-tools-script \
420
 
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos
 
278
                $(INITRAMFSTOOLS)/scripts/local-top/mandos
421
279
        install --mode=u=rw,go=r plugin-runner.conf $(CONFDIR)
422
280
        gzip --best --to-stdout mandos-keygen.8 \
423
281
                > $(MANDIR)/man8/mandos-keygen.8.gz
424
282
        gzip --best --to-stdout plugin-runner.8mandos \
425
283
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
 
284
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
 
285
                > $(MANDIR)/man8/password-prompt.8mandos.gz
426
286
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
427
287
                > $(MANDIR)/man8/mandos-client.8mandos.gz
428
 
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
429
 
                > $(MANDIR)/man8/password-prompt.8mandos.gz
430
288
        gzip --best --to-stdout plugins.d/usplash.8mandos \
431
289
                > $(MANDIR)/man8/usplash.8mandos.gz
432
290
        gzip --best --to-stdout plugins.d/splashy.8mandos \
433
291
                > $(MANDIR)/man8/splashy.8mandos.gz
434
292
        gzip --best --to-stdout plugins.d/askpass-fifo.8mandos \
435
293
                > $(MANDIR)/man8/askpass-fifo.8mandos.gz
436
 
        gzip --best --to-stdout plugins.d/plymouth.8mandos \
437
 
                > $(MANDIR)/man8/plymouth.8mandos.gz
438
294
 
439
295
install-client: install-client-nokey
440
296
# Post-installation stuff
446
302
 
447
303
uninstall-server:
448
304
        -rm --force $(PREFIX)/sbin/mandos \
449
 
                $(PREFIX)/sbin/mandos-ctl \
450
 
                $(PREFIX)/sbin/mandos-monitor \
451
305
                $(MANDIR)/man8/mandos.8.gz \
452
 
                $(MANDIR)/man8/mandos-monitor.8.gz \
453
 
                $(MANDIR)/man8/mandos-ctl.8.gz \
454
306
                $(MANDIR)/man5/mandos.conf.5.gz \
455
307
                $(MANDIR)/man5/mandos-clients.conf.5.gz
456
308
        update-rc.d -f mandos remove
462
314
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
463
315
                $(DESTDIR)/etc/crypttab
464
316
        -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 \
 
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 \
472
323
                $(INITRAMFSTOOLS)/hooks/mandos \
473
324
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
474
 
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
 
325
                $(INITRAMFSTOOLS)/scripts/local-top/mandos \
 
326
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
475
327
                $(MANDIR)/man8/mandos-keygen.8.gz \
476
 
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
477
 
                $(MANDIR)/man8/mandos-client.8mandos.gz
478
328
                $(MANDIR)/man8/password-prompt.8mandos.gz \
479
329
                $(MANDIR)/man8/usplash.8mandos.gz \
480
330
                $(MANDIR)/man8/splashy.8mandos.gz \
481
331
                $(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)
 
332
                $(MANDIR)/man8/mandos-client.8mandos.gz
 
333
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
 
334
                 $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
485
335
        update-initramfs -k all -u
486
336
 
487
337
purge: purge-server purge-client
488
338
 
489
339
purge-server: uninstall-server
490
340
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf \
491
 
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
492
341
                $(DESTDIR)/etc/default/mandos \
493
342
                $(DESTDIR)/etc/init.d/mandos \
494
 
                $(SYSTEMD)/mandos.service \
495
 
                $(DESTDIR)/run/mandos.pid \
496
343
                $(DESTDIR)/var/run/mandos.pid
497
344
        -rmdir $(CONFDIR)
498
345