/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
 
125
        install initramfs-tools-script \
 
126
                /usr/share/initramfs-tools/scripts/local-top/mandos
116
127
        gzip --best --to-stdout mandos-keygen.8 \
117
 
                > /usr/share/man/man8/mandos-keygen.8.gz
118
 
        gzip --best --to-stdout mandos-client.8mandos \
119
 
                > /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
120
131
        gzip --best --to-stdout plugins.d/password-prompt.8mandos \
121
 
                > /usr/share/man/man8/password-prompt.8mandos.gz
 
132
                > $(MANDIR)/man8/password-prompt.8mandos.gz
122
133
        gzip --best --to-stdout plugins.d/password-request.8mandos \
123
 
                > /usr/share/man/man8/password-request.8mandos.gz
124
 
        -/usr/sbin/mandos-keygen
 
134
                > $(MANDIR)/man8/password-request.8mandos.gz
 
135
        -$(PREFIX)/sbin/mandos-keygen
125
136
        update-initramfs -k all -u
126
137
 
127
138
uninstall: uninstall-server uninstall-client
128
139
 
129
 
uninstall-server: /usr/sbin/mandos
130
 
        -rm --force /usr/sbin/mandos /usr/share/man/man8/mandos.8.gz \
131
 
                /usr/share/man/man5/mandos.conf.5.gz \
132
 
                /usr/share/man/man5/mandos-clients.conf.5.gz
133
 
        -rmdir /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)
134
146
 
135
147
uninstall-client:
136
 
# Refuse to uninstall client if /etc/crypttab is configured to use it
137
 
        ! grep --regexp='^ *[^ #].*keyscript=/usr/lib/mandos/mandos-client' \
 
148
# Refuse to uninstall client if /etc/crypttab is explicitly configured
 
149
# to use it.
 
150
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
138
151
                /etc/crypttab
139
 
        -rm --force /usr/sbin/mandos-keygen \
140
 
                /usr/lib/mandos/mandos-client \
141
 
                /usr/lib/mandos/plugins.d/password-prompt \
142
 
                /usr/lib/mandos/plugins.d/password-request \
 
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 \
143
156
                /usr/share/initramfs-tools/hooks/mandos \
144
157
                /usr/share/initramfs-tools/conf-hooks.d/mandos \
145
 
                /usr/share/man/man8/mandos-client.8mandos.gz \
146
 
                /usr/share/man/man8/mandos-keygen.8.gz \
147
 
                /usr/share/man/man8/password-prompt.8mandos.gz \
148
 
                /usr/share/man/man8/password-request.8mandos.gz
149
 
        -rmdir /usr/lib/mandos/plugins.d /usr/lib/mandos \
150
 
                /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
151
165
 
152
166
purge: purge-server purge-client
153
167
 
154
168
purge-server: uninstall-server
155
 
        -rm --force /etc/mandos/mandos.conf /etc/mandos/clients.conf
156
 
        -rmdir /etc/mandos
 
169
        -rm --force $(CONFDIR)/mandos.conf $(CONFDIR)/clients.conf
 
170
        -rmdir $(CONFDIR)
157
171
 
158
172
purge-client: uninstall-client
159
 
        -rm --force /etc/mandos/seckey.txt /etc/mandos/pubkey.txt
160
 
        -rmdir /etc/mandos /etc/mandos/plugins.d
 
173
        -rm --force $(CONFDIR)/seckey.txt $(CONFDIR)/pubkey.txt
 
174
        -rmdir $(CONFDIR) $(CONFDIR)/plugins.d