/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
 
# PREFIX=/usr/local
17
 
PREFIX=$(DESTDIR)/usr
18
 
# CONFDIR=/usr/local/lib/mandos
19
 
CONFDIR=$(DESTDIR)/etc/mandos
20
 
# KEYDIR=/usr/local/lib/mandos/keys
21
 
KEYDIR=$(DESTDIR)/etc/keys/mandos
22
 
# MANDIR=/usr/local/man
23
 
MANDIR=$(DESTDIR)/usr/share/man
24
 
 
25
 
GNUTLS_CFLAGS=$(shell libgnutls-config --cflags)
26
 
GNUTLS_LIBS=$(shell libgnutls-config --libs)
27
 
AVAHI_CFLAGS=$(shell pkg-config --cflags-only-I avahi-core)
28
 
AVAHI_LIBS=$(shell pkg-config --libs avahi-core)
29
 
GPGME_CFLAGS=$(shell gpgme-config --cflags)
30
 
GPGME_LIBS=$(shell gpgme-config --libs)
31
 
 
32
 
# Do not change these two
33
 
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
34
 
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS)
35
 
LDFLAGS=$(COVERAGE)
36
 
 
37
 
# Commands to format a DocBook refentry document into a manual page
38
 
DOCBOOKTOMAN=cd $(dir $<); xsltproc --nonet --xinclude \
39
 
        --param man.charmap.use.subset          0 \
40
 
        --param make.year.ranges                1 \
41
 
        --param make.single.year.ranges         1 \
42
 
        --param man.output.quietly              1 \
43
 
        --param man.authors.section.enabled     0 \
44
 
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
45
 
        $(notdir $<); \
46
 
        $(MANPOST) $(notdir $@)
47
 
# DocBook-to-man post-processing to fix a \n escape bug
48
 
MANPOST=sed --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
49
 
 
50
 
PLUGINS=plugins.d/password-prompt plugins.d/password-request
51
 
PROGS=plugin-runner $(PLUGINS)
52
 
DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
53
 
        plugins.d/password-request.8mandos \
54
 
        plugins.d/password-prompt.8mandos mandos.conf.5 \
55
 
        mandos-clients.conf.5
56
 
 
57
 
objects=$(addsuffix .o,$(PROGS))
58
 
 
59
 
all: $(PROGS)
60
 
 
61
 
doc: $(DOCS)
62
 
 
63
 
%.5: %.xml legalnotice.xml
64
 
        $(DOCBOOKTOMAN)
65
 
 
66
 
%.8: %.xml legalnotice.xml
67
 
        $(DOCBOOKTOMAN)
68
 
 
69
 
%.8mandos: %.xml legalnotice.xml
70
 
        $(DOCBOOKTOMAN)
71
 
 
72
 
mandos.8: mandos.xml mandos-options.xml overview.xml legalnotice.xml
73
 
        $(DOCBOOKTOMAN)
74
 
 
75
 
mandos-keygen.8: mandos-keygen.xml overview.xml legalnotice.xml
76
 
        $(DOCBOOKTOMAN)
77
 
 
78
 
mandos.conf.5: mandos.conf.xml mandos-options.xml legalnotice.xml
79
 
        $(DOCBOOKTOMAN)
80
 
 
81
 
plugin-runner.8mandos: plugin-runner.xml overview.xml legalnotice.xml
82
 
        $(DOCBOOKTOMAN)
83
 
 
84
 
plugins.d/password-request.8mandos: plugins.d/password-request.xml \
85
 
                                        mandos-options.xml \
86
 
                                        overview.xml legalnotice.xml
87
 
        $(DOCBOOKTOMAN)
88
 
 
89
 
plugins.d/password-request: plugins.d/password-request.o
90
 
        $(LINK.o) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) \
91
 
                $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
92
 
 
93
 
.PHONY : all doc clean distclean run-client run-server install \
94
 
        install-server install-client uninstall uninstall-server \
95
 
        uninstall-client purge purge-server purge-client
 
1
CFLAGS="-Wall -std=gnu99"
 
2
LDFLAGS=-lgnutls
 
3
 
 
4
all: plugbasedclient
96
5
 
97
6
clean:
98
 
        -rm --force $(PROGS) $(objects) $(DOCS) core
99
 
 
100
 
distclean: clean
101
 
mostlyclean: clean
102
 
maintainer-clean: clean
103
 
        -rm --force --recursive keydir confdir
104
 
 
105
 
check:
106
 
        ./mandos --check
107
 
 
108
 
# Run the client with a local config and key
109
 
run-client: all keydir/seckey.txt keydir/pubkey.txt
110
 
        ./plugin-runner --plugin-dir=plugins.d \
111
 
                --config-file=plugin-runner.conf \
112
 
                --options-for=password-request:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt
113
 
 
114
 
# Used by run-client
115
 
keydir/seckey.txt keydir/pubkey.txt: mandos-keygen
116
 
        install --directory keydir
117
 
        ./mandos-keygen --dir keydir --force
118
 
 
119
 
# Run the server with a local config
120
 
run-server: confdir/mandos.conf confdir/clients.conf
121
 
        ./mandos --debug --configdir=confdir
122
 
 
123
 
# Used by run-server
124
 
confdir/mandos.conf: mandos.conf
125
 
        install --directory confdir
126
 
        install --mode=u=rw,go=r $^ $@
127
 
confdir/clients.conf: clients.conf keydir/seckey.txt
128
 
        install --directory confdir
129
 
        install --mode=u=rw,g=r $< $@
130
 
# Add a client password
131
 
        ./mandos-keygen --dir keydir --password >> $@
132
 
 
133
 
install: install-server install-client
134
 
 
135
 
install-server: doc
136
 
        install --directory $(CONFDIR) $(MANDIR)/man5 \
137
 
                $(MANDIR)/man8
138
 
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
139
 
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
140
 
                mandos.conf
141
 
        install --mode=u=rw,g=r --target-directory=$(CONFDIR) \
142
 
                clients.conf
143
 
        install --mode=u=rwx,go=rx init.d-mandos /etc/init.d/mandos
144
 
        install --mode=u=rw,go=r default-mandos /etc/default/mandos
145
 
        update-rc.d mandos defaults
146
 
        gzip --best --to-stdout mandos.8 \
147
 
                > $(MANDIR)/man8/mandos.8.gz
148
 
        gzip --best --to-stdout mandos.conf.5 \
149
 
                > $(MANDIR)/man5/mandos.conf.5.gz
150
 
        gzip --best --to-stdout mandos-clients.conf.5 \
151
 
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
152
 
 
153
 
install-client: all doc /usr/share/initramfs-tools/hooks/.
154
 
        install --directory $(PREFIX)/lib/mandos $(CONFDIR) \
155
 
                $(MANDIR)/man8
156
 
        install --directory --mode=u=rwx $(KEYDIR)
157
 
        install --directory --mode=u=rwx \
158
 
                $(PREFIX)/lib/mandos/plugins.d
159
 
        if [ "$(CONFDIR)/plugins.d" \
160
 
                        != "$(PREFIX)/lib/mandos/plugins.d" ]; then \
161
 
                        install --directory "$(CONFDIR)/plugins.d"; \
162
 
                fi
163
 
        install --mode=u=rwx,go=rx \
164
 
                --target-directory=$(PREFIX)/lib/mandos plugin-runner
165
 
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
166
 
                mandos-keygen
167
 
        install --mode=u=rwx,go=rx \
168
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
169
 
                plugins.d/password-prompt
170
 
        install --mode=u=rwxs,go=rx \
171
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
172
 
                plugins.d/password-request
173
 
        install --mode=u=rwx,go=rx \
174
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
175
 
                plugins.d/usplash
176
 
        install initramfs-tools-hook \
177
 
                /usr/share/initramfs-tools/hooks/mandos
178
 
        install initramfs-tools-hook-conf \
179
 
                /usr/share/initramfs-tools/conf-hooks.d/mandos
180
 
        install initramfs-tools-script \
181
 
                /usr/share/initramfs-tools/scripts/local-top/mandos
182
 
        install --mode=u=rw,go=r plugin-runner.conf $(CONFDIR)
183
 
        gzip --best --to-stdout mandos-keygen.8 \
184
 
                > $(MANDIR)/man8/mandos-keygen.8.gz
185
 
        gzip --best --to-stdout plugin-runner.8mandos \
186
 
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
187
 
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
188
 
                > $(MANDIR)/man8/password-prompt.8mandos.gz
189
 
        gzip --best --to-stdout plugins.d/password-request.8mandos \
190
 
                > $(MANDIR)/man8/password-request.8mandos.gz
191
 
        -$(PREFIX)/sbin/mandos-keygen --dir "$(KEYDIR)"
192
 
        update-initramfs -k all -u
193
 
        echo "Now run mandos-keygen --password --dir $(KEYDIR)"
194
 
 
195
 
uninstall: uninstall-server uninstall-client
196
 
 
197
 
uninstall-server:
198
 
        -rm --force $(PREFIX)/sbin/mandos \
199
 
                $(MANDIR)/man8/mandos.8.gz \
200
 
                $(MANDIR)/man5/mandos.conf.5.gz \
201
 
                $(MANDIR)/man5/mandos-clients.conf.5.gz
202
 
        update-rc.d -f mandos remove
203
 
        -rmdir $(CONFDIR)
204
 
 
205
 
uninstall-client:
206
 
# Refuse to uninstall client if /etc/crypttab is explicitly configured
207
 
# to use it.
208
 
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
209
 
                /etc/crypttab
210
 
        -rm --force $(PREFIX)/sbin/mandos-keygen \
211
 
                $(PREFIX)/lib/mandos/plugin-runner \
212
 
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
213
 
                $(PREFIX)/lib/mandos/plugins.d/password-request \
214
 
                /usr/share/initramfs-tools/hooks/mandos \
215
 
                /usr/share/initramfs-tools/conf-hooks.d/mandos \
216
 
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
217
 
                $(MANDIR)/man8/mandos-keygen.8.gz \
218
 
                $(MANDIR)/man8/password-prompt.8mandos.gz \
219
 
                $(MANDIR)/man8/password-request.8mandos.gz
220
 
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
221
 
                 $(PREFIX)/lib/mandos $(CONFDIR)
222
 
        update-initramfs -k all -u
223
 
 
224
 
purge: purge-server purge-client
225
 
 
226
 
purge-server: uninstall-server
227
 
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf \
228
 
                /etc/default/mandos /etc/init.d/mandos
229
 
        -rmdir $(CONFDIR)
230
 
 
231
 
purge-client: uninstall-client
232
 
        -shred --remove $(KEYDIR)/seckey.txt
233
 
        -rm --force $(CONFDIR)/plugin-runner.conf \
234
 
                $(KEYDIR)/pubkey.txt $(KEYDIR)/seckey.txt
235
 
        -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