aboutsummaryrefslogtreecommitdiffstats
path: root/tools/generate-rowdns.pl
diff options
context:
space:
mode:
authorJoachim Tingvold <joachim@tingvold.com>2015-03-21 22:48:32 +0100
committerJoachim Tingvold <joachim@tingvold.com>2015-03-21 22:48:32 +0100
commit6669f020b17779cc6767a30ca2e7c51de766b9b8 (patch)
treef15349365fd6d905a49b64cbd6ab19bb27f8451b /tools/generate-rowdns.pl
parentfe80e0a56b3b67699a6117b010e6d5c81e8391ba (diff)
Spring cleaning for TG15.
Preparing for DHCP6. Cleanup of old files.
Diffstat (limited to 'tools/generate-rowdns.pl')
-rwxr-xr-xtools/generate-rowdns.pl77
1 files changed, 77 insertions, 0 deletions
diff --git a/tools/generate-rowdns.pl b/tools/generate-rowdns.pl
new file mode 100755
index 0000000..157d43b
--- /dev/null
+++ b/tools/generate-rowdns.pl
@@ -0,0 +1,77 @@
+#!/usr/bin/perl
+use strict;
+
+BEGIN {
+ require "include/config.pm";
+ eval {
+ require "include/config.local.pm";
+ };
+}
+
+use Net::IP;
+use Getopt::Long;
+
+my ($delete);
+
+if (@ARGV > 0) {
+ GetOptions(
+ 'del|delete' => \$delete,
+ )
+}
+
+print "server $nms::config::pri_v4\n";
+
+while (<STDIN>)
+{
+ my ( $sysname, $distro, $ponum, $cidr, $ipaddr, $gwaddr, $v6addr, @ports ) = split;
+
+
+ my $ip = new Net::IP($ipaddr);
+
+ my $v4gw = new Net::IP($gwaddr);
+
+ ( my $gw6 = $v6addr ) =~ s/\/.*//;
+ my $v6gw = new Net::IP($gw6);
+
+ my $fqdn = $sysname . "." . $nms::config::tgname . ".gathering.org.";
+ my $sw_fqdn = $sysname . "-sw." . $fqdn;
+ my $text_info = $distro . " - " . join(' + ', @ports) . ", po" . $ponum . ", gwaddr " . $gwaddr;
+
+ # A-record to the switch
+ print "prereq nxdomain sw." . $fqdn . "\n" unless $delete;
+ print "update add sw." . $fqdn . " \t 3600 IN A \t " . $ipaddr . "\n" unless $delete;
+ print "update delete sw." . $fqdn . " \t IN A\n" if $delete;
+ print "send\n";
+
+ # PTR to the switch
+ print "prereq nxdomain " . $ip->reverse_ip() . "\n" unless $delete;
+ print "update add " . $ip->reverse_ip() . " \t 3600 IN PTR \t sw." . $fqdn . "\n" unless $delete;
+ print "update delete " . $ip->reverse_ip() . " \t IN PTR\n" if $delete;
+ print "send\n";
+
+ # TXT-record with details
+ print "update delete sw." . $fqdn . " IN TXT\n" unless $delete;
+ print "update add sw." . $fqdn . " \t 3600 IN TXT \t \"" . $text_info . "\"\n" unless $delete;
+ print "update delete sw." . $fqdn . " \t IN TXT\n" if $delete;
+ print "send\n";
+
+ # A and AAAA-record to the gateway/router
+ print "prereq nxrrset gw." . $fqdn . " IN A\n" unless $delete;
+ print "update add gw." . $fqdn . " \t 3600 IN A \t " . $gwaddr . "\n" unless $delete;
+ print "update delete gw." . $fqdn . " \t IN A\n" if $delete;
+ print "send\n";
+ print "prereq nxrrset gw." . $fqdn . " IN AAAA\n" unless $delete;
+ print "update add gw." . $fqdn . " \t 3600 IN AAAA \t " . $gw6 . "\n" unless $delete;
+ print "update delete gw." . $fqdn . " \t IN AAAA\n" if $delete;
+ print "send\n";
+
+ # PTR to the gateway/router
+ print "prereq nxdomain " . $v4gw->reverse_ip() . "\n" unless $delete;
+ print "update add " . $v4gw->reverse_ip() . " \t 3600 IN PTR \t gw." . $fqdn . "\n" unless $delete;
+ print "update delete " . $v4gw->reverse_ip() . " \t IN PTR\n" if $delete;
+ print "send\n";
+ print "prereq nxdomain " . $v6gw->reverse_ip() . "\n" unless $delete;
+ print "update add " . $v6gw->reverse_ip() . " \t 3600 IN PTR \t gw." . $fqdn . "\n" unless $delete;
+ print "update delete " . $v6gw->reverse_ip() . " \t IN PTR\n" if $delete;
+ print "send\n";
+}