/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-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:
14
14
OPTIMIZE=-Os
15
15
LANGUAGE=-std=gnu99
16
16
# PREFIX=/usr/local
17
 
PREFIX=$(DESTDIR)/usr
 
17
PREFIX=/usr
18
18
# CONFDIR=/usr/local/lib/mandos
19
 
CONFDIR=$(DESTDIR)/etc/mandos
 
19
CONFDIR=/etc/mandos
20
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)
 
21
MANDIR=/usr/share/man
29
22
 
30
23
# Do not change these two
31
 
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
32
 
        $(LANGUAGE) $(GNUTLS_CFLAGS) $(AVAHI_CFLAGS) $(GPGME_CFLAGS)
 
24
CFLAGS=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) $(LANGUAGE)
33
25
LDFLAGS=$(COVERAGE)
34
26
 
35
 
# Commands to format a DocBook refentry document into a manual page
36
 
DOCBOOKTOMAN=cd $(dir $<); xsltproc --nonet --xinclude \
 
27
DOCBOOKTOMAN=xsltproc --nonet \
37
28
        --param man.charmap.use.subset          0 \
38
29
        --param make.year.ranges                1 \
39
30
        --param make.single.year.ranges         1 \
40
31
        --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'
 
32
        --param man.authors.section.enabled     0
47
33
 
48
34
PLUGINS=plugins.d/password-prompt plugins.d/password-request
49
35
PROGS=plugin-runner $(PLUGINS)
52
38
        plugins.d/password-prompt.8mandos mandos.conf.5 \
53
39
        mandos-clients.conf.5
54
40
 
55
 
objects=$(addsuffix .o,$(PROGS))
 
41
objects=$(shell for p in $(PROGS); do echo $${p}.o; done)
56
42
 
57
43
all: $(PROGS)
58
44
 
59
45
doc: $(DOCS)
60
46
 
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)
 
47
%.5: %.xml
 
48
        cd $(dir $^); $(DOCBOOKTOMAN) $(notdir $^)
 
49
 
 
50
%.8: %.xml
 
51
        cd $(dir $^); $(DOCBOOKTOMAN) $(notdir $^)
 
52
 
 
53
%.8mandos: %.xml
 
54
        cd $(dir $^); $(DOCBOOKTOMAN) $(notdir $^)
 
55
 
 
56
plugin-runner: plugin-runner.o
 
57
        $(LINK.o) -lgnutls $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
75
58
 
76
59
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 \
 
60
        $(LINK.o) -lgnutls -lavahi-core -lgpgme $(COMMON) $^ \
 
61
                $(LOADLIBES) $(LDLIBS) -o $@
 
62
 
 
63
plugins.d/password-prompt: plugins.d/password-prompt.o
 
64
        $(LINK.o) $(COMMON) $^ $(LOADLIBES) $(LDLIBS) -o $@
 
65
 
 
66
.PHONY : all clean distclean run-client run-server install \
81
67
        install-server install-client uninstall uninstall-server \
82
68
        uninstall-client purge purge-server purge-client
83
69
 
87
73
distclean: clean
88
74
mostlyclean: clean
89
75
maintainer-clean: clean
90
 
        -rm --force --recursive keydir confdir
 
76
        -rm --force --recursive keydir
91
77
 
92
78
check:
93
79
        ./mandos --check
94
80
 
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
 
81
run-client: all
 
82
        -mkdir keydir
 
83
        -./mandos-keygen --dir keydir
98
84
        ./plugin-runner --plugin-dir=plugins.d \
99
85
                --options-for=password-request:--keydir=keydir
100
86
 
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 >> $@
 
87
run-server:
 
88
        ./mandos --debug --configdir=.
123
89
 
124
90
install: install-server install-client
125
91
 
126
92
install-server: doc
127
 
        install --directory --parents $(CONFDIR) $(MANDIR)/man5 \
 
93
        mkdir --mode=0755 --parents $(CONFDIR) $(MANDIR)/man5 \
128
94
                $(MANDIR)/man8
129
95
        install --mode=0755 mandos $(PREFIX)/sbin/mandos
130
96
        install --mode=0644 --target-directory=$(CONFDIR) mandos.conf
138
104
                > $(MANDIR)/man5/mandos-clients.conf.5.gz
139
105
 
140
106
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
 
107
        mkdir --mode=0755 --parents $(PREFIX)/lib/mandos $(CONFDIR) \
 
108
                $(MANDIR)/man8
 
109
        -mkdir --mode=0700 $(PREFIX)/lib/mandos/plugins.d
144
110
        chmod u=rwx,g=,o= $(PREFIX)/lib/mandos/plugins.d
145
111
        install --mode=0755 --target-directory=$(PREFIX)/lib/mandos \
146
112
                plugin-runner