cpanel:rebuild_named_zones
Rebuild Named Zone Files
This script will rebuild all your /var/named/*.db files. It first pulls every client from /var/cpanel/users and grabs each users domain and ip address. It then pulls the first 2 nameservers from /etc/wwwacct.conf and rebuilds the zones to how they would be if you just setup this account.
#!/usr/bin/perl
# cPlicensing.net - scripts Copyright(c) 2003 cPlicensing.net.
# All rights Reserved.
# support@cPlicensing.net http://cPlicensing.net
# Unauthorized copying is prohibited
# Version: 0.01
$nameddir = '/var/named';
$cpanelusers = '/var/cpanel/users';
$wwwacct = '/etc/wwwacct.conf';
print "Rebuild Named Zones Script from cPlicensing.net\n\n";
print "MAKE SURE YOU BACKUP YOUR EXISTING $nameddir directory\n";
print "Waiting 5 seconds... press ctrl+c to quit\n";
sleep 5;
print "\n\n";
opendir(USERS,"$cpanelusers");
@CPUSERS=readdir(USERS);
closedir(USERS);
print "Grabbing first 2 NameServers from $wwwacct...";
open(CONF,"$wwwacct");
while(<CONF>) {
$_ =~ s/\n//g;
if ($_ !~ /^;/) {
if ($_ =~ /^NS /) {
(undef,$nameserver) = split(/ /, $_);
}
if ($_ =~ /^NS2 /) {
(undef,$nameserver2) = split(/ /, $_);
}
}
}
close(CONF);
print "done.\n";
print "Rebuilding Zone Files... (cross your fingers)...";
foreach $cpusers (@CPUSERS) {
chomp;
open(USERDB,"$cpanelusers/$cpusers");
while(<USERDB>) {
if(/IP=/i) { (undef,$ip) = split(/=/, $_, 2); }
if(/DNS=/i) { (undef,$dns) = split(/=/, $_, 2); }
chomp($ip);
chomp($dns);
}
createzone();
}
print "Done.\n";
print "\n\nZones have been rebuild but the named.conf has not.\n";
print "use /scripts/rebuildnamedconf to rebuild the named.conf with\n";
print "the new zones. Note that running /scripts/rebuildnamedconf will not\n";
print "just rebuild the named.conf, you will need to pipe it into the file but\n";
print "also you need to make sure their are no existing zones in it\n";
sub createzone(){
$time=time();
$nameddata = <<EOM;
; cPanel 5.x
; Zone file for $domain
@ 14400 IN SOA $nameserver. hostmaster.$dns. (
$time ; serial, todays date+todays
28800 ; refresh, seconds
7200 ; retry, seconds
3600000 ; expire, seconds
86400 ) ; minimum, seconds
$dns. 14400 IN NS $nameserver.
$dns. 14400 IN NS $nameserver2.
$dns. 14400 IN A $ip
localhost.$dns. 14400 IN A 127.0.0.1
$dns. 14400 IN MX 0 $dns.
mail 14400 IN CNAME $dns.
www 14400 IN CNAME $dns.
ftp 14400 IN CNAME $dns.
EOM
open(VNAMEDF,">$nameddir/$dns.db");
print VNAMEDF $nameddata;
close(VNAMEDF);
}
cpanel/rebuild_named_zones.txt · Last modified: by garrett.plasky
