diff options
Diffstat (limited to 'tools/generate-dnsrr.pl')
-rwxr-xr-x | tools/generate-dnsrr.pl | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/tools/generate-dnsrr.pl b/tools/generate-dnsrr.pl deleted file mode 100755 index 99ff395..0000000 --- a/tools/generate-dnsrr.pl +++ /dev/null @@ -1,149 +0,0 @@ -#!/usr/bin/perl -I /root/tgmanage -# -# USAGE: -# Generate BIND Zone-file data based on the file hosts-to-add.txt -# cat hosts-to-add.txt | tools/generate-dnsrr.pl -# -# Generate input data for nsupdate, to add FORWARD records based on hosts-to-add.txt -# cat hosts-to-add.txt | tools/generate-dnsrr.pl --domain foo.tgXX.gathering.org -ns -# -# Generate input data for nsupdate, to add REVERSE records based on hosts-to-add.txt -# cat hosts-to-add.txt | tools/generate-dnsrr.pl --domain foo.tgXX.gathering.org -ns -rev -# -# Generate input data for nsupdate, to DELETE forward records based on hosts-to-add.txt -# cat hosts-to-DELETE.txt | tools/generate-dnsrr.pl --domain foo.tgXX.gathering.org -ns -del -# -# Generate input data for nsupdate, to DELETE reverse records based on hosts-to-add.txt -# cat hosts-to-DELETE.txt | tools/generate-dnsrr.pl --domain foo.tgXX.gathering.org -ns -rev -del -# -# Command-syntax to send this to nsupdate, running it on the DNS server: -# cat file.txt | tools/generate-dnsrr.pl --dom foo -ns | ssh $dnsserver "nsupdate -k /etc/bind/Kdhcp_updater.+157+XXXXX" -# -# Generate DNS for linknets: -# cat /tmp/linknets.txt | perl -wple 's,;, ,g' | perl tools/make-linknet-hosts.pl | tools/generate-dnsrr.pl --domain tgXX.gathering.org -ns -rev | ssh $dnsserver "nsupdate -k /etc/bind/Kdhcp_updater.XXXXX" -# -# Format of input: -# hostname ipv4-adress ipv6-address -# If any of ipv4-address or ipv6-address are NOT set for the host, specify "nope" -# Lines starting with # will (should) be skipped (comments) -# -# Example: -# -# host1 192.168.0.1 2001:db8:f00::1 -# host2 nope 2001:db8:f00::2 -# host3 192.168.0.3 nope -# # comment, to be ignored. -# host4 192.168.0.4 - -use strict; -use warnings; -use lib '..'; -BEGIN { - require "include/config.pm"; - eval { - require "include/config.local.pm"; - }; -} -use Net::IP; -use Getopt::Long; - -my ($delete, $auto, $nsupdate, $reverse, $domain); - -if (@ARGV > 0) { - GetOptions( - 'del|delete' => \$delete, - 'a|auto' => \$auto, - 'ns|nsupdate' => \$nsupdate, - 'r|reverse' => \$reverse, - 'domain=s' => \$domain - ) -} - -if ($nsupdate || $reverse){ - unless (defined($domain)){ - print "Missing domain.\n"; - exit 1 unless defined($domain); - } -} - -$domain = "." . $domain if defined($domain); - -print "server $nms::config::pri_v4\n" if ($nsupdate || $reverse); - -while (<STDIN>) { - next if /^(#|\s+$)/; # skip if comment, or blank line - - my ($hostname, $ipv4, $ipv6) = split; - $hostname = lc($hostname); - - unless ($ipv6){ - if ($auto){ - # Get IPv6-address based on IPv4-address - - my ($first, $second, $third, $fourth) = split('\.', $ipv4); - # TODO: Need to do some more logic, since base_ipv6net looks like '2a02:ed02::/32' - #$ipv6 = $nms::config::base_ipv6net . $third . "::" . $fourth; - } - } - - if ($reverse){ - # print ptr - print_ptr($hostname, $ipv4, $ipv6); - } else { - # print forward - print_fwd($hostname, $ipv4, $ipv6); - } -} - -sub print_ptr{ - my ($hostname, $ipv4, $ipv6) = @_; - - # IPv4 - unless ( $ipv4 eq "nope" ) { - my $v4 = new Net::IP($ipv4); - - print "update add " . $v4->reverse_ip() . " 3600 IN PTR " . $hostname . $domain .".\n" unless $delete; - print "update delete " . $v4->reverse_ip() . " IN PTR\n" if $delete; - print "send\n"; - } - - # IPv6 - if (( not ($ipv6 eq "nope") ) && ( $ipv6 )) { - my $v6 = new Net::IP($ipv6); - - print "update add " . $v6->reverse_ip() . " 3600 IN PTR " . $hostname . $domain . ".\n" unless $delete; - print "update delete " . $v6->reverse_ip() . " IN PTR\n" if $delete; - print "send\n"; - } -} - -sub print_fwd{ - my ($hostname, $ipv4, $ipv6) = @_; - - if ($nsupdate){ - - unless ( $ipv4 eq "nope" ) { - # IPv4 - print "prereq nxrrset " . $hostname . $domain . " IN A\n" unless $delete; - print "update add " . $hostname . $domain . " 3600 IN A $ipv4\n" unless $delete; - print "update delete " . $hostname . $domain . " IN A\n" if $delete; - print "send\n"; - } - if (( not ($ipv6 eq "nope") ) && ( $ipv6 )) { - # IPv6 - print "prereq nxrrset " . $hostname . $domain . " IN AAAA\n" unless $delete; - print "update add " . $hostname . $domain . " 3600 IN AAAA $ipv6\n" unless $delete; - print "update delete " . $hostname . $domain . " IN AAAA\n" if $delete; - print "send\n"; - } - } else { - # IPv4 - unless ( $ipv4 eq "nope" ) { - printf ("%-24s%s\t%s\t%s\n", $hostname, "IN", "A", $ipv4); - } - # IPv6 - if (( not ($ipv6 eq "nope") ) && ( $ipv6 )) { - printf ("%-24s%s\t%s\t%s\n", $hostname, "IN", "AAAA", $ipv6) if ($ipv6); - } - } -} |