X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Ffunctions_dns.inc;h=7ce7c33efc056d19ae9ff4e64543f95d6e317744;hb=b55c9da0cc1fed54d967f22d17380948e94d40a0;hp=4754d822889330a454d624c3e329f075ebbe83da;hpb=bd4072a75d2405ff5222f63e38869b015f68707e;p=gosa.git diff --git a/include/functions_dns.inc b/include/functions_dns.inc index 4754d8228..7ce7c33ef 100644 --- a/include/functions_dns.inc +++ b/include/functions_dns.inc @@ -247,6 +247,7 @@ function getDNSZoneEntriesDiff($config,$newZones,$HostDn) $soa.=" ".$zone[$attr]; } $obj['sOARecord'] = trim($soa); + $obj['nSRecord'] = $zone['sOAprimary']; /* If reverse zone was renamed, move entry */ @@ -273,6 +274,9 @@ function getDNSZoneEntriesDiff($config,$newZones,$HostDn) /* Add new Records */ foreach($zone['RECORDS'] as $rec){ + if(!isset($obj[$rec['type']])||!is_array($obj[$rec['type']])){ + $obj[$rec['type']] = array(); + } $obj[$rec['type']][] = $rec['value']; } @@ -303,7 +307,7 @@ function getDNSZoneEntriesDiff($config,$newZones,$HostDn) */ foreach($oldZones as $zone) { $oldDn = "zoneName=".$zone['InitialzoneName'].",".$HostDn; - $del[$oldDn] = ""; + $del[$oldDn] = $zone; } /* Check for entries which must be updated @@ -434,6 +438,13 @@ function getDNSHostEntriesDiff($config,$oldName,$newEntry,$newName) $del = array(); $move = array(); + /* Don't go further if there is nothing to do + * Is no account / was no account + */ + if(($newEntry['exists'] == false )&& ($oldEntry['exists'] == false)){ + return(array("move"=>$move,"add"=>$add,"del"=>$del)); + } + $zones = getAvailableZones($config); $specialAttributes = array("cNAMERecord","pTRRecord"); $newRecords = array(); // Used to remember which records are removed @@ -455,13 +466,6 @@ function getDNSHostEntriesDiff($config,$oldName,$newEntry,$newName) $newEntry['exists'] = false; } - /* Don't go further if there is nothing to do - * Is no account / was no account - */ - if(($newEntry['exists'] == false )&& ($oldEntry['exists'] == false)){ - return(array("move"=>$move,"add"=>$add,"del"=>$del)); - } - /* If account was edited prepare some * attributes & arrays ... if required add some * dns to $move @@ -563,12 +567,16 @@ function getDNSHostEntriesDiff($config,$oldName,$newEntry,$newName) * like pTRRecord or CNAMERecord */ if($rec['type'] == "pTRRecord"){ - $PTRdn= "relativeDomainName=".$rec['value'].",".$baseDn; + $PTRdn= "relativeDomainName=".FlipIP($rec['value']).",".$baseDn; $ptrObj = $baseObj; $reverseName = getNameFromMix($reverseNameMix); $ptrObj['zoneName'] = $reverseName; - $ptrObj['pTRRecord'] = $newName.".".$zoneName."."; - $ptrObj['relativeDomainName'] = $rec['value']; + if(!preg_match("/\.$/",$newName)){ + $ptrObj['pTRRecord'] = preg_replace("/\.\.$/",".",$newName.".".$zoneName."."); + }else{ + $ptrObj['pTRRecord'] = preg_replace("/\.\.$/",".",$newName."."); + } + $ptrObj['relativeDomainName'] = FlipIP($rec['value']); $add[$PTRdn] = $ptrObj; }else