#!/usr/bin/perl -w # # ChkDel -- A simple script for checking of domain delegations # # (c) 1999--2003 Martin Mares # use strict; use warnings; # The canonical name of our server my $our_server = "jabberwock.ucw.cz"; # Any recursive nameserver outside our network my $outside_ns = "ns.gts.cz"; use Net::DNS::Resolver; my $res = new Net::DNS::Resolver; $res->nameservers($outside_ns); $res->defnames(0); $res->dnsrch(0); $res->debug(0); $res->recurse(1); my $d = @ARGV ? $ARGV[0] : 'cf/domains'; my @list = `m4 m4/list.m4 $d`; foreach $_ (@list) { chomp; my $dom = $_; $dom eq "localhost" && next; #print "$dom\n"; my $q = $res->send($dom, "NS", "IN") or do { print "$dom: ", $res->errorstring, "\n"; next; }; my $hdr = $q->header; $hdr->tc and do { print "$dom: Truncated response\n"; next; }; my $rc = $hdr->rcode; $rc eq "NXDOMAIN" and do { print "$dom: Doesn't exist\n"; next; }; $rc eq "NOERROR" or do { print "$dom: Error $rc\n"; next; }; $hdr->ancount or do { print "$dom: Empty answer\n"; next; }; my $f = 0; foreach my $r ($q->answer) { if ($r->class eq "IN" && $r->type eq "NS" && $r->nsdname eq $our_server) { $f = 1; last; } } $f or do { print "$dom: Lame delegation\n"; next; }; }