Initial import from FreeBSD RELENG_4:
[dragonfly.git] / etc / periodic / daily / 470.status-named
1 #!/bin/sh
2 #
3 # $FreeBSD: src/etc/periodic/daily/470.status-named,v 1.1.2.2 2001/07/28 11:44:22 brian Exp $
4 #
5
6 # If there is a global system configuration file, suck it in.
7 #
8 if [ -r /etc/defaults/periodic.conf ]
9 then
10     . /etc/defaults/periodic.conf
11     source_periodic_confs
12 fi
13
14 catmsgs() {
15         find /var/log -name 'messages.*' -mtime -2 |
16             sort -t. -r -n +1 -2 |
17             xargs zcat -f
18         [ -f /var/log/messages ] && cat /var/log/messages
19 }
20
21 case "$daily_status_named_enable" in
22     [Yy][Ee][Ss])
23         echo
24         echo 'Checking for denied zone transfers (AXFR and IXFR):'
25
26         start=`date -v-1d '+%b %d' | sed 's/0\(.\)$/ \1/'`
27         rc=$(catmsgs |
28             perl -ne 'print "$2 from $1\n"
29                 if (/^'"$start"'.*named\[\d+\]: denied [AI]XFR from \[(.*)\]\.\d+ for "(.*)"/);' |
30             sort -f | uniq -ic | 
31             perl -e '
32                 use Socket;
33
34                 while (<STDIN>) {
35                         if (/^.*from (.*)$/) {
36                                 $ip_addr = $1;
37                                 chomp;
38                                 if ($ARGV[0] =~ /^yes$/i) {
39                                         ($host) = gethostbyaddr(inet_aton($ip_addr), AF_INET);
40                                 } else {
41                                         $host = "";
42                                 }
43
44                                 if ($host) {
45                                         print "$_ ($host)\n";
46                                 } else {
47                                         print "$_\n";
48                                 }
49                         }
50                 }
51             ' $daily_status_named_usedns | tee /dev/stderr | wc -l)
52         [ $rc -gt 0 ] && rc=1
53         ;;
54
55     *)  rc=0;;
56 esac
57
58 exit $rc