From 2b54b27ccad47a74b78eeadfabcb20a9d1a2cc33 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Mon, 25 Oct 2010 14:29:11 +0000
Subject: [PATCH] Updated some Helper scripts.

---
 helper_scripts/dns_export_to_bind.php         | 120 +++++++++++-------
 .../dns_export_to_bind_retrans_daily.php      |  14 ++
 2 files changed, 90 insertions(+), 44 deletions(-)
 create mode 100644 helper_scripts/dns_export_to_bind_retrans_daily.php

diff --git a/helper_scripts/dns_export_to_bind.php b/helper_scripts/dns_export_to_bind.php
index 56628d77c1..ea5adf94c0 100644
--- a/helper_scripts/dns_export_to_bind.php
+++ b/helper_scripts/dns_export_to_bind.php
@@ -1,72 +1,104 @@
 <?php
-$host="IP-Adresse-ISP-CONFIG-Master-Server";
-$user="MYSQL-USER";
+$host="IP_ADDRESS";
+$user="USERNAME";
 $password="PASSWORD";
 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;");
 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;
-               }
-       }
+        {
+                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 ########################################################################################
-       $varx11=substr($row["origin"],0,-1);
-       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] 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 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";
 
-               $xx1=1;
-               while($row2 = mysql_fetch_row($result2))
-               {
-               $arr2[$xx1]=$row2['0']." IN ".$row2['1']." ";
+                $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 ###########################################################################################################
+                        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);
-#       $nsip = hostname2ipfunktion($tmp1);
-#               if ($nsip == $tmp1) #               {
+
+#       if (!isset($dnscache[$tmp1])) $nsip = hostname2ipfunktion($tmp1) ;
+#       else $nsip=$dnscache[$tmp1] ;
+
+#               if ($nsip == $tmp1) 
+#               {
 #               echo "$tmp2 $tmp1 Not a valid Nameserver";
 #               echo "\n";
 #               }
-#               else #               {
+#               else 
+#               {
+#               $dnscache[$tmp1]=$nsip;
 #               $arr1[$x11]="zone \"".$tmp2."\" in { type slave; file \"".$tmp2."\"; masters {".$nsip."; }; };\n";
 #               $x11=$x11+1;
 #               }
 ### 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");
+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 ######################################################################################################
 ?>
\ No newline at end of file
diff --git a/helper_scripts/dns_export_to_bind_retrans_daily.php b/helper_scripts/dns_export_to_bind_retrans_daily.php
new file mode 100644
index 0000000000..39faf14fe6
--- /dev/null
+++ b/helper_scripts/dns_export_to_bind_retrans_daily.php
@@ -0,0 +1,14 @@
+<?php
+$host="IP_ADDRESS";
+$user="USERNAME";
+$password="PASSWORD";
+mysql_connect($host,$user,$password) or die(mysql_error());
+mysql_select_db("dbispconfig");
+$result = "";
+$result = mysql_query("SELECT origin FROM dns_soa ORDER BY origin ASC;");
+while($row = mysql_fetch_array($result))
+{
+        $zone=substr($row["origin"],0,-1);
+        system("rndc retransfer ".$zone);
+}
+?>
\ No newline at end of file
-- 
GitLab