]> git.saurik.com Git - apple/network_cmds.git/blame - unbound/contrib/build-unbound-localzone-from-hosts.pl
network_cmds-596.tar.gz
[apple/network_cmds.git] / unbound / contrib / build-unbound-localzone-from-hosts.pl
CommitLineData
89c4ed63
A
1#!/usr/bin/perl -WT
2
3use strict;
4use warnings;
5
6my $hostsfile = '/etc/hosts';
7my $localzonefile = '/etc/unbound/localzone.conf.new';
8
9my $localzone = 'example.com';
10
11open( HOSTS,"<${hostsfile}" ) or die( "Could not open ${hostsfile}: $!" );
12open( ZONE,">${localzonefile}" ) or die( "Could not open ${localzonefile}: $!" );
13
14print ZONE "server:\n\n";
15print ZONE "local-zone: \"${localzone}\" transparent\n\n";
16
17my %ptrhash;
18
19while ( my $hostline = <HOSTS> ) {
20
21 # Skip comments
22 if ( $hostline !~ "^#" and $hostline !~ '^\s+$' ) {
23
24 my @entries = split( /\s+/, $hostline );
25
26 my $ip;
27
28 my $count = 0;
29 foreach my $entry ( @entries ) {
30 if ( $count == 0 ) {
31 $ip = $entry;
32 } else {
33
34 if ( $count == 1) {
35
36 # Only return localhost for 127.0.0.1 and ::1
37 if ( ($ip ne '127.0.0.1' and $ip ne '::1') or $entry =~ 'localhost' ) {
38 if ( ! defined $ptrhash{$ip} ) {
39 $ptrhash{$ip} = $entry;
40 print ZONE "local-data-ptr: \"$ip $entry\"\n";
41 }
42 }
43
44 }
45
46 # Use AAAA for IPv6 addresses
47 my $a = 'A';
48 if ( $ip =~ ':' ) {
49 $a = 'AAAA';
50 }
51
52 print ZONE "local-data: \"$entry ${a} $ip\"\n";
53
54 }
55 $count++;
56 }
57 print ZONE "\n";
58
59
60 }
61}
62
63
64
65
66__END__
67