#!/usr/bin/perl -I /root/tgmanage use strict; use Net::IP; use POSIX qw(strftime); BEGIN { require "include/config.pm"; eval { require "include/config.local.pm"; }; } my $base = "/etc"; $base = $ARGV[0] if $#ARGV > -1; $base .= "/" if not $base =~ m/\/$/ and not $base eq ""; my $serial = strftime("%Y%m%d", localtime(time())) . "01"; my $zonefile; $zonefile = $base . "bind/" . $nms::config::tgname . ".gathering.org.zone"; if ( not -f $zonefile ) { print $zonefile . "\n"; open MAINZONE, ">" . $zonefile or die $! . " " . $zonefile; print MAINZONE <<"EOF"; \$TTL 3600 @ IN SOA $nms::config::pri_hostname.$nms::config::tgname.gathering.org. abuse.gathering.org. ( $serial; serial 3600 ; refresh 1800 ; retry 608400 ; expire 3600 ) ; minimum and default TTL IN NS $nms::config::pri_hostname.$nms::config::tgname.gathering.org. IN NS $nms::config::sec_hostname.$nms::config::tgname.gathering.org. $nms::config::pri_hostname IN A $nms::config::pri_v4 $nms::config::pri_hostname IN AAAA $nms::config::pri_v6 $nms::config::sec_hostname IN A $nms::config::sec_v4 $nms::config::sec_hostname IN AAAA $nms::config::sec_v6 ns1 IN CNAME $nms::config::pri_hostname.$nms::config::tgname.gathering.org. ns2 IN CNAME $nms::config::sec_hostname.$nms::config::tgname.gathering.org. ; Generated by make-all-config.sh on the bootstrapping/nms server. ; Will not be overwritten unless it is missing ;) EOF close MAINZONE; } else { print "Skipped TG-zone, file exists.\n"; } $zonefile = $base . "bind/infra." . $nms::config::tgname . ".gathering.org.zone"; if ( not -f $zonefile ) { print $zonefile . "\n"; open MAINZONE, ">" . $zonefile or die $! . " " . $zonefile; print MAINZONE <<"EOF"; \$TTL 3600 @ IN SOA $nms::config::pri_hostname.$nms::config::tgname.gathering.org. abuse.gathering.org. ( $serial; serial 3600 ; refresh 1800 ; retry 608400 ; expire 3600 ) ; minimum and default TTL IN NS $nms::config::pri_hostname.$nms::config::tgname.gathering.org. IN NS $nms::config::sec_hostname.$nms::config::tgname.gathering.org. ; Generated by make-all-config.sh on the bootstrapping/nms server. ; Will not be overwritten unless it is missing ;) EOF close MAINZONE; } else { print "Skipped infra-zone, file exists.\n"; } $zonefile = $base . "bind/" . $nms::config::ipv6zone . ".zone"; if ( not -f $zonefile ) { print $zonefile . "\n"; open IPV6ZONE, ">" . $zonefile or die $! . " " . $zonefile; print IPV6ZONE <<"EOF"; ; autogenerated, and updated from dhcpd -- DO NOT TOUCH! \$TTL 3600 @ IN SOA $nms::config::pri_hostname.$nms::config::tgname.gathering.org. abuse.gathering.org. ( $serial; serial 3600 ; refresh 1800 ; retry 608400 ; expire 3600 ) ; minimum and default TTL IN NS $nms::config::pri_hostname.$nms::config::tgname.gathering.org. IN NS $nms::config::sec_hostname.$nms::config::tgname.gathering.org. ; WARNING! Do not edit this file directly! ; on the bootstrapping/nms server! EOF my $ip_pri = Net::IP->new( $nms::config::pri_v6 ) or die ( "Error, new Net::IP for " . $nms::config::pri_v6 ); my $ip_sec = Net::IP->new( $nms::config::sec_v6 ) or die ( "Error, new Net::IP for " . $nms::config::sec_v6 ); print IPV6ZONE $ip_pri->reverse_ip() . " IN PTR $nms::config::pri_hostname.$nms::config::tgname.gathering.org.\n"; print IPV6ZONE $ip_sec->reverse_ip() . " IN PTR $nms::config::sec_hostname.$nms::config::tgname.gathering.org.\n"; close IPV6ZONE; } else { print "Skipped v6-reverse-zone, file exists.\n"; }