/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:
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
 
        -Wpacked -Wnested-externs -Wunreachable-code -Winline \
8
 
        -Wvolatile-register-var
9
 
DEBUG=-ggdb3
 
7
        -Wpacked -Wnested-externs -Winline -Wvolatile-register-var
 
8
#       -Wunreachable-code 
 
9
#DEBUG=-ggdb3
10
10
# For info about _FORTIFY_SOURCE, see
11
11
# <http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html>
12
 
FORTIFY=-D_FORTIFY_SOURCE=2 # -fstack-protector-all
 
12
FORTIFY=-D_FORTIFY_SOURCE=2 -fstack-protector-all -fPIE -pie
 
13
LINK_FORTIFY=-z relro -pie
13
14
#COVERAGE=--coverage
14
15
OPTIMIZE=-Os
15
16
LANGUAGE=-std=gnu99
 
17
htmldir=man
 
18
version=1.0.2
 
19
SED=sed
16
20
 
17
21
## Use these settings for a traditional /usr/local install
18
22
# PREFIX=$(DESTDIR)/usr/local
19
 
# CONFDIR=$(PREFIX)/lib/mandos
20
 
# KEYDIR=$(PREFIX)/lib/mandos/keys
 
23
# CONFDIR=$(DESTDIR)/etc/mandos
 
24
# KEYDIR=$(DESTDIR)/etc/mandos/keys
21
25
# MANDIR=$(PREFIX)/man
22
 
# INITRAMFSTOOLS=/etc/initramfs-tools
 
26
# INITRAMFSTOOLS=$(DESTDIR)/etc/initramfs-tools
 
27
##
23
28
 
 
29
## These settings are for a package-type install
24
30
PREFIX=$(DESTDIR)/usr
25
31
CONFDIR=$(DESTDIR)/etc/mandos
26
32
KEYDIR=$(DESTDIR)/etc/keys/mandos
27
33
MANDIR=$(PREFIX)/share/man
28
34
INITRAMFSTOOLS=$(DESTDIR)/usr/share/initramfs-tools
 
35
##
29
36
 
30
37
GNUTLS_CFLAGS=$(shell libgnutls-config --cflags)
31
38
GNUTLS_LIBS=$(shell libgnutls-config --libs)
36
43
 
37
44
# Do not change these two
38
45
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
39
 
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS)
40
 
LDFLAGS=$(COVERAGE)
 
46
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS) \
 
47
        -DVERSION='"$(version)"'
 
48
LDFLAGS=$(COVERAGE) $(LINK_FORTIFY)
41
49
 
42
50
# Commands to format a DocBook <refentry> document into a manual page
43
51
DOCBOOKTOMAN=cd $(dir $<); xsltproc --nonet --xinclude \
50
58
        $(notdir $<); \
51
59
        $(MANPOST) $(notdir $@)
52
60
# DocBook-to-man post-processing to fix a '\n' escape bug
53
 
MANPOST=sed --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
54
 
 
55
 
PLUGINS=plugins.d/password-prompt plugins.d/mandos-client
56
 
PROGS=plugin-runner $(PLUGINS)
 
61
MANPOST=$(SED) --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
 
62
 
 
63
DOCBOOKTOHTML=xsltproc --nonet --xinclude \
 
64
        --param make.year.ranges                1 \
 
65
        --param make.single.year.ranges         1 \
 
66
        --param man.output.quietly              1 \
 
67
        --param man.authors.section.enabled     0 \
 
68
        --param citerefentry.link               1 \
 
69
        --output $@ \
 
70
        /usr/share/xml/docbook/stylesheet/nwalsh/xhtml/docbook.xsl \
 
71
        $<; $(HTMLPOST) $@
 
72
# Fix citerefentry links
 
73
HTMLPOST=$(SED) --in-place \
 
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'
 
75
 
 
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)
57
80
DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
58
81
        plugins.d/mandos-client.8mandos \
59
82
        plugins.d/password-prompt.8mandos mandos.conf.5 \
60
 
        mandos-clients.conf.5
61
 
 
62
 
objects=$(addsuffix .o,$(PROGS))
63
 
 
64
 
all: $(PROGS)
 
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))
 
89
 
 
90
all: $(PROGS) mandos.lsm
65
91
 
66
92
doc: $(DOCS)
67
93
 
68
 
%.5: %.xml legalnotice.xml
69
 
        $(DOCBOOKTOMAN)
70
 
 
71
 
%.8: %.xml legalnotice.xml
72
 
        $(DOCBOOKTOMAN)
73
 
 
74
 
%.8mandos: %.xml legalnotice.xml
75
 
        $(DOCBOOKTOMAN)
76
 
 
77
 
mandos.8: mandos.xml mandos-options.xml overview.xml legalnotice.xml
78
 
        $(DOCBOOKTOMAN)
79
 
 
80
 
mandos-keygen.8: mandos-keygen.xml overview.xml legalnotice.xml
81
 
        $(DOCBOOKTOMAN)
82
 
 
83
 
mandos.conf.5: mandos.conf.xml mandos-options.xml legalnotice.xml
84
 
        $(DOCBOOKTOMAN)
85
 
 
86
 
plugin-runner.8mandos: plugin-runner.xml overview.xml legalnotice.xml
87
 
        $(DOCBOOKTOMAN)
 
94
html: $(htmldocs)
 
95
 
 
96
%.5: %.xml common.ent legalnotice.xml
 
97
        $(DOCBOOKTOMAN)
 
98
%.5.xhtml: %.xml common.ent legalnotice.xml
 
99
        $(DOCBOOKTOHTML)
 
100
 
 
101
%.8: %.xml common.ent legalnotice.xml
 
102
        $(DOCBOOKTOMAN)
 
103
%.8.xhtml: %.xml common.ent legalnotice.xml
 
104
        $(DOCBOOKTOHTML)
 
105
 
 
106
%.8mandos: %.xml common.ent legalnotice.xml
 
107
        $(DOCBOOKTOMAN)
 
108
%.8mandos.xhtml: %.xml common.ent legalnotice.xml
 
109
        $(DOCBOOKTOHTML)
 
110
 
 
111
mandos.8: mandos.xml common.ent mandos-options.xml overview.xml \
 
112
                legalnotice.xml
 
113
        $(DOCBOOKTOMAN)
 
114
mandos.8.xhtml: mandos.xml common.ent mandos-options.xml \
 
115
                overview.xml legalnotice.xml
 
116
        $(DOCBOOKTOHTML)
 
117
 
 
118
mandos-keygen.8: mandos-keygen.xml common.ent overview.xml \
 
119
                legalnotice.xml
 
120
        $(DOCBOOKTOMAN)
 
121
mandos-keygen.8.xhtml: mandos-keygen.xml common.ent overview.xml \
 
122
                 legalnotice.xml
 
123
        $(DOCBOOKTOHTML)
 
124
 
 
125
mandos.conf.5: mandos.conf.xml common.ent mandos-options.xml \
 
126
                legalnotice.xml
 
127
        $(DOCBOOKTOMAN)
 
128
mandos.conf.5.xhtml: mandos.conf.xml common.ent mandos-options.xml \
 
129
                legalnotice.xml
 
130
        $(DOCBOOKTOHTML)
 
131
 
 
132
plugin-runner.8mandos: plugin-runner.xml common.ent overview.xml \
 
133
                legalnotice.xml
 
134
        $(DOCBOOKTOMAN)
 
135
plugin-runner.8mandos.xhtml: plugin-runner.xml common.ent \
 
136
                overview.xml legalnotice.xml
 
137
        $(DOCBOOKTOHTML)
88
138
 
89
139
plugins.d/mandos-client.8mandos: plugins.d/mandos-client.xml \
 
140
                                        common.ent \
90
141
                                        mandos-options.xml \
91
142
                                        overview.xml legalnotice.xml
92
143
        $(DOCBOOKTOMAN)
 
144
plugins.d/mandos-client.8mandos.xhtml: plugins.d/mandos-client.xml \
 
145
                                        common.ent \
 
146
                                        mandos-options.xml \
 
147
                                        overview.xml legalnotice.xml
 
148
        $(DOCBOOKTOHTML)
 
149
 
 
150
# Update all these files with version number $(version)
 
151
common.ent: Makefile
 
152
        $(SED) --in-place \
 
153
                --expression='s/^\(<ENTITY VERSION "\)[^"]*">$$/\1$(version)"/' \
 
154
                $@
 
155
 
 
156
mandos: Makefile
 
157
        $(SED) --in-place \
 
158
                --expression='s/^\(version = "\)[^"]*"$$/\1$(version)"/' \
 
159
                $@
 
160
 
 
161
mandos-keygen: Makefile
 
162
        $(SED) --in-place \
 
163
                --expression='s/^\(VERSION="\)[^"]*"$$/\1$(version)"/' \
 
164
                $@
 
165
 
 
166
mandos.lsm: Makefile
 
167
        $(SED) --in-place \
 
168
                --expression='s/^\(Version:\).*/\1\t$(version)/' \
 
169
                $@
 
170
        $(SED) --in-place \
 
171
                --expression='s/^\(Entered-date:\).*/\1\t$(shell date --rfc-3339=date --reference=Makefile)/' \
 
172
                $@
93
173
 
94
174
plugins.d/mandos-client: plugins.d/mandos-client.o
95
175
        $(LINK.o) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) \
96
176
                $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
97
177
 
98
 
.PHONY : all doc clean distclean run-client run-server install \
 
178
.PHONY : all doc html clean distclean run-client run-server install \
99
179
        install-server install-client uninstall uninstall-server \
100
180
        uninstall-client purge purge-server purge-client
101
181
 
102
182
clean:
103
 
        -rm --force $(PROGS) $(objects) $(DOCS) core
 
183
        -rm --force $(CPROGS) $(objects) $(htmldocs) $(DOCS) core
104
184
 
105
185
distclean: clean
106
186
mostlyclean: clean
107
187
maintainer-clean: clean
108
188
        -rm --force --recursive keydir confdir
109
189
 
110
 
check:
 
190
check:  all
111
191
        ./mandos --check
112
192
 
113
193
# Run the client with a local config and key
135
215
# Add a client password
136
216
        ./mandos-keygen --dir keydir --password >> $@
137
217
 
138
 
install: install-server install-client
 
218
install: install-server install-client-nokey
 
219
 
 
220
install-html: html
 
221
        install --directory $(htmldir)
 
222
        install --mode=u=rw,go=r --target-directory=$(htmldir) \
 
223
                $(htmldocs)
139
224
 
140
225
install-server: doc
141
 
        install --directory $(CONFDIR) $(MANDIR)/man5 \
142
 
                $(MANDIR)/man8
 
226
        install --directory $(CONFDIR)
143
227
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
144
228
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
145
229
                mandos.conf
149
233
                $(DESTDIR)/etc/init.d/mandos
150
234
        install --mode=u=rw,go=r default-mandos \
151
235
                $(DESTDIR)/etc/default/mandos
152
 
        update-rc.d mandos defaults
 
236
        if [ -z $(DESTDIR) ]; then \
 
237
                update-rc.d mandos defaults 25 15;\
 
238
        fi
153
239
        gzip --best --to-stdout mandos.8 \
154
240
                > $(MANDIR)/man8/mandos.8.gz
155
241
        gzip --best --to-stdout mandos.conf.5 \
157
243
        gzip --best --to-stdout mandos-clients.conf.5 \
158
244
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
159
245
 
160
 
install-client: all doc $(INITRAMFSTOOLS)/hooks/.
161
 
        install --directory $(PREFIX)/lib/mandos $(CONFDIR) \
162
 
                $(MANDIR)/man8
163
 
        install --directory --mode=u=rwx $(KEYDIR)
164
 
        install --directory --mode=u=rwx \
 
246
install-client-nokey: all doc
 
247
        install --directory $(PREFIX)/lib/mandos $(CONFDIR)
 
248
        install --directory --mode=u=rwx $(KEYDIR) \
165
249
                $(PREFIX)/lib/mandos/plugins.d
166
250
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
167
251
                install --mode=u=rwx \
168
252
                        --directory "$(CONFDIR)/plugins.d"; \
169
 
                install --mode=u=rw,go=r etc-plugins.d-README \
170
 
                        $(CONFDIR)/plugins.d/README ; \
171
253
        fi
172
254
        install --mode=u=rwx,go=rx \
173
255
                --target-directory=$(PREFIX)/lib/mandos plugin-runner
179
261
        install --mode=u=rwxs,go=rx \
180
262
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
181
263
                plugins.d/mandos-client
182
 
        install --mode=u=rwx,go=rx \
 
264
        install --mode=u=rwxs,go=rx \
183
265
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
184
266
                plugins.d/usplash
 
267
        install --mode=u=rwxs,go=rx \
 
268
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
269
                plugins.d/splashy
 
270
        install --mode=u=rwxs,go=rx \
 
271
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
272
                plugins.d/askpass-fifo
185
273
        install initramfs-tools-hook \
186
274
                $(INITRAMFSTOOLS)/hooks/mandos
187
 
        install initramfs-tools-hook-conf \
 
275
        install --mode=u=rw,go=r initramfs-tools-hook-conf \
188
276
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos
189
277
        install initramfs-tools-script \
190
278
                $(INITRAMFSTOOLS)/scripts/local-top/mandos
197
285
                > $(MANDIR)/man8/password-prompt.8mandos.gz
198
286
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
199
287
                > $(MANDIR)/man8/mandos-client.8mandos.gz
 
288
        gzip --best --to-stdout plugins.d/usplash.8mandos \
 
289
                > $(MANDIR)/man8/usplash.8mandos.gz
 
290
        gzip --best --to-stdout plugins.d/splashy.8mandos \
 
291
                > $(MANDIR)/man8/splashy.8mandos.gz
 
292
        gzip --best --to-stdout plugins.d/askpass-fifo.8mandos \
 
293
                > $(MANDIR)/man8/askpass-fifo.8mandos.gz
 
294
 
 
295
install-client: install-client-nokey
200
296
# Post-installation stuff
201
297
        -$(PREFIX)/sbin/mandos-keygen --dir "$(KEYDIR)"
202
298
        update-initramfs -k all -u
222
318
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
223
319
                $(PREFIX)/lib/mandos/plugins.d/mandos-client \
224
320
                $(PREFIX)/lib/mandos/plugins.d/usplash \
 
321
                $(PREFIX)/lib/mandos/plugins.d/splashy \
 
322
                $(PREFIX)/lib/mandos/plugins.d/askpass-fifo \
225
323
                $(INITRAMFSTOOLS)/hooks/mandos \
226
324
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
227
325
                $(INITRAMFSTOOLS)/scripts/local-top/mandos \
228
326
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
229
327
                $(MANDIR)/man8/mandos-keygen.8.gz \
230
328
                $(MANDIR)/man8/password-prompt.8mandos.gz \
 
329
                $(MANDIR)/man8/usplash.8mandos.gz \
 
330
                $(MANDIR)/man8/splashy.8mandos.gz \
 
331
                $(MANDIR)/man8/askpass-fifo.8mandos.gz \
231
332
                $(MANDIR)/man8/mandos-client.8mandos.gz
232
 
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
233
 
                rm --force $(CONFDIR)/plugins.d/README; \
234
 
        fi
235
333
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
236
334
                 $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
237
335
        update-initramfs -k all -u