/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: Björn Påhlsson
  • Date: 2008-07-20 02:52:20 UTC
  • Revision ID: belorn@braxen-20080720025220-r5u0388uy9iu23h6
Added following support:
Pluginbased client handler
rewritten Mandos client
       Avahi instead of udp server discovery
       openpgp encrypted key support
Passprompt stand alone application for direct console input
Added logging for Mandos server

Show diffs side-by-side

added added

removed removed

Lines of Context:
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 \
4
 
        -Wunsafe-loop-optimizations -Wpointer-arith \
5
 
        -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings \
6
 
        -Wconversion -Wstrict-prototypes -Wold-style-definition \
7
 
        -Wpacked -Wnested-externs -Wunreachable-code -Winline \
8
 
        -Wvolatile-register-var
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
13
 
#COVERAGE=--coverage
14
 
OPTIMIZE=-Os
15
 
LANGUAGE=-std=gnu99
16
 
 
17
 
## Use these settings for a traditional /usr/local install
18
 
# PREFIX=$(DESTDIR)/usr/local
19
 
# CONFDIR=$(PREFIX)/lib/mandos
20
 
# KEYDIR=$(PREFIX)/lib/mandos/keys
21
 
# MANDIR=$(PREFIX)/man
22
 
# INITRAMFSTOOLS=/etc/initramfs-tools
23
 
 
24
 
PREFIX=$(DESTDIR)/usr
25
 
CONFDIR=$(DESTDIR)/etc/mandos
26
 
KEYDIR=$(DESTDIR)/etc/keys/mandos
27
 
MANDIR=$(PREFIX)/share/man
28
 
INITRAMFSTOOLS=$(DESTDIR)/usr/share/initramfs-tools
29
 
 
30
 
GNUTLS_CFLAGS=$(shell libgnutls-config --cflags)
31
 
GNUTLS_LIBS=$(shell libgnutls-config --libs)
32
 
AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
33
 
AVAHI_LIBS=$(shell pkg-config --libs avahi-core)
34
 
GPGME_CFLAGS=$(shell gpgme-config --cflags)
35
 
GPGME_LIBS=$(shell gpgme-config --libs)
36
 
 
37
 
# Do not change these two
38
 
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
39
 
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS)
40
 
LDFLAGS=$(COVERAGE)
41
 
 
42
 
# Commands to format a DocBook <refentry> document into a manual page
43
 
DOCBOOKTOMAN=cd $(dir $<); xsltproc --nonet --xinclude \
44
 
        --param man.charmap.use.subset          0 \
45
 
        --param make.year.ranges                1 \
46
 
        --param make.single.year.ranges         1 \
47
 
        --param man.output.quietly              1 \
48
 
        --param man.authors.section.enabled     0 \
49
 
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
50
 
        $(notdir $<); \
51
 
        $(MANPOST) $(notdir $@)
52
 
# 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)
57
 
DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
58
 
        plugins.d/mandos-client.8mandos \
59
 
        plugins.d/password-prompt.8mandos mandos.conf.5 \
60
 
        mandos-clients.conf.5
61
 
 
62
 
objects=$(addsuffix .o,$(PROGS))
63
 
 
64
 
all: $(PROGS)
65
 
 
66
 
doc: $(DOCS)
67
 
 
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)
88
 
 
89
 
plugins.d/mandos-client.8mandos: plugins.d/mandos-client.xml \
90
 
                                        mandos-options.xml \
91
 
                                        overview.xml legalnotice.xml
92
 
        $(DOCBOOKTOMAN)
93
 
 
94
 
plugins.d/mandos-client: plugins.d/mandos-client.o
95
 
        $(LINK.o) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) \
96
 
                $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
97
 
 
98
 
.PHONY : all doc clean distclean run-client run-server install \
99
 
        install-server install-client uninstall uninstall-server \
100
 
        uninstall-client purge purge-server purge-client
 
1
CFLAGS="-Wall -std=gnu99"
 
2
LDFLAGS=-lgnutls
 
3
 
 
4
all: plugbasedclient
101
5
 
102
6
clean:
103
 
        -rm --force $(PROGS) $(objects) $(DOCS) core
104
 
 
105
 
distclean: clean
106
 
mostlyclean: clean
107
 
maintainer-clean: clean
108
 
        -rm --force --recursive keydir confdir
109
 
 
110
 
check:
111
 
        ./mandos --check
112
 
 
113
 
# Run the client with a local config and key
114
 
run-client: all keydir/seckey.txt keydir/pubkey.txt
115
 
        ./plugin-runner --plugin-dir=plugins.d \
116
 
                --config-file=plugin-runner.conf \
117
 
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt
118
 
 
119
 
# Used by run-client
120
 
keydir/seckey.txt keydir/pubkey.txt: mandos-keygen
121
 
        install --directory keydir
122
 
        ./mandos-keygen --dir keydir --force
123
 
 
124
 
# Run the server with a local config
125
 
run-server: confdir/mandos.conf confdir/clients.conf
126
 
        ./mandos --debug --configdir=confdir
127
 
 
128
 
# Used by run-server
129
 
confdir/mandos.conf: mandos.conf
130
 
        install --directory confdir
131
 
        install --mode=u=rw,go=r $^ $@
132
 
confdir/clients.conf: clients.conf keydir/seckey.txt
133
 
        install --directory confdir
134
 
        install --mode=u=rw $< $@
135
 
# Add a client password
136
 
        ./mandos-keygen --dir keydir --password >> $@
137
 
 
138
 
install: install-server install-client
139
 
 
140
 
install-server: doc
141
 
        install --directory $(CONFDIR) $(MANDIR)/man5 \
142
 
                $(MANDIR)/man8
143
 
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
144
 
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
145
 
                mandos.conf
146
 
        install --mode=u=rw --target-directory=$(CONFDIR) \
147
 
                clients.conf
148
 
        install --mode=u=rwx,go=rx init.d-mandos \
149
 
                $(DESTDIR)/etc/init.d/mandos
150
 
        install --mode=u=rw,go=r default-mandos \
151
 
                $(DESTDIR)/etc/default/mandos
152
 
        update-rc.d mandos defaults
153
 
        gzip --best --to-stdout mandos.8 \
154
 
                > $(MANDIR)/man8/mandos.8.gz
155
 
        gzip --best --to-stdout mandos.conf.5 \
156
 
                > $(MANDIR)/man5/mandos.conf.5.gz
157
 
        gzip --best --to-stdout mandos-clients.conf.5 \
158
 
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
159
 
 
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 \
165
 
                $(PREFIX)/lib/mandos/plugins.d
166
 
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
167
 
                install --mode=u=rwx \
168
 
                        --directory "$(CONFDIR)/plugins.d"; \
169
 
                install --mode=u=rw,go=r etc-plugins.d-README \
170
 
                        $(CONFDIR)/plugins.d/README ; \
171
 
        fi
172
 
        install --mode=u=rwx,go=rx \
173
 
                --target-directory=$(PREFIX)/lib/mandos plugin-runner
174
 
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
175
 
                mandos-keygen
176
 
        install --mode=u=rwx,go=rx \
177
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
178
 
                plugins.d/password-prompt
179
 
        install --mode=u=rwxs,go=rx \
180
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
181
 
                plugins.d/mandos-client
182
 
        install --mode=u=rwx,go=rx \
183
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
184
 
                plugins.d/usplash
185
 
        install initramfs-tools-hook \
186
 
                $(INITRAMFSTOOLS)/hooks/mandos
187
 
        install initramfs-tools-hook-conf \
188
 
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos
189
 
        install initramfs-tools-script \
190
 
                $(INITRAMFSTOOLS)/scripts/local-top/mandos
191
 
        install --mode=u=rw,go=r plugin-runner.conf $(CONFDIR)
192
 
        gzip --best --to-stdout mandos-keygen.8 \
193
 
                > $(MANDIR)/man8/mandos-keygen.8.gz
194
 
        gzip --best --to-stdout plugin-runner.8mandos \
195
 
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
196
 
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
197
 
                > $(MANDIR)/man8/password-prompt.8mandos.gz
198
 
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
199
 
                > $(MANDIR)/man8/mandos-client.8mandos.gz
200
 
# Post-installation stuff
201
 
        -$(PREFIX)/sbin/mandos-keygen --dir "$(KEYDIR)"
202
 
        update-initramfs -k all -u
203
 
        echo "Now run mandos-keygen --password --dir $(KEYDIR)"
204
 
 
205
 
uninstall: uninstall-server uninstall-client
206
 
 
207
 
uninstall-server:
208
 
        -rm --force $(PREFIX)/sbin/mandos \
209
 
                $(MANDIR)/man8/mandos.8.gz \
210
 
                $(MANDIR)/man5/mandos.conf.5.gz \
211
 
                $(MANDIR)/man5/mandos-clients.conf.5.gz
212
 
        update-rc.d -f mandos remove
213
 
        -rmdir $(CONFDIR)
214
 
 
215
 
uninstall-client:
216
 
# Refuse to uninstall client if /etc/crypttab is explicitly configured
217
 
# to use it.
218
 
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
219
 
                $(DESTDIR)/etc/crypttab
220
 
        -rm --force $(PREFIX)/sbin/mandos-keygen \
221
 
                $(PREFIX)/lib/mandos/plugin-runner \
222
 
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
223
 
                $(PREFIX)/lib/mandos/plugins.d/mandos-client \
224
 
                $(PREFIX)/lib/mandos/plugins.d/usplash \
225
 
                $(INITRAMFSTOOLS)/hooks/mandos \
226
 
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
227
 
                $(INITRAMFSTOOLS)/scripts/local-top/mandos \
228
 
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
229
 
                $(MANDIR)/man8/mandos-keygen.8.gz \
230
 
                $(MANDIR)/man8/password-prompt.8mandos.gz \
231
 
                $(MANDIR)/man8/mandos-client.8mandos.gz
232
 
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
233
 
                rm --force $(CONFDIR)/plugins.d/README; \
234
 
        fi
235
 
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
236
 
                 $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
237
 
        update-initramfs -k all -u
238
 
 
239
 
purge: purge-server purge-client
240
 
 
241
 
purge-server: uninstall-server
242
 
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf \
243
 
                $(DESTDIR)/etc/default/mandos \
244
 
                $(DESTDIR)/etc/init.d/mandos \
245
 
                $(DESTDIR)/var/run/mandos.pid
246
 
        -rmdir $(CONFDIR)
247
 
 
248
 
purge-client: uninstall-client
249
 
        -shred --remove $(KEYDIR)/seckey.txt
250
 
        -rm --force $(CONFDIR)/plugin-runner.conf \
251
 
                $(KEYDIR)/pubkey.txt $(KEYDIR)/seckey.txt
252
 
        -rmdir $(KEYDIR) $(CONFDIR)/plugins.d $(CONFDIR)
 
7
        rm -f plugbasedclient
 
8
 
 
9
client_debug: client
 
10
        mv -f client client.tmp
 
11
        $(MAKE) client CXXFLAGS="$(CXXFLAGS) -DDEBUG -DCERT_ROOT=\\\"./\\\""
 
12
        mv client client_debug
 
13
        mv client.tmp client