Code

Added devices
[gosa.git] / gosa-plugins / systems / admin / systems / class_termDNS.inc
index 62d6f6890ad2869ddc9922669a66e36c3a4ba5fd..c3806820105ab012dc51e1928edf2d20c0de74eb 100644 (file)
@@ -156,9 +156,10 @@ class termDNS extends plugin
        */
       $this->dnsEntry     = DNS::getDNSHostEntries($config,$this->OrigCn);
 
+      $ptr = DNS::FlipIp($this->get_pTRRecord());
+
       /* Remove A record which equals $this->ipHostNumber
        */
-      $ptr = $this->get_pTRRecord();
       foreach($this->dnsEntry['RECORDS'] as $key => $rec){
         if(($rec['type'] == "aRecord") && ($rec['value'] == $this->ipHostNumber)){
           unset($this->dnsEntry['RECORDS'][$key]);
@@ -235,7 +236,7 @@ class termDNS extends plugin
 
   function netmaskIsCoherent($idZone) 
   {
-    $netmask = DNS::FlipIp(str_replace(".in-addr.arpa","",DNS::getNameFromMix($idZone)));
+    $netmask = DNS::FlipIp(str_replace(".in-addr.arpa.","",DNS::getNameFromMix($idZone)));
     if(!strstr($this->ipHostNumber, $netmask)){
       return false;
     }else{
@@ -392,7 +393,7 @@ class termDNS extends plugin
       if(isset($_POST['propose_ip']) && $this->acl_is_writeable("ipHostNumber")){
         foreach($this->Zones as $key => $name){
           if($name == $this->dnsEntry['zoneName']){
-            $net = DNS::FlipIp(str_replace(".in-addr.arpa","",DNS::getNameFromMix($key)));
+            $net = DNS::FlipIp(str_replace(".in-addr.arpa.","",DNS::getNameFromMix($key)));
             $this->ipHostNumber = $this->generateRandomIP($net);
           }
         }
@@ -750,6 +751,15 @@ class termDNS extends plugin
         if(count($this->dhcpHostEntry['dhcpOption']) == 0){
           $this->dhcpHostEntry['dhcpOption']= array("host-name ".$this->cn);
         }
+      }else{
+
+        // Updated Host-Name entry 
+        foreach($this->dhcpHostEntry['dhcpOption'] as $key => $entry){
+          if(preg_match("/^host-name/", $entry)){
+            $this->dhcpHostEntry['dhcpOption'][$key] = "host-name ".$this->cn;
+            break;
+          }
+        }
       }
 
       /* Write mac address to dhcp settings */
@@ -883,6 +893,10 @@ class termDNS extends plugin
         $this->dnsEntry['exists'] = $this->DNS_is_account;
         $tmp = DNS::getDNSHostEntriesDiff($this->config,$this->OrigCn,$this->dnsEntry,$this->cn);
       }   
+    
+      /* Update SOA record if needed
+       */
+      $this->updateSOARecord();
 
       /* move follwoing entries 
        */
@@ -1098,7 +1112,7 @@ class termDNS extends plugin
       $attrs = $ldap->fetch();
       $tmp = array_flip($this->Zones);
       $tmp = preg_replace("/^[^\/]*+\//","",$tmp[$this->dnsEntry['zoneName']]);
-      $tmp = trim(preg_replace("/\.in-addr.arpa$/","",$tmp));
+      $tmp = trim(preg_replace("/\.in-addr.arpa\.$/","",$tmp));
       $ptr = preg_replace("/^".preg_quote(DNS::FlipIp($tmp), '/')."\./","",$this->ipHostNumber);
       return($ptr);
     }else{
@@ -1185,6 +1199,15 @@ class termDNS extends plugin
       }
     }
   }
+
+  function updateSOARecord()
+  {
+    $oldEntries = DNS::getDNSHostEntries($this->config,$this->OrigCn);
+    $newEntries = $this->dnsEntry;
+    if(array_differs($newEntries['RECORDS'],$oldEntries['RECORDS'])){
+      DNS::touchDNSZone($this->config,$this->dnsEntry['zoneName']);
+    }
+  }
 }
 
 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: