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 )