dns_export_to_bind.php 4.08 KB
Newer Older
tbrehm's avatar
tbrehm committed
1
<?php
tbrehm's avatar
tbrehm committed
2 3
$host="IP_ADDRESS";
$user="USERNAME";
tbrehm's avatar
tbrehm committed
4
$password="PASSWORD";
5
mysql_connect($host, $user, $password) or die(mysql_error());
tbrehm's avatar
tbrehm committed
6 7 8 9
mysql_select_db("dbispconfig");
$result = "";
$result = mysql_query("SELECT id,origin,ns,ttl,mbox,serial,refresh,retry,expire,minimum FROM dns_soa;");
function hostname2ipfunktion($tmp1, $timeout = 1)
10 11 12 13 14 15 16 17 18
{
	if ($tmp1 == 0)
	{
		$query = `nslookup -timeout=$timeout -retry=0 $tmp1`;
		if(preg_match('/\nAddress: (.*)\n/', $query, $matches))
			return trim($matches[1]);
		return $tmp1;
	}
}
tbrehm's avatar
tbrehm committed
19 20 21 22

$serialsearch=date("Ymd");
$resultx12 = mysql_query("SELECT origin,serial FROM dns_soa WHERE serial LIKE '$serialsearch%' ORDER BY origin ASC;");
while ($rowx12=mysql_fetch_array($resultx12)) {
23 24 25 26 27
	$zone=substr($rowx12["origin"], 0, -1);
	$filename_x1="/var/cache/bind/".$zone;
	if (file_exists($filename_x1)) {
		$serialvergleich[$zone]=exec("grep \";Serial\" /var/cache/bind/$zone |cut -d\" \" -f1 | awk '{print $1}'");
	}
tbrehm's avatar
tbrehm committed
28
}
tbrehm's avatar
tbrehm committed
29 30

while($row = mysql_fetch_array($result))
31 32 33 34 35 36 37 38 39 40 41
{
	//## Hier ALLES Aktivieren bei Primary Nameserver TEIL 1 #################################################################################
	$varx11=substr($row["origin"], 0, -1);
	$filename="/var/cache/bind/".$varx11;
	if (file_exists($filename)) {
		unlink("/var/cache/bind/$varx11");
	}
	$arr1[$x11]="zone \"$varx11\" in { type master; file \"$varx11\"; };\n";
	$x11=$x11+1;
	$result2 = mysql_query("select name,type,aux,data from dns_rr where zone=$row[id] and active='Y' ORDER BY name ASC;");
	$arr3[0]="\$TTL ".$row['ttl']."\n@ IN SOA ".$row['ns']." ".$row['mbox']." (\n           ".$row['serial']." ;Serial\n"."         ".$row['refresh']." ;Refresh\n"."               ".$row['retry']." ;Retry\n"."           ".$row['expire']." ;Expire\n"."         ".$row['minimum']." ) ;Minimum\n\n";
tbrehm's avatar
tbrehm committed
42

43 44 45 46
	$xx1=1;
	while($row2 = mysql_fetch_row($result2))
	{
		$arr2[$xx1]=$row2['0']." IN ".$row2['1']." ";
tbrehm's avatar
tbrehm committed
47

48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
		if ($row2['2']>0)
		{
			$arr3[$xx1]=$arr2[$xx1].$row2['2']." ".$row2['3']."\n";
		}
		else
		{
			$arr3[$xx1]=$arr2[$xx1].$row2['3']."\n";
		}
		$xx1=$xx1+1;
	}
	$f = fopen("/var/cache/bind/$varx11", "a+");
	foreach($arr3 as $values) fputs($f, $values);
	fclose($f);
	$arr2=array();
	$arr3=array();
	//## ENDE Primärer Nameserver TEIL 2 #####################################################################################################
tbrehm's avatar
tbrehm committed
64

65 66 67
	//## Hier ALLES Aktivieren bei Secondary Nameserver ######################################################################################
	//       $tmp1 = substr($row["ns"],0,-1);
	//       $tmp2 = substr($row["origin"],0,-1);
tbrehm's avatar
tbrehm committed
68

69 70
	//       if (!isset($dnscache[$tmp1])) $nsip = hostname2ipfunktion($tmp1) ;
	//       else $nsip=$dnscache[$tmp1] ;
tbrehm's avatar
tbrehm committed
71

72 73 74 75 76 77 78 79 80 81 82 83 84
	//               if ($nsip == $tmp1)
	//               {
	//               echo "$tmp2 $tmp1 Not a valid Nameserver";
	//               echo "\n";
	//               }
	//               else
	//               {
	//               $dnscache[$tmp1]=$nsip;
	//               $arr1[$x11]="zone \"".$tmp2."\" in { type slave; file \"".$tmp2."\"; masters {".$nsip."; }; };\n";
	//               $x11=$x11+1;
	//               }
	//## ENDE Secondary Nameserver ###########################################################################################################
}
tbrehm's avatar
tbrehm committed
85

86
unlink("/etc/bind/named.conf.local");
tbrehm's avatar
tbrehm committed
87 88 89
$fx = fopen("/etc/bind/named.conf.local", "a+");
foreach($arr1 as $values) fputs($fx, $values);
fclose($fx);
tbrehm's avatar
tbrehm committed
90 91
system("rndc reconfig >/dev/null 2>&1");

92
//## ANFANG Primärer Namerserver TEIL 2 ##################################################################################################
tbrehm's avatar
tbrehm committed
93 94 95
$serialsearch=date("Ymd");
$resultx13 = mysql_query("SELECT origin,serial FROM dns_soa WHERE serial LIKE '$serialsearch%' ORDER BY origin ASC;");
while ($rowx13=mysql_fetch_array($resultx13)) {
96 97 98 99 100 101
	$serial_ist=($rowx13["serial"]);
	$zone=substr($rowx13["origin"], 0, -1);
	//       echo "zone: ".$zone." ist: ".$serial_ist." vergleich: ".$serialvergleich[$zone]."\n";
	if ($serialvergleich[$zone] != $serial_ist) {
		$reload=system("rndc reload $zone >/dev/null 2>&1");
	}
tbrehm's avatar
tbrehm committed
102
}
103 104
//## ENDE Primärer NamerserverTEIL 2 ######################################################################################################
?>