1

Initial commit.

This commit is contained in:
eleksir
2016-09-03 22:38:52 +03:00
commit 82b0cfbcc2
22 changed files with 3182 additions and 0 deletions

46
dnszone-bind2unbound.pl Executable file
View File

@@ -0,0 +1,46 @@
#!/usr/bin/env perl
use warnings "all";
use strict;
use JSON::PP;
use DNS::ZoneParse;
sub process_zone;
my $conf_file = 'dnszone-bind2unbound.json';
open (CONF, "$conf_file") || die "unable to read $conf_file";
my $sep = $/; undef $/;
my $conf = <CONF>;
close CONF;
$/ = $sep; undef $sep;
$conf = decode_json $conf;
my %CONF = %$conf;
undef $conf;
# теперь у нас есть хэш с названиями зон и путями до файлов
foreach my $zone_name (keys(%CONF)){
process_zone($zone_name, $CONF{$zone_name});
}
exit 0;
sub process_zone {
my ($name, $file) = @_;
my $zonefile = DNS::ZoneParse->new($file, $name);
my $zone = $zonefile->dump; # ref to hash
foreach my $record(@{${$zone}{NS}}){
print "$record->{name} $record->{ttl} $record->{class} NS $record->{host}\n";
}
foreach my $record(@{${$zone}{A}}){
print "$record->{name} $record->{ttl} $record->{class} A $record->{host}\n";
}
foreach my $record(@{${$zone}{AAAA}}){
print "$record->{name} $record->{ttl} $record->{class} AAAA $record->{host}\n";
}
foreach my $record(@{${$zone}{CNAME}}){
print "$record->{name} $record->{ttl} $record->{class} CNAME $record->{host}\n";
}
}