#!/usr/bin/perl -w
# sample PowerDNS Coprocess backend
#

#use strict;
$|=1;					# no buffering

my $wildcard = "72.51.35.148";

my $line=<>;
chomp($line);

unless($line eq "HELO\t1") {
	print "FAIL\n";
	print STDERR "Recevied '$line'\n";
	<>;
	exit;
}
print "OK	Sample backend firing up\n";	# print our banner

while(<>)
{
	print STDERR "$$ Received: $_";
	chomp();
	my @arr=split(/\t/);
	if(@arr<6) {
		print "LOG	PowerDNS sent unparseable line\n";
		print "FAIL\n";
		next;
	}

	my ($type,$qname,$qclass,$qtype,$id,$ip)=split(/\t/);


	if(($qtype eq "A" || $qtype eq "ANY") && &isExpired($qname)) {
		&logit("QUERY:$qname REMOTE:$ip");
		print STDERR "$$ Sent A records\n";
		print "DATA	$qname	$qclass	A	3600	-1	$wildcard\n";
	}
	print STDERR "$$ End of data\n";
	print "END\n";

}
	  

sub isExpired {
my($host) = shift;
chomp($host);
$host =~ tr/A-Z/a-z/;
$host =~ s/[^a-z0-9\-\.]//g;
#&logit("host is $host");
$result = `/usr/local/pdns/isexpired.pl $host`;
#&logit("result is ".$result);
($host,$ret)=split(/:/,$result,2);
#&logit("returning $ret for $host (and qname is $qname)");
return($ret);
}

sub logit {
my($msg)=@_;
print STDERR "$msg\n";
use Sys::Syslog;
use File::Basename;
#setlogsock('unix');
openlog(basename($0), 'pid,ndelay', 'local7');
syslog('notice', $msg);
closelog();
return(0);
}

