/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-16 03:29:08 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080816032908-ihw7c05r2mnyk389
Add feature to specify custom environment variables for plugins.

* plugin-runner.c (plugin): New members "environ" and "envc" to
                            contain possible custom environment.
  (getplugin): Return NULL on failure instead of doing exit(); all
               callers changed.
  (add_to_char_array): New helper function for "add_argument" and
                       "add_environment".
  (addargument): Renamed to "add_argument".  Return bool.  Call
                 "add_to_char_array" to actually do things.
  (add_environment): New; analogous to "add_argument".
  (addcustomargument): Renamed to "add_to_argv" to avoid confusion
                       with "add_argument".
  (main): New options "--global-envs" and "--envs-for" to specify
          custom environment for plugins.  Print environment for
          plugins in debug mode.  Use asprintf instead of strcpy and
          strcat.  Use execve() for plugins with custom environments.
          Free environment for plugin when freeing plugin list.

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=/usr
 
18
# CONFDIR=/usr/local/lib/mandos
 
19
CONFDIR=/etc/mandos
 
20
# MANDIR=/usr/local/man
 
21
MANDIR=/usr/share/man
16
22
 
17
23
# Do not change these two
18
24
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) $(LANGUAGE)
26
32
        --param man.authors.section.enabled     0
27
33
 
28
34
PLUGINS=plugins.d/password-prompt plugins.d/password-request
29
 
PROGS=mandos-client $(PLUGINS)
30
 
DOCS=mandos.8 mandos-client.8mandos mandos-keygen.8 \
 
35
PROGS=plugin-runner $(PLUGINS)
 
36
DOCS=mandos.8 plugin-runner.8mandos mandos-keygen.8 \
31
37
        plugins.d/password-request.8mandos \
32
38
        plugins.d/password-prompt.8mandos mandos.conf.5 \
33
 
         mandos-clients.conf.5
 
39
        mandos-clients.conf.5
34
40
 
35
41
objects=$(shell for p in $(PROGS); do echo $${p}.o; done)
36
42
 
47
53
%.8mandos: %.xml
48
54
        cd $(dir $^); $(DOCBOOKTOMAN) $(notdir $^)
49
55
 
50
 
mandos-client: mandos-client.o
 
56
plugin-runner: plugin-runner.o
51
57
        $(LINK.o) -lgnutls $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
52
58
 
53
59
plugins.d/password-request: plugins.d/password-request.o
75
81
run-client: all
76
82
        -mkdir keydir
77
83
        -./mandos-keygen --dir keydir
78
 
        ./mandos-client --plugin-dir=plugins.d \
 
84
        ./plugin-runner --plugin-dir=plugins.d \
79
85
                --options-for=password-request:--keydir=keydir
80
86
 
81
87
run-server:
84
90
install: install-server install-client
85
91
 
86
92
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 \
 
93
        mkdir --mode=0755 --parents $(CONFDIR) $(MANDIR)/man5 \
 
94
                $(MANDIR)/man8
 
95
        install --mode=0755 mandos $(PREFIX)/sbin/mandos
 
96
        install --mode=0644 --target-directory=$(CONFDIR) mandos.conf
 
97
        install --mode=0640 --target-directory=$(CONFDIR) \
91
98
                clients.conf
92
99
        gzip --best --to-stdout mandos.8 \
93
 
                > /usr/share/man/man8/mandos.8.gz
 
100
                > $(MANDIR)/man8/mandos.8.gz
94
101
        gzip --best --to-stdout mandos.conf.5 \
95
 
                > /usr/share/man/man5/mandos.conf.5.gz
 
102
                > $(MANDIR)/man5/mandos.conf.5.gz
96
103
        gzip --best --to-stdout mandos-clients.conf.5 \
97
 
                > /usr/share/man/man5/mandos-clients.conf.5.gz
 
104
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
98
105
 
99
106
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
 
107
        mkdir --mode=0755 --parents $(PREFIX)/lib/mandos $(CONFDIR) \
 
108
                $(MANDIR)/man8
 
109
        -mkdir --mode=0700 $(PREFIX)/lib/mandos/plugins.d
 
110
        chmod u=rwx,g=,o= $(PREFIX)/lib/mandos/plugins.d
 
111
        install --mode=0755 --target-directory=$(PREFIX)/lib/mandos \
 
112
                plugin-runner
 
113
        install --mode=0755 --target-directory=$(PREFIX)/sbin \
 
114
                mandos-keygen
106
115
        install --mode=0755 \
107
 
                --target-directory=/usr/lib/mandos/plugins.d \
 
116
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
108
117
                plugins.d/password-prompt
109
118
        install --mode=4755 \
110
 
                --target-directory=/usr/lib/mandos/plugins.d \
 
119
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
111
120
                plugins.d/password-request
112
121
        install initramfs-tools-hook \
113
122
                /usr/share/initramfs-tools/hooks/mandos
114
123
        install initramfs-tools-hook-conf \
115
124
                /usr/share/initramfs-tools/conf-hooks.d/mandos
116
 
        install initramfs-tools-hook-conf \
117
 
                /usr/share/initramfs-tools/conf-hooks.d/mandos
 
125
        install initramfs-tools-script \
 
126
                /usr/share/initramfs-tools/scripts/local-top/mandos
118
127
        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
 
128
                > $(MANDIR)/man8/mandos-keygen.8.gz
 
129
        gzip --best --to-stdout plugin-runner.8mandos \
 
130
                > $(MANDIR)/man8/plugin-runner.8mandos.gz
122
131
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
123
 
                > /usr/share/man/man8/password-prompt.8mandos.gz
 
132
                > $(MANDIR)/man8/password-prompt.8mandos.gz
124
133
        gzip --best --to-stdout plugins.d/password-request.8mandos \
125
 
                > /usr/share/man/man8/password-request.8mandos.gz
126
 
        /usr/sbin/mandos-keygen
 
134
                > $(MANDIR)/man8/password-request.8mandos.gz
 
135
        -$(PREFIX)/sbin/mandos-keygen
127
136
        update-initramfs -k all -u
128
137
 
129
138
uninstall: uninstall-server uninstall-client
130
139
 
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
 
140
uninstall-server: $(PREFIX)/sbin/mandos
 
141
        -rm --force $(PREFIX)/sbin/mandos \
 
142
                $(MANDIR)/man8/mandos.8.gz \
 
143
                $(MANDIR)/man5/mandos.conf.5.gz \
 
144
                $(MANDIR)/man5/mandos-clients.conf.5.gz
 
145
        -rmdir $(CONFDIR)
136
146
 
137
147
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 \
 
148
# Refuse to uninstall client if /etc/crypttab is explicitly configured
 
149
# to use it.
 
150
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
 
151
                /etc/crypttab
 
152
        -rm --force $(PREFIX)/sbin/mandos-keygen \
 
153
                $(PREFIX)/lib/mandos/plugin-runner \
 
154
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
 
155
                $(PREFIX)/lib/mandos/plugins.d/password-request \
142
156
                /usr/share/initramfs-tools/hooks/mandos \
143
157
                /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
 
158
                $(MANDIR)/man8/plugin-runner.8mandos.gz \
 
159
                $(MANDIR)/man8/mandos-keygen.8.gz \
 
160
                $(MANDIR)/man8/password-prompt.8mandos.gz \
 
161
                $(MANDIR)/man8/password-request.8mandos.gz
 
162
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
 
163
                 $(PREFIX)/lib/mandos $(CONFDIR)
 
164
        update-initramfs -k all -u
150
165
 
151
166
purge: purge-server purge-client
152
167
 
153
168
purge-server: uninstall-server
154
 
        -rm --force /etc/mandos/server.conf /etc/mandos/clients.conf
155
 
        -rmdir --force /etc/mandos
 
169
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf
 
170
        -rmdir $(CONFDIR)
156
171
 
157
172
purge-client: uninstall-client
158
 
        -rm --force /etc/mandos/seckey.txt /etc/mandos/pubkey.txt
159
 
        -rmdir --force /etc/mandos
 
173
        -rm --force $(CONFDIR)/seckey.txt $(CONFDIR)/pubkey.txt
 
174
        -rmdir $(CONFDIR) $(CONFDIR)/plugins.d