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