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