All fields are separated by \t (tab) indeed. Also you are supposed to send SOA 
for the domain as well. 

Aki Tuomi 

On Fri, Aug 16, 2013 at 08:46:45PM -0600, Dan Campbell wrote:
> I'll have look at my pipe back end source code tomorrow to be sure, but two 
> thing s come to mind - the fields in the "DATA" response have to be separated 
> by single tabs, not spaces, and I believe the "-1" on the response is 
> actually supposed to match the I'd field in the query.
> 
> It's also possible that the pipe backend will not get any other queries if it 
> does not respond correctly to an SOA query.
> 
> --
> Dan Campbell
> 
> On Aug 16, 2013, at 5:39 PM, p...@nodice.us wrote:
> 
> > Hello everyone. I'm having a problem using the Pipe backend.
> > 
> > What I'm trying to do is have all queries that come in get answered with a 
> > specific ip. To do this, I'm trying out the Pipe backend using a basic perl 
> > script.
> > 
> > pdns.conf (authritative server version 3.3):
> > launch=pipe
> > pipe-command=/etc/pdns/example.pl
> > local-address=127.0.0.1
> > default-soa-name=billy.com
> > 
> > -----------------------------
> > perl script:
> > #!/usr/bin/perl
> > 
> > use warnings;
> > use strict;
> > 
> > $|=1;                    # no buffering
> > 
> > my $line=<>;
> > chomp($line);
> > 
> > unless($line eq "HELO\t1") {
> >     print "FAIL\n";
> >     print STDERR "Received '$line'\n";
> >     <>;
> >     exit;
> > }
> > print "OK    Pipe 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") {
> >         print STDERR "$$ Sent A records\n";
> >         print "DATA    $qname    $qclass    A    3600    -1    
> > 192.168.1.69\n";
> >     }
> > 
> >     print STDERR "$$ End of data\n";
> >     print "END\n";
> > }
> > 
> > 
> > -----------------------------
> > pdns monitor:
> > Aug 16 17:30:48 Remote 127.0.0.1 wants 'billy.com|A', do = 0, bufsize = 
> > 512: packetcache MISS
> > 29715 Received: Q    billy.com    IN    SOA    -1    127.0.0.1
> > 29715 End of data
> > 
> > Looks like it queries for an SOA record first, doesn't find anything and 
> > just returns an empty response. I tried adding default-soa-name in the 
> > conf, but that doesn't seem to work as I anticipated either.
> > 
> > Any help would be appreciated.
> > 
> > Thanks,
> > 
> > Billy
> > 
> > _______________________________________________
> > Pdns-users mailing list
> > Pdns-users@mailman.powerdns.com
> > http://mailman.powerdns.com/mailman/listinfo/pdns-users

> _______________________________________________
> Pdns-users mailing list
> Pdns-users@mailman.powerdns.com
> http://mailman.powerdns.com/mailman/listinfo/pdns-users

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Pdns-users mailing list
Pdns-users@mailman.powerdns.com
http://mailman.powerdns.com/mailman/listinfo/pdns-users

Reply via email to