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