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