/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: Teddy Hogeborn
  • Date: 2008-08-29 05:53:59 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080829055359-wkdasnyxtylmnxus
* mandos.xml (EXAMPLE): Replaced all occurences of command name with
                        "&COMMANDNAME;".

* plugins.d/password-prompt.c (main): Improved some documentation
                                      strings.  Do perror() of
                                      tcgetattr() fails.  Add debug
                                      output if interrupted by signal.
                                      Loop over write() instead of
                                      using fwrite() when outputting
                                      password.  Add debug output if
                                      getline() returns 0, unless it
                                      was caused by a signal.  Add
                                      exit status code to debug
                                      output.

* plugins.d/password-prompt.xml: Changed all single quotes to double
                                 quotes for consistency.  Removed
                                 <?xml-stylesheet>.
  (ENTITY TIMESTAMP): New.  Automatically updated by Emacs time-stamp
                      by using Emacs local variables.
  (/refentry/refentryinfo/title): Changed to "Mandos Manual".
  (/refentry/refentryinfo/productname): Changed to "Mandos".
  (/refentry/refentryinfo/date): New; set to "&TIMESTAMP;".
  (/refentry/refentryinfo/copyright): Split copyright holders.
  (/refentry/refnamediv/refpurpose): Improved wording.
  (SYNOPSIS): Fix to use correct markup.  Add short options.
  (DESCRIPTION, OPTIONS): Improved wording.
  (OPTIONS): Improved wording.  Use more correct markup.  Document
             short options.
  (EXIT STATUS): Add text.
  (ENVIRONMENT): Document use of "cryptsource" and "crypttarget".
  (FILES): REMOVED.
  (BUGS): Add text.
  (EXAMPLE): Added some examples.
  (SECURITY): Added text.
  (SEE ALSO): Remove reference to mandos(8).  Add reference to
              crypttab(5).

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 -Winline -Wvolatile-register-var
8
 
#       -Wunreachable-code 
9
 
#DEBUG=-ggdb3
 
7
        -Wpacked -Wnested-externs -Wunreachable-code -Winline \
 
8
        -Wvolatile-register-var
 
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
12
FORTIFY=-D_FORTIFY_SOURCE=2 # -fstack-protector-all
13
13
#COVERAGE=--coverage
14
14
OPTIMIZE=-Os
15
15
LANGUAGE=-std=gnu99
16
 
 
17
 
## Use these settings for a traditional /usr/local install
18
 
# PREFIX=$(DESTDIR)/usr/local
19
 
# CONFDIR=$(DESTDIR)/etc/mandos
20
 
# KEYDIR=$(DESTDIR)/etc/mandos/keys
21
 
# MANDIR=$(PREFIX)/man
22
 
# INITRAMFSTOOLS=$(DESTDIR)/etc/initramfs-tools
23
 
##
24
 
 
25
 
## These settings are for a package-type install
 
16
# PREFIX=/usr/local
26
17
PREFIX=$(DESTDIR)/usr
 
18
# CONFDIR=/usr/local/lib/mandos
27
19
CONFDIR=$(DESTDIR)/etc/mandos
28
 
KEYDIR=$(DESTDIR)/etc/keys/mandos
29
 
MANDIR=$(PREFIX)/share/man
30
 
INITRAMFSTOOLS=$(DESTDIR)/usr/share/initramfs-tools
31
 
##
 
20
# MANDIR=/usr/local/man
 
21
MANDIR=$(DESTDIR)/usr/share/man
32
22
 
33
23
GNUTLS_CFLAGS=$(shell libgnutls-config --cflags)
34
24
GNUTLS_LIBS=$(shell libgnutls-config --libs)
42
32
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS)
43
33
LDFLAGS=$(COVERAGE)
44
34
 
45
 
# Commands to format a DocBook <refentry> document into a manual page
 
35
# Commands to format a DocBook refentry document into a manual page
46
36
DOCBOOKTOMAN=cd $(dir $<); xsltproc --nonet --xinclude \
47
37
        --param man.charmap.use.subset          0 \
48
38
        --param make.year.ranges                1 \
52
42
         /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
53
43
        $(notdir $<); \
54
44
        $(MANPOST) $(notdir $@)
55
 
# DocBook-to-man post-processing to fix a '\n' escape bug
 
45
# DocBook-to-man post-processing to fix a \n escape bug
56
46
MANPOST=sed --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
57
47
 
58
 
PLUGINS=plugins.d/password-prompt plugins.d/mandos-client \
59
 
        plugins.d/usplash plugins.d/splashy plugins.d/askpass-fifo
 
48
PLUGINS=plugins.d/password-prompt plugins.d/password-request
60
49
PROGS=plugin-runner $(PLUGINS)
61
50
DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
62
 
        plugins.d/mandos-client.8mandos \
 
51
        plugins.d/password-request.8mandos \
63
52
        plugins.d/password-prompt.8mandos mandos.conf.5 \
64
53
        mandos-clients.conf.5
65
54
 
69
58
 
70
59
doc: $(DOCS)
71
60
 
72
 
%.5: %.xml legalnotice.xml
73
 
        $(DOCBOOKTOMAN)
74
 
 
75
 
%.8: %.xml legalnotice.xml
76
 
        $(DOCBOOKTOMAN)
77
 
 
78
 
%.8mandos: %.xml legalnotice.xml
79
 
        $(DOCBOOKTOMAN)
80
 
 
81
 
mandos.8: mandos.xml mandos-options.xml overview.xml legalnotice.xml
82
 
        $(DOCBOOKTOMAN)
83
 
 
84
 
mandos-keygen.8: mandos-keygen.xml overview.xml legalnotice.xml
85
 
        $(DOCBOOKTOMAN)
86
 
 
87
 
mandos.conf.5: mandos.conf.xml mandos-options.xml legalnotice.xml
88
 
        $(DOCBOOKTOMAN)
89
 
 
90
 
plugin-runner.8mandos: plugin-runner.xml overview.xml legalnotice.xml
91
 
        $(DOCBOOKTOMAN)
92
 
 
93
 
plugins.d/mandos-client.8mandos: plugins.d/mandos-client.xml \
94
 
                                        mandos-options.xml \
95
 
                                        overview.xml legalnotice.xml
96
 
        $(DOCBOOKTOMAN)
97
 
 
98
 
plugins.d/mandos-client: plugins.d/mandos-client.o
 
61
%.5: %.xml
 
62
        $(DOCBOOKTOMAN)
 
63
 
 
64
%.8: %.xml
 
65
        $(DOCBOOKTOMAN)
 
66
 
 
67
%.8mandos: %.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
99
77
        $(LINK.o) $(GNUTLS_LIBS) $(AVAHI_LIBS) $(GPGME_LIBS) \
100
78
                $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
101
79
 
114
92
check:
115
93
        ./mandos --check
116
94
 
117
 
# Run the client with a local config and key
118
 
run-client: all keydir/seckey.txt keydir/pubkey.txt
 
95
# Run the server with a local key
 
96
run-client: all keydir/seckey.txt keydir/pubkey.txt \
 
97
        keydir/secring.gpg keydir/pubring.gpg
119
98
        ./plugin-runner --plugin-dir=plugins.d \
120
 
                --config-file=plugin-runner.conf \
121
 
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt
 
99
                --options-for=password-request:--keydir=keydir
122
100
 
123
101
# Used by run-client
 
102
keydir/secring.gpg: keydir/seckey.txt
 
103
        gpg --homedir $(dir $<) --import $^
 
104
keydir/pubring.gpg: keydir/pubkey.txt
 
105
        gpg --homedir $(dir $<) --import $^
124
106
keydir/seckey.txt keydir/pubkey.txt: mandos-keygen
125
107
        install --directory keydir
126
108
        ./mandos-keygen --dir keydir --force
132
114
# Used by run-server
133
115
confdir/mandos.conf: mandos.conf
134
116
        install --directory confdir
135
 
        install --mode=u=rw,go=r $^ $@
 
117
        install $^ $@
136
118
confdir/clients.conf: clients.conf keydir/seckey.txt
137
119
        install --directory confdir
138
 
        install --mode=u=rw $< $@
 
120
        install clients.conf $@
139
121
# Add a client password
140
122
        ./mandos-keygen --dir keydir --password >> $@
141
123
 
142
 
install: install-server install-client-nokey
 
124
install: install-server install-client
143
125
 
144
126
install-server: doc
145
 
        install --directory $(CONFDIR)
146
 
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
147
 
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
148
 
                mandos.conf
149
 
        install --mode=u=rw --target-directory=$(CONFDIR) \
 
127
        install --directory --parents $(CONFDIR) $(MANDIR)/man5 \
 
128
                $(MANDIR)/man8
 
129
        install --mode=0755 mandos $(PREFIX)/sbin/mandos
 
130
        install --mode=0644 --target-directory=$(CONFDIR) mandos.conf
 
131
        install --mode=0640 --target-directory=$(CONFDIR) \
150
132
                clients.conf
151
 
        install --mode=u=rwx,go=rx init.d-mandos \
152
 
                $(DESTDIR)/etc/init.d/mandos
153
 
        install --mode=u=rw,go=r default-mandos \
154
 
                $(DESTDIR)/etc/default/mandos
155
 
        if [ -z $(DESTDIR) ]; then \
156
 
                update-rc.d mandos defaults 25 15;\
157
 
        fi
158
133
        gzip --best --to-stdout mandos.8 \
159
134
                > $(MANDIR)/man8/mandos.8.gz
160
135
        gzip --best --to-stdout mandos.conf.5 \
162
137
        gzip --best --to-stdout mandos-clients.conf.5 \
163
138
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
164
139
 
165
 
install-client-nokey: all doc
166
 
        install --directory $(PREFIX)/lib/mandos $(CONFDIR)
167
 
        install --directory --mode=u=rwx $(KEYDIR) \
168
 
                $(PREFIX)/lib/mandos/plugins.d
169
 
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
170
 
                install --mode=u=rwx \
171
 
                        --directory "$(CONFDIR)/plugins.d"; \
172
 
        fi
173
 
        install --mode=u=rwx,go=rx \
174
 
                --target-directory=$(PREFIX)/lib/mandos plugin-runner
175
 
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
 
140
install-client: all doc /usr/share/initramfs-tools/hooks/.
 
141
        install --directory --parents $(PREFIX)/lib/mandos \
 
142
                $(CONFDIR) $(MANDIR)/man8
 
143
        install --directory --mode=0700 $(PREFIX)/lib/mandos/plugins.d
 
144
        chmod u=rwx,g=,o= $(PREFIX)/lib/mandos/plugins.d
 
145
        install --mode=0755 --target-directory=$(PREFIX)/lib/mandos \
 
146
                plugin-runner
 
147
        install --mode=0755 --target-directory=$(PREFIX)/sbin \
176
148
                mandos-keygen
177
 
        install --mode=u=rwx,go=rx \
 
149
        install --mode=0755 \
178
150
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
179
151
                plugins.d/password-prompt
180
 
        install --mode=u=rwxs,go=rx \
181
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
182
 
                plugins.d/mandos-client
183
 
        install --mode=u=rwxs,go=rx \
184
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
185
 
                plugins.d/usplash
186
 
        install --mode=u=rwxs,go=rx \
187
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
188
 
                plugins.d/splashy
189
 
        install --mode=u=rwxs,go=rx \
190
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
191
 
                plugins.d/askpass-fifo
 
152
        install --mode=4755 \
 
153
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
154
                plugins.d/password-request
192
155
        install initramfs-tools-hook \
193
 
                $(INITRAMFSTOOLS)/hooks/mandos
194
 
        install --mode=u=rw,go=r initramfs-tools-hook-conf \
195
 
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos
 
156
                /usr/share/initramfs-tools/hooks/mandos
 
157
        install initramfs-tools-hook-conf \
 
158
                /usr/share/initramfs-tools/conf-hooks.d/mandos
196
159
        install initramfs-tools-script \
197
 
                $(INITRAMFSTOOLS)/scripts/local-top/mandos
198
 
        install --mode=u=rw,go=r plugin-runner.conf $(CONFDIR)
 
160
                /usr/share/initramfs-tools/scripts/local-top/mandos
199
161
        gzip --best --to-stdout mandos-keygen.8 \
200
162
                > $(MANDIR)/man8/mandos-keygen.8.gz
201
163
        gzip --best --to-stdout plugin-runner.8mandos \
202
164
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
203
165
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
204
166
                > $(MANDIR)/man8/password-prompt.8mandos.gz
205
 
        gzip --best --to-stdout plugins.d/mandos-client.8mandos \
206
 
                > $(MANDIR)/man8/mandos-client.8mandos.gz
207
 
 
208
 
install-client: install-client-nokey
209
 
# Post-installation stuff
210
 
        -$(PREFIX)/sbin/mandos-keygen --dir "$(KEYDIR)"
 
167
        gzip --best --to-stdout plugins.d/password-request.8mandos \
 
168
                > $(MANDIR)/man8/password-request.8mandos.gz
 
169
        -$(PREFIX)/sbin/mandos-keygen
211
170
        update-initramfs -k all -u
212
 
        echo "Now run mandos-keygen --password --dir $(KEYDIR)"
213
171
 
214
172
uninstall: uninstall-server uninstall-client
215
173
 
216
 
uninstall-server:
 
174
uninstall-server: $(PREFIX)/sbin/mandos
217
175
        -rm --force $(PREFIX)/sbin/mandos \
218
176
                $(MANDIR)/man8/mandos.8.gz \
219
177
                $(MANDIR)/man5/mandos.conf.5.gz \
220
178
                $(MANDIR)/man5/mandos-clients.conf.5.gz
221
 
        update-rc.d -f mandos remove
222
179
        -rmdir $(CONFDIR)
223
180
 
224
181
uninstall-client:
225
182
# Refuse to uninstall client if /etc/crypttab is explicitly configured
226
183
# to use it.
227
184
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
228
 
                $(DESTDIR)/etc/crypttab
 
185
                /etc/crypttab
229
186
        -rm --force $(PREFIX)/sbin/mandos-keygen \
230
187
                $(PREFIX)/lib/mandos/plugin-runner \
231
188
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
232
 
                $(PREFIX)/lib/mandos/plugins.d/mandos-client \
233
 
                $(PREFIX)/lib/mandos/plugins.d/usplash \
234
 
                $(PREFIX)/lib/mandos/plugins.d/splashy \
235
 
                $(INITRAMFSTOOLS)/hooks/mandos \
236
 
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
237
 
                $(INITRAMFSTOOLS)/scripts/local-top/mandos \
 
189
                $(PREFIX)/lib/mandos/plugins.d/password-request \
 
190
                /usr/share/initramfs-tools/hooks/mandos \
 
191
                /usr/share/initramfs-tools/conf-hooks.d/mandos \
238
192
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
239
193
                $(MANDIR)/man8/mandos-keygen.8.gz \
240
194
                $(MANDIR)/man8/password-prompt.8mandos.gz \
241
 
                $(MANDIR)/man8/mandos-client.8mandos.gz
242
 
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
243
 
                rm --force $(CONFDIR)/plugins.d/README; \
244
 
        fi
 
195
                $(MANDIR)/man8/password-request.8mandos.gz
245
196
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
246
 
                 $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
 
197
                 $(PREFIX)/lib/mandos $(CONFDIR)
247
198
        update-initramfs -k all -u
248
199
 
249
200
purge: purge-server purge-client
250
201
 
251
202
purge-server: uninstall-server
252
 
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf \
253
 
                $(DESTDIR)/etc/default/mandos \
254
 
                $(DESTDIR)/etc/init.d/mandos \
255
 
                $(DESTDIR)/var/run/mandos.pid
 
203
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf
256
204
        -rmdir $(CONFDIR)
257
205
 
258
206
purge-client: uninstall-client
259
 
        -shred --remove $(KEYDIR)/seckey.txt
260
 
        -rm --force $(CONFDIR)/plugin-runner.conf \
261
 
                $(KEYDIR)/pubkey.txt $(KEYDIR)/seckey.txt
262
 
        -rmdir $(KEYDIR) $(CONFDIR)/plugins.d $(CONFDIR)
 
207
        -rm --force $(CONFDIR)/seckey.txt $(CONFDIR)/pubkey.txt
 
208
        -rmdir $(CONFDIR) $(CONFDIR)/plugins.d