blob: d1fa83f705d86ac86679ca462590c230a18bd7ca (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
#!/bin/sh
set -e
. /usr/share/debconf/confmodule
if [ "$1" = configure ]; then
lastversion="$2";
# lets give them a bind user/group in all cases.
getent group bind >/dev/null 2>&1 || addgroup --system bind
getent passwd bind >/dev/null 2>&1 ||
adduser --system --home /var/cache/bind --no-create-home \
--disabled-password --ingroup bind bind
if [ -z "$lastversion" ] || dpkg --compare-versions "$lastversion" lt 1:9.4.2-2 ; then
mkdir -p /var/lib/bind
chown root:bind /var/lib/bind
chmod 775 /var/lib/bind
fi
if [ ! -s /etc/bind/rndc.key ] && [ ! -s /etc/bind/rndc.conf ]; then
rndc-confgen -r /dev/urandom -a
fi
# no sumfile means you get the default
[ -f /var/lib/bind/bind9-default.md5sum ] ||
echo "2cfcfb7bf1b99c7930fd475907e38be7 /etc/default/bind9" > /var/lib/bind/bind9-default.md5sum
if [ -f /etc/default/bind9 ] && \
[ "$(cat /var/lib/bind/bind9-default.md5sum)" = "$(md5sum /etc/default/bind9)" ]; then
config="/etc/default/bind9"
elif [ ! -e /etc/default/bind9 ]; then
config="/etc/default/bind9"
else
config="/etc/default/bind9.dpkg-dist"
fi
localconf=""
if [ ! -f $config ]; then
CONF=/etc/bind/named.conf
for file in ${CONF} ${CONF}.local ${CONF}.default-zones; do
if [ -f ${file} ]; then
theirs=$(md5sum $file | sed 's/ .*$//')
mine=$(dpkg --status bind9 | grep "^ $file " | sed -n 's/.* //p')
if [ "$mine" != "$theirs" ]; then
localconf="y"
fi
else
localconf="y"
fi
done
if [ -n "$localconf" ]; then
db_reset bind9/start-as-user
else
db_set bind9/start-as-user bind || true
fi
echo '#' >> $config
echo '# run resolvconf?' >> $config
db_get bind9/run-resolvconf
if [ ! -z "$RET" ] && [ "$RET" = "true" ]; then
echo "RESOLVCONF=yes" >> $config
else
echo "RESOLVCONF=no" >> $config
fi
db_get bind9/start-as-user
USER=$RET
db_get bind9/different-configuration-file
CONFFILE=$RET
echo '' >> $config
echo '# startup options for the server' >> $config
if [ ! -z "$USER" ] && [ ! -z "$CONFFILE" ]; then
echo "OPTIONS=\"-u $USER -c $CONFFILE\"" >> $config
elif [ ! -z "$USER" ]; then
echo "OPTIONS=\"-u $USER\"" >> $config
elif [ ! -z "$CONFFILE" ]; then
echo "OPTIONS=\"-c $CONFFILE\"" >> $config
else
echo "OPTIONS=\"\"" >> $config
fi
else
db_get bind9/run-resolvconf
if [ ! -z "$RET" ] && [ "$RET" = "true" ]; then
sed -e "s#^\([[:space:]]*\)\(RESOLVCONF=[[:space:]]*\)[^ ]*#\1\2yes#g" -i $config
else
sed -e "s#^\([[:space:]]*\)\(RESOLVCONF=[[:space:]]*\)[^ ]*#\1\2no#g" -i $config
fi
db_get bind9/start-as-user
if [ ! -z "$RET" ]; then
if [ ! -z "`grep OPTIONS $config`" ]; then
if [ ! -z "`grep OPTIONS $config | grep '\-u'`" ]; then
sed -e "s#\([[:space:]]*OPTIONS[[:space:]]*\)=\"\([^\"]*\)-u[[:space:]]*[^\" ]*\([^\"]*\)\"#\1=\"\2-u $RET\3\"#g" -i $config
else
sed -e "s#\([[:space:]]*OPTIONS[[:space:]]*\)=\"\([^\"]*\)\"#\1=\"\2 -u $RET\"#g" -i $config
fi
else
echo "OPTIONS=\"-u $RET\"" >> $config
fi
fi
db_get bind9/different-configuration-file
if [ ! -z "$RET" ]; then
if [ ! -z "`grep OPTIONS $config | grep '\-c'`" ]; then
sed -e "s#\([[:space:]]*OPTIONS[[:space:]]*\)=\"\([^\"]*\)-c[[:space:]]*[^\" ]*\([^\"]*\)\"#\1=\"\2-c $RET\3\"#g" -i $config
else
sed -e "s#\([[:space:]]*OPTIONS[[:space:]]*\)=\"\([^\"]*\)\"#\1=\"\2 -c $RET\"#g" -i $config
fi
fi
fi
if [ "$config" = "/etc/default/bind9" ]; then
md5sum /etc/default/bind9 > /var/lib/bind/bind9-default.md5sum
fi
uid=$(ls -ln /etc/bind/rndc.key | awk '{print $3}')
if [ "$uid" = "0" ]; then
[ -n "$localconf" ] || chown bind /etc/bind/rndc.key
chgrp bind /etc/bind
chmod g+s /etc/bind
chgrp bind /etc/bind/rndc.key /var/cache/bind
chgrp bind /etc/bind/named.conf* || true
chmod g+r /etc/bind/rndc.key /etc/bind/named.conf* || true
chmod g+rwx /var/cache/bind
fi
fi
db_stop
#DEBHELPER#
exit 0
|