1#!/bin/sh
2#
3# $FreeBSD$
4#
5
6# If there is a global system configuration file, suck it in.
7#
8if [ -r /etc/defaults/periodic.conf ]
9then
10    . /etc/defaults/periodic.conf
11    source_periodic_confs
12fi
13
14catmsgs() {
15	find /var/log -name 'messages.*' -mtime -2 |
16	    sort -t. -r -n -k 2,2 |
17	    while read f
18	    do
19		case $f in
20		    *.gz)	zcat -f $f;;
21		    *.bz2)	bzcat -f $f;;
22		esac
23	    done
24	[ -f /var/log/messages ] && cat /var/log/messages
25}
26
27case "$daily_status_named_enable" in
28    [Yy][Ee][Ss])
29	echo
30	echo 'Checking for denied zone transfers (AXFR and IXFR):'
31
32	start=`date -v-1d '+%b %e'`
33	rc=$(catmsgs |
34	    fgrep -E "^$start.*named\[[[:digit:]]+\]: transfer of .*failed .*: REFUSED" |
35	    sed -e "s/.*transfer of \'\(.*\)\/IN\' from \(.*\)#[0-9]*: .*/\1 from \2/" |
36	    sort -f | uniq -ic | (
37		usedns=0
38		case "$daily_status_named_usedns" in
39		'') ;;
40		[yY][eE][sS]) usedns=1 ;;
41		esac
42
43		while read line ;do
44			ipaddr=`echo "$line" | sed -e 's/^.*from //'`
45			if [ $usedns -eq 1 ]; then
46				name=`host "${ipaddr}" 2>/dev/null | \
47				   sed 's/.*domain name pointer \(.*\)\./\1/'`
48			fi
49			if [ -n "${name}" ]; then
50				echo "${line} (${name})"
51			else
52				echo "${line}"
53			fi
54		done ) | \
55		tee /dev/stderr | wc -l)
56	[ $rc -gt 0 ] && rc=1
57	;;
58
59    *)  rc=0;;
60esac
61
62exit $rc
63