summaryrefslogtreecommitdiffstats
path: root/ldap-site-mngmt/webinterface/lib/ldap2.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'ldap-site-mngmt/webinterface/lib/ldap2.inc.php')
-rw-r--r--ldap-site-mngmt/webinterface/lib/ldap2.inc.php350
1 files changed, 350 insertions, 0 deletions
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 @@
+<?php
+/**
+* ldap2.inc.php - LDAP-Bibliothek
+* Diese Bibliothek enthält weitere LDAP Hilfs-Funktionen
+*
+* @param string ldapError
+* @param resource ds
+*
+* @author Tarik Gasmi
+* @copyright Tarik Gasmi
+*/
+//Konfiguration laden
+require_once("config.inc.php");
+
+$ldapError = null;
+
+
+# Liefert Array aller Child-Knoten mit bestimmten ausgwählten Attributen
+function get_childs($baseDN,$attributes)
+{
+ global $ds, $suffix, $ldapError;
+
+ if(!($result = uniLdapSearch($ds, $baseDN, "(objectclass=*)", $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 Child-Knoten
+function get_childs_rdn($baseDN){
+
+ $childs = get_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;
+}
+
+
+# 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 "<br>";
+ unset($attrs['dn']);
+ unset($attrs['count']);
+ $attrs["$new_node_rdn_merk"] = $new_node_rdn_val;
+ # print_r($attrs); echo "<br>";
+
+ $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<br>";
+ return 1;
+ }
+ else echo "Moving subtree not possible!!!<br>";
+}
+
+
+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 "<br><br>";
+ 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 "<br><br>";
+ 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 "<br><br>";
+ 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 "<br><br>";
+ 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 "<br><br>";
+ foreach ($result as $item5){
+ for ($i=0; $i<count($item5['member']); $i++){
+ if (strpos($item5['member'][$i],$oldDN) != false){
+ $newvalue = str_replace($oldDN,$newDN,$item5['member'][$i]);
+ $entry7['member'][$i] = $newvalue;
+ }else{
+ $entry7['member'][$i] = $item5['member'][$i];
+ }
+ ldap_mod_replace($ds,$item5['dn'],$entry7);
+ }
+ if (strpos($item5['dhcphlpcont'],$oldDN) != false){
+ $newvalue = str_replace($oldDN,$newDN,$item5['dhcphlpcont']);
+ $entry8['dhcphlpcont'] = $newvalue;
+ ldap_mod_replace($ds,$item5['dn'],$entry8);
+ }
+
+ }
+
+ # Attribut AssociatedName in DNS Teilbaum
+ if(!($result = uniLdapSearch($ds, "ou=DNS,".$suffix , "(associatedname=$oldDN)", array("dn","associatedname"), "", "sub", 0, 0))) {
+ # redirect(5, "", $ldapError, FALSE);
+ echo "no search";
+ die;
+ }
+ $result = ldapArraySauber($result);
+ #print_r($result); echo "<br><br>";
+ 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 "<br><br>";
+ 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 "<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;
+}
+
+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