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