--- lib/PXElator/dnsd.pm 2009/08/05 19:49:19 152 +++ lib/PXElator/dnsd.pm 2009/08/12 22:56:45 207 @@ -6,6 +6,7 @@ use Net::DNS::Nameserver; use Net::DNS::Resolver; use Data::Dump qw/dump/; +use CouchDB; use server; our $debug = server::debug; @@ -30,7 +31,14 @@ server->refresh; $debug = server::debug; - print "$qname $qclass $qtype $peerhost to ". $conn->{"sockhost"}. "\n"; + CouchDB::audit( 'request', { + qname => $qname, + qclass => $qclass, + qtype => $qtype, + peerhost => $peerhost, + sockhost => $conn->{"sockhost"} + }); + $query->print if $debug; my $local = $1 if $qname =~ m{^(.+)\.\Q$server::domain_name\E$}; @@ -44,6 +52,7 @@ my $rdata; if ( $qtype eq "A" && $local eq "server" ) { $rdata = name_ip( $local, $server::ip ); + CouchDB::audit('local', $rdata); } else { $rcode = "NXDOMAIN"; } @@ -54,12 +63,14 @@ if ( my $rdata = $ptr_cache->{$1} ) { $rdata .= '.' . $server::domain_name; push @ans, Net::DNS::RR->new("$qname $ttl $qclass $qtype $rdata"); + CouchDB::audit('ptr', $rdata ); } else { warn "## ",dump( $ptr_cache ); $rcode = "NXDOMAIN"; } } elsif ( my $packet = $res->query( $qname, $qtype ) ) { + CouchDB::audit( 'upstream', $packet ); $packet->print; push @ans, $_ foreach $packet->answer; $rcode = "NOERROR"; @@ -71,6 +82,8 @@ warn "rcode: $rcode ",dump( @ans ); + CouchDB::audit('response', { rcode => $rcode, ans => [ @ans ], auth => [ @auth ], add => [ @add ] }); + # mark the answer as authoritive (by setting the 'aa' flag return ($rcode, \@ans, \@auth, \@add, { aa => 1 }); } @@ -82,6 +95,7 @@ Verbose => $debug, ) || die "couldn't create nameserver object\n"; + CouchDB::audit('start', { listen => { port => 53, domain_name => $server::domain_name } }); warn "DNS $server::domain_name"; $ns->main_loop;