Unless we're using "mktemp -u ..." (not recommended), it will create the temp file as part of its safety checking. Thus you should only create the name (file) if you're going to use it, and always remove it if you have created it. Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
80 lines
1.9 KiB
Bash
80 lines
1.9 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
# Copyright (C) 2014 Noah Meyerhans <frodo@morgul.net>
|
|
# Licensed under the terms of the GNU General Public License version 2
|
|
# or (at your discretion) any later later version
|
|
|
|
USE_PROCD=1
|
|
|
|
START=22
|
|
|
|
config_file=/etc/bind/named.conf
|
|
config_dir=$(dirname $config_file)
|
|
named_options_file=/etc/bind/named-rndc.conf
|
|
rndc_conf_file=/etc/bind/rndc.conf
|
|
pid_file=/var/run/named/named.pid
|
|
|
|
logdir=/var/log/named/
|
|
cachedir=/var/cache/bind
|
|
libdir=/var/lib/bind
|
|
dyndir=/tmp/bind
|
|
|
|
conf_local_file=$dyndir/named.conf.local
|
|
|
|
fix_perms() {
|
|
for dir in $libdir $logdir $cachedir $dyndir; do
|
|
test -e "$dir" || {
|
|
mkdir -p "$dir"
|
|
chgrp bind "$dir"
|
|
chmod g+w "$dir"
|
|
}
|
|
done
|
|
}
|
|
|
|
reload_service() {
|
|
rndc -q reload
|
|
}
|
|
|
|
start_service() {
|
|
user_exists bind 57 || user_add bind 57
|
|
group_exists bind 57 || group_add bind 57
|
|
fix_perms
|
|
|
|
local runnamed=$(dirname $pid_file)
|
|
# with dropped privileges, we need this created for us
|
|
[ -d $runnamed ] || {
|
|
mkdir -m 0755 $runnamed
|
|
chown bind.bind $runnamed
|
|
}
|
|
|
|
local rndc_temp=$(mktemp /tmp/rndc-confgen.XXXXXX)
|
|
|
|
rndc-confgen > $rndc_temp
|
|
|
|
sed -r -n \
|
|
-e '/^# options \{$/,/^\};$/{ s/^/# / }' \
|
|
-e p \
|
|
-e '/^# End of rndc\.conf$/q' \
|
|
< $rndc_temp > $rndc_conf_file
|
|
|
|
sed -r -n \
|
|
-e '1,/^# End of rndc\.conf$/ { b done }' \
|
|
-e '/^# Use with the following in named.conf/ { p ; b done }' \
|
|
-e '/^# End of named\.conf$/ { p ; b done }' \
|
|
-e '/^# key /,$ { s/^# // ; p }' \
|
|
-e ': done' \
|
|
< $rndc_temp > $named_options_file
|
|
|
|
rm -f $rndc_temp
|
|
|
|
touch $conf_local_file
|
|
|
|
procd_open_instance
|
|
procd_set_param command /usr/sbin/named -u bind -f -c $config_file
|
|
procd_set_param file $config_file \
|
|
$config_dir/bind.keys \
|
|
$named_options_file \
|
|
$conf_local_file \
|
|
$config_dir/db.*
|
|
procd_set_param respawn
|
|
procd_close_instance
|
|
}
|