From 59cf91925ca8da43d2427331b23e4673b0e53095 Mon Sep 17 00:00:00 2001 From: Tarik Gasmi Date: Mon, 14 May 2007 08:03:48 +0000 Subject: Other webinterface data. git-svn-id: http://svn.openslx.org/svn/openslx/trunk@1077 95ad53e4-c205-0410-b2fa-d234c58c8868 --- ldap-site-mngmt/webinterface/lib/ldap2.inc.php | 350 +++++++++++++++++++++++++ 1 file changed, 350 insertions(+) create mode 100644 ldap-site-mngmt/webinterface/lib/ldap2.inc.php (limited to 'ldap-site-mngmt/webinterface/lib/ldap2.inc.php') diff --git a/ldap-site-mngmt/webinterface/lib/ldap2.inc.php b/ldap-site-mngmt/webinterface/lib/ldap2.inc.php new file mode 100644 index 00000000..3d0b26d9 --- /dev/null +++ b/ldap-site-mngmt/webinterface/lib/ldap2.inc.php @@ -0,0 +1,350 @@ +
"; + + $childs_rdn = array(); + foreach ($childs as $item){ + $exp = explode(',',$item['dn']); + $rdn = $exp[0]; + $childs_rdn[] = $rdn; + } + + # print_r($childs_rdn); + return $childs_rdn; +} + + +# Attribute eines Knotens (Vorsicht Array enthält noch DN und COUNT) +# in einem Array wie er z.B. von ldap_add verwendet wird +function get_node_attributes($nodeDN){ + global $ds, $suffix, $ldapError; + + if(!($result = uniLdapSearch($ds, $nodeDN, "(objectclass=*)", array(), "", "one", 0, 0))) { + # redirect(5, "", $ldapError, FALSE); + echo "no search"; + die; + } + $result = ldapArraySauber($result); + # print_r($result); + foreach ($result as $item){ + foreach (array_keys($item) as $merkmal) + $attrs[$merkmal] = $item[$merkmal]; + } + return $attrs; +} + +# Rekursives Kopieren +function dive_into_tree_cp($baseDN,$new_baseDN){ + + global $ds, $suffix, $ldapError; + + $expldn = ldap_explode_dn($new_baseDN,0); + $new_node_rdn = $expldn[0]; + $exp = explode('=',$new_node_rdn); + $new_node_rdn_merk = $exp[0]; + $new_node_rdn_val = $exp[1]; + $new_node_rdn_merk = strtolower($new_node_rdn_merk); + + $childs_rdn = get_childs_rdn($baseDN); + + $attrs = get_node_attributes($baseDN); + # print_r($attrs); echo "
"; + unset($attrs['dn']); + unset($attrs['count']); + $attrs["$new_node_rdn_merk"] = $new_node_rdn_val; + # print_r($attrs); echo "
"; + + $result = ldap_add($ds,$new_baseDN,$attrs); + + + //recursivly do dive for each child + foreach($childs_rdn as $rdn){ + dive_into_tree_cp( $rdn.",".$baseDN , $rdn.",".$new_baseDN); + } + return $result; +} + + +# +# Rekursives Loeschen +function dive_into_tree_del($baseDN,$except){ + + global $ds, $suffix, $ldapError; + + $childs_rdn = get_childs_rdn($baseDN); + //recursivly do dive for each child + foreach($childs_rdn as $rdn){ + dive_into_tree_del( $rdn.",".$baseDN , $except); + } + if($baseDN != $except){ + $result = ldap_delete($ds,$baseDN); + } + + return $result; +} + +# Rekursives Verschieben +function move_subtree($oldDN,$newDN){ + + if(dive_into_tree_cp($oldDN,$newDN)) + { + dive_into_tree_del($oldDN,""); + echo "Moved subtree
"; + return 1; + } + else echo "Moving subtree not possible!!!
"; +} + + +function adjust_dn_entries($oldDN,$newDN){ + + global $ds, $suffix, $ldapError; + + # single Attributes: + if(!($result = uniLdapSearch($ds, $newDN, "(objectclass=host)", array("dn","dhcphlpcont"), "", "sub", 0, 0))) { + # redirect(5, "", $ldapError, FALSE); + echo "no search"; + die; + } + $result = ldapArraySauber($result); + #print_r($result); echo "

"; + foreach ($result as $item){ + if (strpos($item['dhcphlpcont'],$oldDN) != false){ + $newvalue = str_replace($oldDN,$newDN,$item['dhcphlpcont']); + $entry['dhcphlpcont'] = $newvalue; + ldap_mod_replace($ds,$item['dn'],$entry); + } + } + + if(!($result = uniLdapSearch($ds, $newDN, "(objectclass=PXEConfig)", array("dn","rbservicedn"), "", "sub", 0, 0))) { + # redirect(5, "", $ldapError, FALSE); + echo "no search"; + die; + } + $result = ldapArraySauber($result); + #print_r($result); echo "

"; + foreach ($result as $item2){ + if (strpos($item2['rbservicedn'],$oldDN) != false){ + $newvalue = str_replace($oldDN,$newDN,$item2['rbservicedn']); + $entry2['rbservicedn'] = $newvalue; + ldap_mod_replace($ds,$item2['dn'],$entry2); + } + } + + if(!($result = uniLdapSearch($ds, $newDN, "(objectclass=dhcpService)", array("dn","dhcpprimarydn","dhcpsecondarydn"), "", "sub", 0, 0))) { + # redirect(5, "", $ldapError, FALSE); + echo "no search"; + die; + } + $result = ldapArraySauber($result); + #print_r($result); echo "

"; + foreach ($result as $item3){ + if (strpos($item3['dhcpprimarydn'],$oldDN) != false){ + $newvalue = str_replace($oldDN,$newDN,$item3['dhcpprimarydn']); + $entry3['dhcpprimarydn'] = $newvalue; + ldap_mod_replace($ds,$item3['dn'],$entry3); + } + if (strpos($item3['dhcpsecondarydn'],$oldDN) != false){ + $newvalue = str_replace($oldDN,$newDN,$item3['dhcpsecondarydn']); + $entry4['dhcpsecondarydn'] = $newvalue; + ldap_mod_replace($ds,$item3['dn'],$entry4); + } + } + + if(!($result = uniLdapSearch($ds, $newDN, "(objectclass=MenuEntry)", array("dn","genericmenuentrydn","ldapuri"), "", "sub", 0, 0))) { + # redirect(5, "", $ldapError, FALSE); + echo "no search"; + die; + } + $result = ldapArraySauber($result); + #print_r($result); echo "

"; + foreach ($result as $item4){ + if (strpos($item4['genericmenuentrydn'],$oldDN) != false){ + $newvalue = str_replace($oldDN,$newDN,$item4['genericmenuentrydn']); + $entry5['genericmenuentrydn'] = $newvalue; + ldap_mod_replace($ds,$item4['dn'],$entry5); + } + if (strpos($item4['ldapuri'],$oldDN) != false){ + $newvalue = str_replace($oldDN,$newDN,$item4['ldapuri']); + $entry6['ldapuri'] = $newvalue; + ldap_mod_replace($ds,$item4['dn'],$entry6); + } + } + + # Multi-Attribut member + if(!($result = uniLdapSearch($ds, $newDN, "(objectclass=groupOfComputers)", array("dn","member","dhcphlpcont"), "", "sub", 0, 0))) { + # redirect(5, "", $ldapError, FALSE); + echo "no search"; + die; + } + $result = ldapArraySauber($result); + #print_r($result); echo "

"; + foreach ($result as $item5){ + for ($i=0; $i
"; + foreach ($result as $item6){ + $newvalue = str_replace($oldDN,$newDN,$item6['associatedname']); + $entry9['associatedname'] = $newvalue; + ldap_mod_replace($ds,$item6['dn'],$entry9); + } + + # Attribut RelativeDomainName in DNS Teilbaum ... noch nicht fertig + $hostdnexpold = ldap_explode_dn($oldDN, 0); + $hostdnexpnew = ldap_explode_dn($newDN, 0); + $oldhostname = $hostdnexpold[0]; + $newhostname = $hostdnexpnew[0]; + if(!($result = uniLdapSearch($ds, "ou=DNS,".$suffix , "(relativedomainname=$oldhostname)", array("dn","relativedomainname"), "", "sub", 0, 0))) { + # redirect(5, "", $ldapError, FALSE); + echo "no search"; + die; + } + $result = ldapArraySauber($result); + #print_r($result); echo "

"; + foreach ($result as $item7){ + $newvalue = str_replace($oldhostname,$newhostname,$item7['relativedomainname']); + $entry10['relativedomainname'] = $newvalue; + ldap_mod_replace($ds,$item7['dn'],$entry10); + } + +} + + + +function check_for_dc($dn, $dc){ + global $ds, $suffix, $ldapError; + if(!($result = uniLdapSearch($ds, $dn, "(dc=$dc)", array("dc"), "", "list", 0, 0))) { + # redirect(5, "", $ldapError, FALSE); + echo "no search"; + die; + } + $result = ldapArraySauber($result); + if (count($result[0]['dc']) == 0 ) {return 0;} + elseif ($result[0]['dc'] == $dc){return 1;} +} + + +function get_dc_childs($baseDN,$attributes) +{ + global $ds, $suffix, $ldapError; + + if(!($result = uniLdapSearch($ds, $baseDN, "(objectclass=dnsdomain)", $attributes, "", "list", 0, 0))) { + # redirect(5, "", $ldapError, FALSE); + echo "no search"; + die; + } + else { + $result = ldapArraySauber($result); + + $childau_array = array(); + foreach ($result as $item){ + foreach ($attributes as $att){ + $atts[$att] = $item[$att]; + } + $childau_array[] = $atts; + } + if($attributes != false ){return $childau_array;} + else{return $result;} + } +} + +# Liefert die RDNs aller dc-Child-Knoten +function get_dc_childs_rdn($baseDN){ + + global $ds, $suffix, $ldapError; + + $childs = get_dc_childs($baseDN,array("dn")); + # print_r($childs); echo "

"; + + $childs_rdn = array(); + foreach ($childs as $item){ + $exp = explode(',',$item['dn']); + $rdn = $exp[0]; + $childs_rdn[] = $rdn; + } + + # print_r($childs_rdn); + return $childs_rdn; +} + +function get_entry_number($entryDN,$entryobjectclass){ + + global $ds, $suffix, $ldapError; + + if(!($result = uniLdapSearch($ds, $entryDN, "(objectclass=machineconfig)", array("count"), "", "one", 0, 0))) { + # redirect(5, "", $ldapError, FALSE); + echo "no search"; + die; + } + $result = ldapArraySauber($result); + print_r ($result); + +} + +?> \ No newline at end of file -- cgit v1.2.3-55-g7522