/mandos/release

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/release

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