#!/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
|
|
}
|