/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
1
WARN=-O -Wall -Wformat=2 -Winit-self -Wmissing-include-dirs \
2
2
        -Wswitch-default -Wswitch-enum -Wunused-parameter \
3
 
        -Wstrict-aliasing=1 -Wextra -Wfloat-equal -Wundef -Wshadow \
 
3
        -Wstrict-aliasing=2 -Wextra -Wfloat-equal -Wundef -Wshadow \
4
4
        -Wunsafe-loop-optimizations -Wpointer-arith \
5
5
        -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings \
6
6
        -Wconversion -Wstrict-prototypes -Wold-style-definition \
7
7
        -Wpacked -Wnested-externs -Winline -Wvolatile-register-var
8
 
#       -Wunreachable-code
 
8
#       -Wunreachable-code 
9
9
#DEBUG=-ggdb3
10
10
# For info about _FORTIFY_SOURCE, see
11
 
# <http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html>
12
 
# and <http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html>.
13
 
FORTIFY=-D_FORTIFY_SOURCE=2 -fstack-protector-all -fPIC
14
 
LINK_FORTIFY_LD=-z relro -z now
15
 
LINK_FORTIFY=
16
 
 
17
 
# If BROKEN_PIE is set, do not build with -pie
18
 
ifndef BROKEN_PIE
19
 
FORTIFY += -fPIE
20
 
LINK_FORTIFY += -pie
21
 
endif
 
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
22
14
#COVERAGE=--coverage
23
15
OPTIMIZE=-Os
24
16
LANGUAGE=-std=gnu99
25
17
htmldir=man
26
 
version=1.4.1
 
18
version=1.0.2
27
19
SED=sed
28
20
 
29
21
## Use these settings for a traditional /usr/local install
42
34
INITRAMFSTOOLS=$(DESTDIR)/usr/share/initramfs-tools
43
35
##
44
36
 
45
 
GNUTLS_CFLAGS=$(shell pkg-config --cflags-only-I gnutls)
46
 
GNUTLS_LIBS=$(shell pkg-config --libs gnutls)
 
37
GNUTLS_CFLAGS=$(shell libgnutls-config --cflags)
 
38
GNUTLS_LIBS=$(shell libgnutls-config --libs)
47
39
AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
48
40
AVAHI_LIBS=$(shell pkg-config --libs avahi-core)
49
 
GPGME_CFLAGS=$(shell gpgme-config --cflags; getconf LFS_CFLAGS)
50
 
GPGME_LIBS=$(shell gpgme-config --libs; getconf LFS_LIBS; \
51
 
        getconf LFS_LDFLAGS)
 
41
GPGME_CFLAGS=$(shell gpgme-config --cflags)
 
42
GPGME_LIBS=$(shell gpgme-config --libs)
52
43
 
53
44
# Do not change these two
54
45
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
55
46
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS) \
56
47
        -DVERSION='"$(version)"'
57
 
LDFLAGS=-Xlinker --as-needed $(COVERAGE) $(LINK_FORTIFY) $(foreach flag,$(LINK_FORTIFY_LD),-Xlinker $(flag))
 
48
LDFLAGS=$(COVERAGE) $(LINK_FORTIFY)
58
49
 
59
50
# Commands to format a DocBook <refentry> document into a manual page
60
 
DOCBOOKTOMAN=$(strip cd $(dir $<); xsltproc --nonet --xinclude \
 
51
DOCBOOKTOMAN=cd $(dir $<); xsltproc --nonet --xinclude \
61
52
        --param man.charmap.use.subset          0 \
62
53
        --param make.year.ranges                1 \
63
54
        --param make.single.year.ranges         1 \
65
56
        --param man.authors.section.enabled     0 \
66
57
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
67
58
        $(notdir $<); \
68
 
        $(MANPOST) $(notdir $@);\
69
 
        LANG=en_US.UTF-8 MANWIDTH=80 man --warnings --encoding=UTF-8 \
70
 
        --local-file $(notdir $@) >/dev/null)
 
59
        $(MANPOST) $(notdir $@)
71
60
# DocBook-to-man post-processing to fix a '\n' escape bug
72
61
MANPOST=$(SED) --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
73
62
 
74
 
DOCBOOKTOHTML=$(strip xsltproc --nonet --xinclude \
 
63
DOCBOOKTOHTML=xsltproc --nonet --xinclude \
75
64
        --param make.year.ranges                1 \
76
65
        --param make.single.year.ranges         1 \
77
66
        --param man.output.quietly              1 \
79
68
        --param citerefentry.link               1 \
80
69
        --output $@ \
81
70
        /usr/share/xml/docbook/stylesheet/nwalsh/xhtml/docbook.xsl \
82
 
        $<; $(HTMLPOST) $@)
 
71
        $<; $(HTMLPOST) $@
83
72
# Fix citerefentry links
84
73
HTMLPOST=$(SED) --in-place \
85
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'
86
75
 
87
76
PLUGINS=plugins.d/password-prompt plugins.d/mandos-client \
88
 
        plugins.d/usplash plugins.d/splashy plugins.d/askpass-fifo \
89
 
        plugins.d/plymouth
 
77
        plugins.d/usplash plugins.d/splashy plugins.d/askpass-fifo
90
78
CPROGS=plugin-runner $(PLUGINS)
91
 
PROGS=mandos mandos-keygen mandos-ctl mandos-monitor $(CPROGS)
92
 
DOCS=mandos.8 mandos-keygen.8 mandos-monitor.8 mandos-ctl.8 \
93
 
        mandos.conf.5 mandos-clients.conf.5 plugin-runner.8mandos \
 
79
PROGS=mandos mandos-keygen $(CPROGS)
 
80
DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
94
81
        plugins.d/mandos-client.8mandos \
95
 
        plugins.d/password-prompt.8mandos plugins.d/usplash.8mandos \
96
 
        plugins.d/splashy.8mandos plugins.d/askpass-fifo.8mandos \
97
 
        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
98
85
 
99
86
htmldocs=$(addsuffix .xhtml,$(DOCS))
100
87
 
121
108
%.8mandos.xhtml: %.xml common.ent legalnotice.xml
122
109
        $(DOCBOOKTOHTML)
123
110
 
124
 
intro.8mandos: intro.xml common.ent legalnotice.xml
125
 
        $(DOCBOOKTOMAN)
126
 
intro.8mandos.xhtml: intro.xml common.ent legalnotice.xml
127
 
        $(DOCBOOKTOHTML)
128
 
 
129
111
mandos.8: mandos.xml common.ent mandos-options.xml overview.xml \
130
112
                legalnotice.xml
131
113
        $(DOCBOOKTOMAN)
140
122
                 legalnotice.xml
141
123
        $(DOCBOOKTOHTML)
142
124
 
143
 
mandos-monitor.8: mandos-monitor.xml common.ent overview.xml \
144
 
                legalnotice.xml
145
 
        $(DOCBOOKTOMAN)
146
 
mandos-monitor.8.xhtml: mandos-monitor.xml common.ent overview.xml \
147
 
                 legalnotice.xml
148
 
        $(DOCBOOKTOHTML)
149
 
 
150
 
mandos-ctl.8: mandos-ctl.xml common.ent overview.xml \
151
 
                legalnotice.xml
152
 
        $(DOCBOOKTOMAN)
153
 
mandos-ctl.8.xhtml: mandos-ctl.xml common.ent overview.xml \
154
 
                 legalnotice.xml
155
 
        $(DOCBOOKTOHTML)
156
 
 
157
125
mandos.conf.5: mandos.conf.xml common.ent mandos-options.xml \
158
126
                legalnotice.xml
159
127
        $(DOCBOOKTOMAN)
181
149
 
182
150
# Update all these files with version number $(version)
183
151
common.ent: Makefile
184
 
        $(strip $(SED) --in-place \
185
 
                --expression='s/^\(<!ENTITY version "\)[^"]*">$$/\1$(version)">/' \
186
 
                $@)
 
152
        $(SED) --in-place \
 
153
                --expression='s/^\(<ENTITY VERSION "\)[^"]*">$$/\1$(version)"/' \
 
154
                $@
187
155
 
188
156
mandos: Makefile
189
 
        $(strip $(SED) --in-place \
 
157
        $(SED) --in-place \
190
158
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
191
 
                $@)
 
159
                $@
192
160
 
193
161
mandos-keygen: Makefile
194
 
        $(strip $(SED) --in-place \
 
162
        $(SED) --in-place \
195
163
                --expression='s/^\(VERSION="\)[^"]*"$$/\1$(version)"/' \
196
 
                $@)
197
 
 
198
 
mandos-ctl: Makefile
199
 
        $(strip $(SED) --in-place \
200
 
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
201
 
                $@)
202
 
 
203
 
mandos-monitor: Makefile
204
 
        $(strip $(SED) --in-place \
205
 
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
206
 
                $@)
 
164
                $@
207
165
 
208
166
mandos.lsm: Makefile
209
 
        $(strip $(SED) --in-place \
 
167
        $(SED) --in-place \
210
168
                --expression='s/^\(Version:\).*/\1\t$(version)/' \
211
 
                $@)
212
 
        $(strip $(SED) --in-place \
 
169
                $@
 
170
        $(SED) --in-place \
213
171
                --expression='s/^\(Entered-date:\).*/\1\t$(shell date --rfc-3339=date --reference=Makefile)/' \
214
 
                $@)
215
 
        $(strip $(SED) --in-place \
216
 
                --expression='s/\(mandos_\)[0-9.]\+\(\.orig\.tar\.gz\)/\1$(version)\2/' \
217
 
                $@)
 
172
                $@
218
173
 
219
 
plugins.d/mandos-client: plugins.d/mandos-client.c
220
 
        $(LINK.c) $^ -lrt $(GNUTLS_LIBS) $(AVAHI_LIBS) $(strip\
221
 
                ) $(GPGME_LIBS) $(LOADLIBES) $(LDLIBS) -o $@
 
174
plugins.d/mandos-client: plugins.d/mandos-client.o
 
175
        $(LINK.o) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) \
 
176
                $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
222
177
 
223
178
.PHONY : all doc html clean distclean run-client run-server install \
224
179
        install-server install-client uninstall uninstall-server \
237
192
 
238
193
# Run the client with a local config and key
239
194
run-client: all keydir/seckey.txt keydir/pubkey.txt
240
 
        @echo "###################################################################"
241
 
        @echo "# The following error messages are harmless and can be safely     #"
242
 
        @echo "# ignored.  The messages are caused by not running as root, but   #"
243
 
        @echo "# you should NOT run \"make run-client\" as root unless you also    #"
244
 
        @echo "# unpacked and compiled Mandos as root, which is NOT recommended. #"
245
 
        @echo "# From plugin-runner: setuid: Operation not permitted             #"
246
 
        @echo "# From askpass-fifo:  mkfifo: Permission denied                   #"
247
 
        @echo "# From mandos-client: setuid: Operation not permitted             #"
248
 
        @echo "#                     seteuid: Operation not permitted            #"
249
 
        @echo "#                     klogctl: Operation not permitted            #"
250
 
        @echo "###################################################################"
251
195
        ./plugin-runner --plugin-dir=plugins.d \
252
196
                --config-file=plugin-runner.conf \
253
 
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt,--network-hook-dir=network-hooks.d \
254
 
                $(CLIENTARGS)
 
197
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt
255
198
 
256
199
# Used by run-client
257
200
keydir/seckey.txt keydir/pubkey.txt: mandos-keygen
260
203
 
261
204
# Run the server with a local config
262
205
run-server: confdir/mandos.conf confdir/clients.conf
263
 
        @echo "#################################################################"
264
 
        @echo "# NOTE: Please IGNORE the error about \"Could not open file      #"
265
 
        @echo "# u'/var/run/mandos.pid'\" -  it is harmless and is caused by    #"
266
 
        @echo "# the server not running as root.  Do NOT run \"make run-server\" #"
267
 
        @echo "# server as root if you didn't also unpack and compile it thus. #"
268
 
        @echo "#################################################################"
269
 
        ./mandos --debug --no-dbus --configdir=confdir $(SERVERARGS)
 
206
        ./mandos --debug --configdir=confdir
270
207
 
271
208
# Used by run-server
272
209
confdir/mandos.conf: mandos.conf
288
225
install-server: doc
289
226
        install --directory $(CONFDIR)
290
227
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
291
 
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
292
 
                mandos-ctl
293
 
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
294
 
                mandos-monitor
295
228
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
296
229
                mandos.conf
297
230
        install --mode=u=rw --target-directory=$(CONFDIR) \
298
231
                clients.conf
299
 
        install --mode=u=rw,go=r dbus-mandos.conf \
300
 
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
301
232
        install --mode=u=rwx,go=rx init.d-mandos \
302
233
                $(DESTDIR)/etc/init.d/mandos
303
234
        install --mode=u=rw,go=r default-mandos \
307
238
        fi
308
239
        gzip --best --to-stdout mandos.8 \
309
240
                > $(MANDIR)/man8/mandos.8.gz
310
 
        gzip --best --to-stdout mandos-monitor.8 \
311
 
                > $(MANDIR)/man8/mandos-monitor.8.gz
312
 
        gzip --best --to-stdout mandos-ctl.8 \
313
 
                > $(MANDIR)/man8/mandos-ctl.8.gz
314
241
        gzip --best --to-stdout mandos.conf.5 \
315
242
                > $(MANDIR)/man5/mandos.conf.5.gz
316
243
        gzip --best --to-stdout mandos-clients.conf.5 \
343
270
        install --mode=u=rwxs,go=rx \
344
271
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
345
272
                plugins.d/askpass-fifo
346
 
        install --mode=u=rwxs,go=rx \
347
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
348
 
                plugins.d/plymouth
349
273
        install initramfs-tools-hook \
350
274
                $(INITRAMFSTOOLS)/hooks/mandos
351
275
        install --mode=u=rw,go=r initramfs-tools-hook-conf \
352
276
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos
353
277
        install initramfs-tools-script \
354
 
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos
 
278
                $(INITRAMFSTOOLS)/scripts/local-top/mandos
355
279
        install --mode=u=rw,go=r plugin-runner.conf $(CONFDIR)
356
280
        gzip --best --to-stdout mandos-keygen.8 \
357
281
                > $(MANDIR)/man8/mandos-keygen.8.gz
358
282
        gzip --best --to-stdout plugin-runner.8mandos \
359
283
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
 
284
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
 
285
                > $(MANDIR)/man8/password-prompt.8mandos.gz
360
286
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
361
287
                > $(MANDIR)/man8/mandos-client.8mandos.gz
362
 
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
363
 
                > $(MANDIR)/man8/password-prompt.8mandos.gz
364
288
        gzip --best --to-stdout plugins.d/usplash.8mandos \
365
289
                > $(MANDIR)/man8/usplash.8mandos.gz
366
290
        gzip --best --to-stdout plugins.d/splashy.8mandos \
367
291
                > $(MANDIR)/man8/splashy.8mandos.gz
368
292
        gzip --best --to-stdout plugins.d/askpass-fifo.8mandos \
369
293
                > $(MANDIR)/man8/askpass-fifo.8mandos.gz
370
 
        gzip --best --to-stdout plugins.d/plymouth.8mandos \
371
 
                > $(MANDIR)/man8/plymouth.8mandos.gz
372
294
 
373
295
install-client: install-client-nokey
374
296
# Post-installation stuff
380
302
 
381
303
uninstall-server:
382
304
        -rm --force $(PREFIX)/sbin/mandos \
383
 
                $(PREFIX)/sbin/mandos-ctl \
384
 
                $(PREFIX)/sbin/mandos-monitor \
385
305
                $(MANDIR)/man8/mandos.8.gz \
386
 
                $(MANDIR)/man8/mandos-monitor.8.gz \
387
 
                $(MANDIR)/man8/mandos-ctl.8.gz \
388
306
                $(MANDIR)/man5/mandos.conf.5.gz \
389
307
                $(MANDIR)/man5/mandos-clients.conf.5.gz
390
308
        update-rc.d -f mandos remove
402
320
                $(PREFIX)/lib/mandos/plugins.d/usplash \
403
321
                $(PREFIX)/lib/mandos/plugins.d/splashy \
404
322
                $(PREFIX)/lib/mandos/plugins.d/askpass-fifo \
405
 
                $(PREFIX)/lib/mandos/plugins.d/plymouth \
406
323
                $(INITRAMFSTOOLS)/hooks/mandos \
407
324
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
408
 
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
 
325
                $(INITRAMFSTOOLS)/scripts/local-top/mandos \
 
326
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
409
327
                $(MANDIR)/man8/mandos-keygen.8.gz \
410
 
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
411
 
                $(MANDIR)/man8/mandos-client.8mandos.gz
412
328
                $(MANDIR)/man8/password-prompt.8mandos.gz \
413
329
                $(MANDIR)/man8/usplash.8mandos.gz \
414
330
                $(MANDIR)/man8/splashy.8mandos.gz \
415
331
                $(MANDIR)/man8/askpass-fifo.8mandos.gz \
416
 
                $(MANDIR)/man8/plymouth.8mandos.gz \
 
332
                $(MANDIR)/man8/mandos-client.8mandos.gz
417
333
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
418
334
                 $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
419
335
        update-initramfs -k all -u
422
338
 
423
339
purge-server: uninstall-server
424
340
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf \
425
 
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
426
341
                $(DESTDIR)/etc/default/mandos \
427
342
                $(DESTDIR)/etc/init.d/mandos \
428
343
                $(DESTDIR)/var/run/mandos.pid