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