7c44417585
git-svn-id: https://unbound.nlnetlabs.nl/svn/trunk@1649 be551aaa-1e26-0410-a405-d3ace91eadb9
68 lines
1.2 KiB
Perl
68 lines
1.2 KiB
Perl
#!/usr/bin/perl -WT
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
my $hostsfile = '/etc/hosts';
|
|
my $localzonefile = '/etc/unbound/localzone.conf.new';
|
|
|
|
my $localzone = 'example.com';
|
|
|
|
open( HOSTS,"<${hostsfile}" ) or die( "Could not open ${hostsfile}: $!" );
|
|
open( ZONE,">${localzonefile}" ) or die( "Could not open ${localzonefile}: $!" );
|
|
|
|
print ZONE "server:\n\n";
|
|
print ZONE "local-zone: \"${localzone}\" transparent\n\n";
|
|
|
|
my %ptrhash;
|
|
|
|
while ( my $hostline = <HOSTS> ) {
|
|
|
|
# Skip comments
|
|
if ( $hostline !~ "^#" and $hostline !~ '^\s+$' ) {
|
|
|
|
my @entries = split( /\s+/, $hostline );
|
|
|
|
my $ip;
|
|
|
|
my $count = 0;
|
|
foreach my $entry ( @entries ) {
|
|
if ( $count == 0 ) {
|
|
$ip = $entry;
|
|
} else {
|
|
|
|
if ( $count == 1) {
|
|
|
|
# Only return localhost for 127.0.0.1 and ::1
|
|
if ( ($ip ne '127.0.0.1' and $ip ne '::1') or $entry =~ 'localhost' ) {
|
|
if ( ! defined $ptrhash{$ip} ) {
|
|
$ptrhash{$ip} = $entry;
|
|
print ZONE "local-data-ptr: \"$ip $entry\"\n";
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
# Use AAAA for IPv6 addresses
|
|
my $a = 'A';
|
|
if ( $ip =~ ':' ) {
|
|
$a = 'AAAA';
|
|
}
|
|
|
|
print ZONE "local-data: \"$entry ${a} $ip\"\n";
|
|
|
|
}
|
|
$count++;
|
|
}
|
|
print ZONE "\n";
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
__END__
|
|
|