diff options
Diffstat (limited to 'main/djbdns/dnscache.monthly')
-rwxr-xr-x | main/djbdns/dnscache.monthly | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/main/djbdns/dnscache.monthly b/main/djbdns/dnscache.monthly new file mode 100755 index 0000000000..0bd5a85397 --- /dev/null +++ b/main/djbdns/dnscache.monthly @@ -0,0 +1,48 @@ +#!/bin/sh + +if [ -f ./etc/conf.d/dnscache ]; then + . /etc/conf.d/dnscache +fi + +if [ -z "$UPDATEHINTS" ]; then + exit 0 +fi + +cd /etc/dnscache/servers +NEEDRESTART= +ZONES=`ls /etc/dnscache/servers` +for ZONEFILE in $ZONES; do + # Convert symlinks to copies, so we can update it + ZONE="$ZONEFILE" + if [ -L $ZONEFILE ]; then + DST="`readlink "$ZONEFILE"`" + cp -f "$DST" "$ZONEFILE" + fi + + if [ "$ZONE" == "@" ]; then + ZONE="." + fi + + if [ "$ZONE" != "." -o "$FORWARDONLY" = "" ]; then + TMPF=`mktemp -t` + + # Refresh zone info + dnsqr ns $ZONE | awk '/^answer: ./ { print $5 }' | sort -u | xargs dnsip > $TMPF + + grep "^$" $TMPF 1> /dev/null + if [ $? != 0 ]; then + cmp -s $ZONEFILE $TMPF + if [ "$?" != 0 ]; then + NEEDRESTART=yes + cat $TMPF > $ZONEFILE + fi + fi + rm $TMPF + fi +done + +if [ "$NEEDRESTART" ] && /etc/init.d/dnscache --quiet status; then + /etc/init.d/dnscache restart +fi + +exit 0 |