/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 \
8
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_LD += -fPIE
21
 
LINK_FORTIFY += -pie
22
 
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
23
14
#COVERAGE=--coverage
24
15
OPTIMIZE=-Os
25
16
LANGUAGE=-std=gnu99
26
17
htmldir=man
27
 
version=1.0.14
 
18
version=1.0.2
28
19
SED=sed
29
20
 
30
21
## Use these settings for a traditional /usr/local install
43
34
INITRAMFSTOOLS=$(DESTDIR)/usr/share/initramfs-tools
44
35
##
45
36
 
46
 
GNUTLS_CFLAGS=$(shell pkg-config --cflags-only-I gnutls)
47
 
GNUTLS_LIBS=$(shell pkg-config --libs gnutls)
 
37
GNUTLS_CFLAGS=$(shell libgnutls-config --cflags)
 
38
GNUTLS_LIBS=$(shell libgnutls-config --libs)
48
39
AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
49
40
AVAHI_LIBS=$(shell pkg-config --libs avahi-core)
50
 
GPGME_CFLAGS=$(shell gpgme-config --cflags; getconf LFS_CFLAGS)
51
 
GPGME_LIBS=$(shell gpgme-config --libs; getconf LFS_LIBS; \
52
 
        getconf LFS_LDFLAGS)
 
41
GPGME_CFLAGS=$(shell gpgme-config --cflags)
 
42
GPGME_LIBS=$(shell gpgme-config --libs)
53
43
 
54
44
# Do not change these two
55
45
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
56
46
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS) \
57
47
        -DVERSION='"$(version)"'
58
 
LDFLAGS=$(COVERAGE) $(LINK_FORTIFY) $(foreach flag,$(LINK_FORTIFY_LD),-Xlinker $(flag))
 
48
LDFLAGS=$(COVERAGE) $(LINK_FORTIFY)
59
49
 
60
50
# Commands to format a DocBook <refentry> document into a manual page
61
 
DOCBOOKTOMAN=$(strip cd $(dir $<); xsltproc --nonet --xinclude \
 
51
DOCBOOKTOMAN=cd $(dir $<); xsltproc --nonet --xinclude \
62
52
        --param man.charmap.use.subset          0 \
63
53
        --param make.year.ranges                1 \
64
54
        --param make.single.year.ranges         1 \
66
56
        --param man.authors.section.enabled     0 \
67
57
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
68
58
        $(notdir $<); \
69
 
        $(MANPOST) $(notdir $@))
 
59
        $(MANPOST) $(notdir $@)
70
60
# DocBook-to-man post-processing to fix a '\n' escape bug
71
61
MANPOST=$(SED) --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
72
62
 
73
 
DOCBOOKTOHTML=$(strip xsltproc --nonet --xinclude \
 
63
DOCBOOKTOHTML=xsltproc --nonet --xinclude \
74
64
        --param make.year.ranges                1 \
75
65
        --param make.single.year.ranges         1 \
76
66
        --param man.output.quietly              1 \
78
68
        --param citerefentry.link               1 \
79
69
        --output $@ \
80
70
        /usr/share/xml/docbook/stylesheet/nwalsh/xhtml/docbook.xsl \
81
 
        $<; $(HTMLPOST) $@)
 
71
        $<; $(HTMLPOST) $@
82
72
# Fix citerefentry links
83
73
HTMLPOST=$(SED) --in-place \
84
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
76
PLUGINS=plugins.d/password-prompt plugins.d/mandos-client \
87
77
        plugins.d/usplash plugins.d/splashy plugins.d/askpass-fifo
88
78
CPROGS=plugin-runner $(PLUGINS)
89
 
PROGS=mandos mandos-keygen mandos-ctl $(CPROGS)
 
79
PROGS=mandos mandos-keygen $(CPROGS)
90
80
DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
91
81
        plugins.d/mandos-client.8mandos \
92
82
        plugins.d/password-prompt.8mandos mandos.conf.5 \
159
149
 
160
150
# Update all these files with version number $(version)
161
151
common.ent: Makefile
162
 
        $(strip $(SED) --in-place \
163
 
                --expression='s/^\(<!ENTITY version "\)[^"]*">$$/\1$(version)">/' \
164
 
                $@)
 
152
        $(SED) --in-place \
 
153
                --expression='s/^\(<ENTITY VERSION "\)[^"]*">$$/\1$(version)"/' \
 
154
                $@
165
155
 
166
156
mandos: Makefile
167
 
        $(strip $(SED) --in-place \
 
157
        $(SED) --in-place \
168
158
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
169
 
                $@)
 
159
                $@
170
160
 
171
161
mandos-keygen: Makefile
172
 
        $(strip $(SED) --in-place \
 
162
        $(SED) --in-place \
173
163
                --expression='s/^\(VERSION="\)[^"]*"$$/\1$(version)"/' \
174
 
                $@)
175
 
 
176
 
mandos-ctl: Makefile
177
 
        $(strip $(SED) --in-place \
178
 
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
179
 
                $@)
 
164
                $@
180
165
 
181
166
mandos.lsm: Makefile
182
 
        $(strip $(SED) --in-place \
 
167
        $(SED) --in-place \
183
168
                --expression='s/^\(Version:\).*/\1\t$(version)/' \
184
 
                $@)
185
 
        $(strip $(SED) --in-place \
 
169
                $@
 
170
        $(SED) --in-place \
186
171
                --expression='s/^\(Entered-date:\).*/\1\t$(shell date --rfc-3339=date --reference=Makefile)/' \
187
 
                $@)
188
 
        $(strip $(SED) --in-place \
189
 
                --expression='s/\(mandos_\)[0-9.]\+\(\.orig\.tar\.gz\)/\1$(version)\2/' \
190
 
                $@)
 
172
                $@
191
173
 
192
 
plugins.d/mandos-client: plugins.d/mandos-client.c
193
 
        $(LINK.c) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) $(strip\
194
 
                ) $(COMMON) $^ $(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 $@
195
177
 
196
178
.PHONY : all doc html clean distclean run-client run-server install \
197
179
        install-server install-client uninstall uninstall-server \
212
194
run-client: all keydir/seckey.txt keydir/pubkey.txt
213
195
        ./plugin-runner --plugin-dir=plugins.d \
214
196
                --config-file=plugin-runner.conf \
215
 
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt \
216
 
                $(CLIENTARGS)
 
197
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt
217
198
 
218
199
# Used by run-client
219
200
keydir/seckey.txt keydir/pubkey.txt: mandos-keygen
222
203
 
223
204
# Run the server with a local config
224
205
run-server: confdir/mandos.conf confdir/clients.conf
225
 
        ./mandos --debug --no-dbus --configdir=confdir $(SERVERARGS)
 
206
        ./mandos --debug --configdir=confdir
226
207
 
227
208
# Used by run-server
228
209
confdir/mandos.conf: mandos.conf
294
275
        install --mode=u=rw,go=r initramfs-tools-hook-conf \
295
276
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos
296
277
        install initramfs-tools-script \
297
 
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos
 
278
                $(INITRAMFSTOOLS)/scripts/local-top/mandos
298
279
        install --mode=u=rw,go=r plugin-runner.conf $(CONFDIR)
299
280
        gzip --best --to-stdout mandos-keygen.8 \
300
281
                > $(MANDIR)/man8/mandos-keygen.8.gz
341
322
                $(PREFIX)/lib/mandos/plugins.d/askpass-fifo \
342
323
                $(INITRAMFSTOOLS)/hooks/mandos \
343
324
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
344
 
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
 
325
                $(INITRAMFSTOOLS)/scripts/local-top/mandos \
345
326
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
346
327
                $(MANDIR)/man8/mandos-keygen.8.gz \
347
328
                $(MANDIR)/man8/password-prompt.8mandos.gz \