AllKnowingDNS
view release on metacpan or search on metacpan
script/all-knowing-dns view on Meta::CPAN
#!/usr/bin/env perl
# vim:ts=4:sw=4:expandtab
use strict;
use warnings;
# These modules are in core:
use FindBin;
use lib "$FindBin::Bin/../lib";
use Getopt::Long;
use Sys::Syslog;
# All these modules are not in core:
use App::AllKnowingDNS::Util;
use App::AllKnowingDNS::Handler;
use Net::DNS::Nameserver;
use Privileges::Drop;
use v5.10;
our $VERSION = '1.7';
my $configfile = '/etc/all-knowing-dns.conf';
my $querylog = 0;
GetOptions(
'configfile=s' => \$configfile,
'querylog!' => \$querylog,
'version' => sub {
say "AllKnowingDNS v$VERSION " .
"© 2012 Michael Stapelberg and contributors";
exit 0;
},
'help' => sub {
say "all-knowing-dns [--configfile <path>] [--querylog]";
say "";
say "\t--configfile <path>\tSpecifies an alternate configfile location.";
say "\t\t\t\tThe default is /etc/all-knowing-dns.conf";
say "\t--querylog\t\tLogs every query to stdout (for debugging).";
say "";
exit 0;
},
);
openlog('all-knowing-dns', 'pid', 'daemon');
syslog('info', "AllKnowingDNS v$VERSION starting");
my $input;
my $fh;
if (!open($fh, '<', $configfile)) {
my $errormsg = qq|Could not load configfile ("$configfile"): $!|;
syslog('err', $errormsg);
die $errormsg;
}
{
local $/;
$input = <$fh>;
}
close($fh);
my $config = App::AllKnowingDNS::Util::parse_config($input);
# TODO: sanity check config
# XXX: port configurable? better error message when running without privileges
my $ns = Net::DNS::Nameserver->new(
( run in 0.703 second using v1.01-cache-2.11-cpan-5623c5533a1 )