From: Wouter Wijngaards Date: Thu, 11 Jun 2009 18:30:53 +0000 (+0000) Subject: Got contributed script to turn etc hosts into unbound config. X-Git-Tag: release-1.3.1~58 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a40ec010be70686202bd170b4d25b66f415f4a96;p=thirdparty%2Funbound.git Got contributed script to turn etc hosts into unbound config. git-svn-id: file:///svn/unbound/trunk@1649 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/contrib/README b/contrib/README index f8ff7d9b1..1b8458f43 100644 --- a/contrib/README +++ b/contrib/README @@ -12,3 +12,5 @@ distribution but may be helpful. * unbound_cacti.tar.gz : setup files for cacti statistics report * selinux: the .fc and .te files for SElinux protection of the unbound daemon * unbound.plist: launchd configuration file for MacOSX. +* build-unbound-localzone-from-hosts.pl: perl script to turn /etc/hosts into + a local-zone and local-data include file for unbound.conf. diff --git a/contrib/build-unbound-localzone-from-hosts.pl b/contrib/build-unbound-localzone-from-hosts.pl new file mode 100644 index 000000000..c11bbc330 --- /dev/null +++ b/contrib/build-unbound-localzone-from-hosts.pl @@ -0,0 +1,67 @@ +#!/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 = ) { + + # 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__ + diff --git a/doc/Changelog b/doc/Changelog index b8fbb2077..aa67c5691 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,8 @@ server. This makes a stub pointing to a local server that has a local view of example.com signed with the same keys as are publicly used work. Reported by Johan Ihren. + - Added build-unbound-localzone-from-hosts.pl to contrib, from + Dennis DeDonatis. It converts /etc/hosts into config statements. 9 June 2009: Wouter - openssl key files are opened apache-style, when user is root and