From b9a3ef486ebcde18a5ade37865ff8f397185d24f Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Sun, 24 Jul 2016 05:30:59 -0400
Subject: [PATCH] Fixed #3979 Mailbox users unable to save autoresponders

---
 helper_scripts/dns_export_to_bind.php |  181 ++++++++++++++++++++++----------------------
 1 files changed, 91 insertions(+), 90 deletions(-)

diff --git a/helper_scripts/dns_export_to_bind.php b/helper_scripts/dns_export_to_bind.php
index beca21c..6a3f590 100644
--- a/helper_scripts/dns_export_to_bind.php
+++ b/helper_scripts/dns_export_to_bind.php
@@ -1,103 +1,104 @@
 <?php
-$host="IP";
-$user="root";
+$host="IP_ADDRESS";
+$user="USERNAME";
 $password="PASSWORD";
-mysql_connect($host,$user,$password) or die(mysql_error());
+mysql_connect($host, $user, $password) or die(mysql_error());
 mysql_select_db("dbispconfig");
 $result = "";
 $result = mysql_query("SELECT id,origin,ns,ttl,mbox,serial,refresh,retry,expire,minimum FROM dns_soa;");
-exec ("rm -f /etc/bind/named.conf.local");
-
-$fx = fopen("/etc/bind/named.conf.local", "a+");
-
-function hostname2ipfunktion($tmp1, $timeout = -1) {
-  if ($tmp1 == 0) {
-  $query = `nslookup -timeout=$timeout -retry=0 $tmp1`;
-  if(preg_match('/\nAddress: (.*)\n/', $query, $matches))
-     return trim($matches[1]);
-  return $tmp1;
+function hostname2ipfunktion($tmp1, $timeout = 1)
+{
+	if ($tmp1 == 0)
+	{
+		$query = `nslookup -timeout=$timeout -retry=0 $tmp1`;
+		if(preg_match('/\nAddress: (.*)\n/', $query, $matches))
+			return trim($matches[1]);
+		return $tmp1;
+	}
 }
+
+$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)) {
+	$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}'");
+	}
 }
 
 while($row = mysql_fetch_array($result))
 {
-### Hier ALLES Aktivieren bei Primary Nameserver ########################################################################################
-#$tmp1 = substr($row["origin"],0,-1);
-#fwrite($fx,"zone \"");
-#fwrite($fx,substr($row["origin"],0,-1));
-#fwrite($fx,"\" in { type master; file \"");
-#fwrite($fx,substr($row["origin"],0,-1));
-#fwrite($fx,"\"; };\n");
-#$result2 = mysql_query("select name,type,aux,data from dns_rr where zone=$row[id];");
-#exec("rm -f /var/cache/bind/$tmp1");
-#$f = fopen("/var/cache/bind/$tmp1", "a+");
-#fwrite($f,"\$TTL ");
-#fwrite($f,$row['ttl']);
-#fwrite($f,"\n");
-#fwrite($f,"@ IN SOA ");
-#fwrite($f,$row['ns']);
-#fwrite($f," ");
-#fwrite($f,$row['mbox']);
-#fwrite($f," (");
-#fwrite($f,"\n");
-#fwrite($f,"            ");
-#fwrite($f,$row['serial']);
-#fwrite($f," ;Serial");
-#fwrite($f,"\n");
-#fwrite($f,"            ");
-#fwrite($f,$row['refresh']);
-#fwrite($f," ;Refresh");
-#fwrite($f,"\n");
-#fwrite($f,"            ");
-#fwrite($f,$row['retry']);
-#fwrite($f," ;Retry");
-#fwrite($f,"\n");
-#fwrite($f,"            ");
-#fwrite($f,$row['expire']);
-#fwrite($f," ;Expire");
-#fwrite($f,"\n");
-#fwrite($f,"            ");
-#fwrite($f,$row['minimum']);
-#fwrite($f," )");
-#fwrite($f," ;Minimum");
-#fwrite($f,"\n");
-#fwrite($f,"\n");
-#while($row2 = mysql_fetch_row($result2))
-#{
-#fwrite($f,$row2['0']);
-#fwrite($f," IN ");
-#fwrite($f,$row2['1']);
-#fwrite($f," ");
-#if ($row2['2']>0)
-#{
-#fwrite($f,$row2['2']);
-#fwrite($f," ");
-#}
-#fwrite($f,$row2['3']);
-#fwrite($f,"\n");
-#}
-#fclose($f);
-#### ENDE Prim�rer Namerserver ###########################################################################################################
+	//## 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";
 
-### Hier ALLES Aktivieren bei Secondary Nameserver ######################################################################################
-$tmp1 = substr($row["ns"],0,-1);
-$tmp2 = substr($row["origin"],0,-1);
-$nsip = hostname2ipfunktion($tmp1);
-if ($nsip == $tmp1) {
-echo "$tmp2 $tmp1 Not a valid Nameserver";
-echo "\n";
+	$xx1=1;
+	while($row2 = mysql_fetch_row($result2))
+	{
+		$arr2[$xx1]=$row2['0']." IN ".$row2['1']." ";
+
+		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 #####################################################################################################
+
+	//## Hier ALLES Aktivieren bei Secondary Nameserver ######################################################################################
+	//       $tmp1 = substr($row["ns"],0,-1);
+	//       $tmp2 = substr($row["origin"],0,-1);
+
+	//       if (!isset($dnscache[$tmp1])) $nsip = hostname2ipfunktion($tmp1) ;
+	//       else $nsip=$dnscache[$tmp1] ;
+
+	//               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 ###########################################################################################################
 }
-else {
-fwrite($fx,"zone \"");
-fwrite($fx,substr($row["origin"],0,-1));
-fwrite($fx,"\" in { type slave; file \"");
-fwrite($fx,substr($row["origin"],0,-1));
-fwrite($fx,"\"; masters {");
-fwrite($fx,"$nsip; }; };");
-fwrite($fx,"\n");
-}
-### ENDE Secondary Nameserver ###########################################################################################################
-}
+
+unlink("/etc/bind/named.conf.local");
+$fx = fopen("/etc/bind/named.conf.local", "a+");
+foreach($arr1 as $values) fputs($fx, $values);
 fclose($fx);
-exec("/etc/init.d/bind9 reload");
-?>
\ No newline at end of file
+system("rndc reconfig >/dev/null 2>&1");
+
+//## ANFANG Primärer Namerserver TEIL 2 ##################################################################################################
+$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)) {
+	$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");
+	}
+}
+//## ENDE Primärer NamerserverTEIL 2 ######################################################################################################
+?>

--
Gitblit v1.9.1