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