function delete_child_domain($oldchilddomain, $assocdom, $childDN, $domDN, $delmodus) { global $ds, $suffix, $domprefix, $domsuffix, $ldapError; #print_r($domDN); echo "<br>"; # dcDNold $dcDNold = "ou=DNS," . $suffix; $dcold_array = explode('.', $oldchilddomain); $dcold_array = array_reverse($dcold_array); foreach ($dcold_array as $dc) { $dcDNold = "dc=" . $dc . "," . $dcDNold; } #print_r($dcDNold); echo "<br>"; # dcDNnew = domDN if ($delmodus == "integrate") { # associatedNames zu neuem dc-Knoten hinzufügen $assocnames = get_dc_data($dcDNold, array("associatedname")); # funkt nicht bei uni-freiburg.de # echo "<br>"; print_r($assocnames); echo "<br>"; if (count($assocnames['associatedname']) > 1) { foreach ($assocnames['associatedname'] as $aname) { #print_r($aname); echo "<br>"; $entryAN['associatedname'][] = $aname; } } else { $entryAN['associatedname'] = $assocnames['associatedname']; $assocname = $assocnames['associatedname']; $assocnames['associatedname'] = array($assocname); } #print_r($entryAN); echo "<br>"; $resultAN = ldap_mod_add($ds, $domDN, $entryAN); if ($resultAN) { # DNS Einträge verschieben und an neue Domain anpassen $zone_entries = get_zone_entries($dcDNold, array("dn", "relativedomainname")); #echo "<br>"; print_r($zone_entries); echo "<br>"; if (count($zone_entries) >= 1) { foreach ($zone_entries as $ze) { #print_r($ze['relativedomainname']); echo "<br>"; #print_r($domDN); echo "<br>"; move_subtree($ze['dn'], "relativedomainname=" . $ze['relativedomainname'] . "," . $domDN); $entryZE['zonename'] = $assocdom; print_r($entryZE); echo "<br>"; $resultZE = ldap_mod_replace($ds, "relativedomainname=" . $ze['relativedomainname'] . "," . $domDN, $entryZE); } } # Rollenmembers kopieren für jeden associatedName (ohne Duplikate zu generieren) $newdom_roles = get_roles_dns($domDN); #print_r($newdom_roles); echo "<br>"; if (count($newdom_roles['MainAdmin']) != 0) { $newmainadmins = $newdom_roles['MainAdmin']; } else { $newmainadmins = array(); } if (count($newdom_roles['HostAdmin']) != 0) { $newhostadmins = $newdom_roles['HostAdmin']; } else { $newhostadmins = array(); } if (count($newdom_roles['ZoneAdmin']) != 0) { $newzoneadmins = $newdom_roles['ZoneAdmin']; } else { $newzoneadmins = array(); } #print_r($newmainadmins); echo "<br>"; #print_r($newhostadmins); echo "<br>"; #print_r($newzoneadmins); echo "<br><br>"; foreach ($assocnames['associatedname'] as $aname) { #echo "_________________________________________<br>"; #print_r($aname); echo "<br>"; $roles = get_roles($aname); #print_r($roles); echo "<br>"; $mainadmins = $roles['MainAdmin']; #print_r($mainadmins); echo "<br>"; #print_r($newmainadmins); echo "<br>"; $mainadmins = array_diff($mainadmins, $newmainadmins); $mainadmins = array_merge($newmainadmins, $mainadmins); #print_r($mainadmins); echo "<br>"; if (count($mainadmins) > 1) { for ($i = 0; $i < count($mainadmins); $i++) { $entryRoleMain['member'][$i] = $mainadmins[$i]; } } else { $entryRoleMain['member'] = $mainadmins[0]; } #print_r($entryRoleMain); echo "<br><br>"; $resultMA = ldap_mod_replace($ds, "cn=MainAdmin,cn=roles," . $domDN, $entryRoleMain); if (count($roles['HostAdmin']) != 0) { $hostadmins = $roles['HostAdmin']; #print_r($hostadmins); echo "<br>"; #print_r($newhostadmins); echo "<br>"; $hostadmins = array_diff($hostadmins, $newhostadmins); $hostadmins = array_merge($newhostadmins, $hostadmins); #print_r($hostadmins); echo "<br>"; if (count($hostadmins) > 1) { for ($i = 0; $i < count($hostadmins); $i++) { $entryRoleHost['member'][$i] = $hostadmins[$i]; } } else { $entryRoleHost['member'] = $hostadmins[0]; } #print_r($entryRoleHost); echo "<br><br>"; $resultHA = ldap_mod_replace($ds, "cn=HostAdmin,cn=roles," . $domDN, $entryRoleHost); } if (count($roles['ZoneAdmin']) != 0) { $zoneadmins = $roles['ZoneAdmin']; #print_r($zoneadmins); echo "<br>"; #print_r($newzoneadmins); echo "<br>"; $zoneadmins = array_diff($zoneadmins, $newzoneadmins); $zoneadmins = array_merge($newzoneadmins, $zoneadmins); #print_r($zoneadmins); echo "<br>"; if (count($zoneadmins) > 1) { for ($i = 0; $i < count($zoneadmins); $i++) { $entryRoleZone['member'][$i] = $zoneadmins[$i]; } } else { $entryRoleZone['member'] = $zoneadmins[0]; } #print_r($entryRoleZone); echo "<br><br>"; $resultZA = ldap_mod_replace($ds, "cn=ZoneAdmin,cn=roles," . $domDN, $entryRoleZone); } # associatedDomain anpassen in allen AUs von $assocnames (alt) $entryAD['associateddomain'] = $assocdom; #print_r($entryAD); echo "<br>"; $resultAD = ldap_mod_replace($ds, $aname, $entryAD); #echo "_________________________________________<br>"; } # Falls alter dc-Knoten noch Subdomains, d.h. dc-Teilbäume hat, diese verschieben mit # rekursivem Anpassen aller Einträge $dcchilds = get_dc_childs($dcDNold, array("dn", "dc")); #echo "<br><br>"; print_r($dcchilds); echo "<br>"; if (count($dcchilds) != 0) { foreach ($dcchilds as $dcc) { print_r($dcc['dn']); echo " >> "; print_r("dc=" . $dcc['dc'] . "," . $domDN); echo "<br>"; if (move_subtree($dcc['dn'], "dc=" . $dcc['dc'] . "," . $domDN)) { $newdom = $dcc['dc'] . "." . $assocdom; #print_r($newdom); echo "<br><br>"; dive_into_dctree_adapt("dc=" . $dcc['dc'] . "," . $domDN, $newdom); } } } # alten dc-Knoten entfernen dive_into_tree_del($dcDNold, ""); # fixme: fehlt noch löschen der INCLUDE-Direktive in der parentdomain } else { return 0; } } if ($delmodus == "complete") { # if (dive_into_tree_del($dcDNold,"")){ $delentry['objectclass'] = "domainrelatedobject"; $delentry['associateddomain'] = $oldchilddomain . "." . $domsuffix; print_r($delentry); echo "<br>"; # $delresult = ldap_mod_del($ds,$childDN,$delentry); # if ($delresult){ # $mesg = "Domain komplett gelöscht<br>"; # }else{$mesg = "Fehler! ldap_mod_del<br>";} # }else{$mesg = "Fehler! dive_into_tree_del<br>";} } # return $mesg; }
function get_dc_childs_rdn($baseDN) { global $ds, $suffix, $ldapError; $childs = get_dc_childs($baseDN, array("dn")); # print_r($childs); echo "<br><br>"; $childs_rdn = array(); foreach ($childs as $item) { $exp = explode(',', $item['dn']); $rdn = $exp[0]; $childs_rdn[] = $rdn; } # print_r($childs_rdn); return $childs_rdn; }