diff options
Diffstat (limited to 'ldap-site-mngmt/webinterface/lib/ldap.inc.php')
-rw-r--r-- | ldap-site-mngmt/webinterface/lib/ldap.inc.php | 1117 |
1 files changed, 0 insertions, 1117 deletions
diff --git a/ldap-site-mngmt/webinterface/lib/ldap.inc.php b/ldap-site-mngmt/webinterface/lib/ldap.inc.php deleted file mode 100644 index 79d50e61..00000000 --- a/ldap-site-mngmt/webinterface/lib/ldap.inc.php +++ /dev/null @@ -1,1117 +0,0 @@ -<?php -/** -* ldap.inc.php - LDAP-Bibliothek -* Diese Bibliothek enth�lt alle Funktionen f�r den Zugriff auf den LDAP-Server. -* -* @param string ldapError -* @param resource ds -* -* @author Timothy Burk, Mahir Yildirim, Johannes Sprenger, Daniel H�fler -* @copyright Timothy Burk, Mahir Yildirim, Johannes Sprenger, Daniel H�fler -*/ -//Konfiguration laden -require_once("config.inc.php"); - -$ldapError = null; - -/** -* uniLdapConnect($userRdn, $userPwd) - F�hrt den Bind am Gruppe1-LDAP-Server durch -* -* @param string userRdn UID f�r den Login -* @param string userPwd Loginpasswort -* -* @return boolean Erfolg bzw. Misserfolg -* -* @author Timothy Burk -*/ -function uniLdapConnect($userRdn = "", $userPwd = "") { - global $ldapError, $suffix; - if(!(defined("LDAP_HOST") && defined("LDAP_PORT"))) { - $ldapError = "Hostname und/oder Port des LDAP-Servers wurden nicht angegeben!"; - return FALSE; - } - if($ds = ldap_connect(LDAP_HOST, LDAP_PORT)) { - # Connect zum LDAP-Server OK - if(ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) { - # Optionen gesetzt - #if (ldap_start_tls($ds)){ - if($userRdn != "" && $userPwd != "") { - # Anmeldung als User. - if($result = @ldap_bind($ds, "uid=".$userRdn.",ou=people,".$suffix, $userPwd)) { - # Bind erfolgreich ausgef�hrt - return $ds; - } else { - # Bind nicht erfolreich. - if(ldap_error($ds) == "Invalid credentials") { - $ldapError .= "Bind nicht erfolgreich: die Zugangsdaten sind nicht korrekt.<br>\n"; - } else { - $ldapError .= "Bind als User nicht erfolgreich: ".ldap_error($ds)."<br>\n"; - } - #print_r(ldap_error($ds));echo "<br><br>"; - return false; - } - } else { - # Anonymer Bind. - if($result = ldap_bind($ds)) { - # Anonymer Bind erfolgreich ausgef�hrt - return $ds; - } else { - # Anonymer Bind nicht erfolreich. - $ldapError .= "Anonymer Bind nicht erfolgreich: ".ldap_error($ds)."<br>\n"; - return false; - } - } - #} else { - # # TLS starten fehlgeschlagen - # $ldapError .= "TLS starten fehlgeschlagen: ".ldap_error($ds)."<br>\n"; - #} - } else { - # Optionen setzen fehlgeschlagen - $ldapError .= "Protokollversion setzen fehlgeschlagen: ".ldap_error($ds)."<br>\n"; - } - } else { - # Connect fehlgeschlagen. - $ldapError .= "Connect fehlgeschlagen: ".ldap_error($ds)."<br>\n"; - } -} - - -/** -* rzLdapConnect($userRdn, $userPwd) - F�hrt den Bind am RZ-LDAP-Server durch -* -* @param string userRdn UID f�r den Login -* @param string userPwd Loginpasswort -* -* @return boolean Erfolg bzw. Misserfolg -* -* @author Timothy Burk -*/ -function rzLdapConnect($userRdn = "", $userPwd = "") { - global $ldapError, $suffix_rz; - if(!(defined("LDAP_HOST_RZ") && defined("LDAP_PORT_RZ"))) { - $ldapError = "Hostname und/oder Port des LDAP-Servers wurden nicht angegeben!"; - return FALSE; - } - if($ds = ldap_connect(LDAP_HOST_RZ, LDAP_PORT_RZ)) { - # Connect zum LDAP-Server OK - if(ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) { - # Optionen gesetzt - if($userRdn != "" && $userPwd != "") { - # Anmeldung als User. - if($result = @ldap_bind($ds, "uid=".$userRdn.",ou=people,".$suffix_rz, $userPwd)) { - # Bind erfolgreich ausgef�hrt - return $ds; - } else { - # Bind nicht erfolreich. - if(ldap_error($ds) == "Invalid credentials") { - $ldapError .= "Bind nicht erfolgreich: die Zugangsdaten sind nicht korrekt.<br>\n"; - } else { - $ldapError .= "Bind als User nicht erfolgreich: ".ldap_error($ds)."<br>\n"; - } - return false; - } - } else { - # Anonymer Bind. - if($result = ldap_bind($ds)) { - # Anonymer Bind erfolgreich ausgef�hrt - return $ds; - } else { - # Anonymer Bind nicht erfolreich. - $ldapError .= "Anonymer Bind nicht erfolgreich: ".ldap_error($ds)."<br>\n"; - return false; - } - } - } else { - # Optionen setzen fehlgeschlagen - $ldapError .= "Protokollversion setzen fehlgeschlagen: ".ldap_error($ds)."<br>\n"; - } - } else { - # Connect fehlgeschlagen. - $ldapError .= "Connect fehlgeschlagen: ".ldap_error($ds)."<br>\n"; - } -} - - /** - * uniLdapSearch($ds, $base, $filter, $attributes, $sort, $mode, $resultLimit, $timeout) - * Sucht Eintr�ge im LDAP-Server. - * - * Durchsucht den LDAP-Server vom Punkt $base ab nach Eintr�gen, die $filter entsprechen. Falls in $sort ein Feldname angegeben - * wurde, so wird danach sortiert. (ACHTUNG: die Funktion ldap_sort() ist nicht dokumentiert! Ich wei� nicht ob sie Sortierung - * nach mehreren Feldern zul�sst und wie sie sich verh�lt, wenn zu einem Attribut mehrere Werte existieren.) $mode definiert die - * Art der Suche, wohingegen $resultLimit und $timeout die Anzahl der Ergebnis-Eintr�ge bzw. die maximalen Suchdauer einschr�nken. - * Zur�ckgegeben werden die Attribute, die im Array $attributes aufgef�hrt sind. Im Erfolgsfalle wird ein multidimensionales Array - * zur�ckgeliefert, im Fehlerfalle FALSE. Dann steht die Fehlermeldung in der Variablen $ldapError. - * - * @param string $base die DN, das Verzeichnis, in dem die Suche startet - * - * @param string $filter die Suchbedingungen - * - * @param array attributes die Attributnamen, deren Werte im Ergebnis enthalten sein sollen. - * - * @param string $sort Sortiert die Ergebnis-Eintr�ge nach dem angegebenen Feldnamen (undokumentiert! s.o.) - * - * @param string $mode Der Modus: "one" liefert einen Eintrag, "list" alle Eintr�ge des Verzeichnisses und "sub" - * schlie�t alle Untervezeichnisse mit ein. - * - * @param int $resultLimit die maximale Anzahl zur�ckgegebener Eintr�ge - * - * @param int $timeout die maximale Suchzeit, bevor der LDAP-Server abbrechen soll - * - * @return mixed multidimensionales array mit den Eintr�gen im Erfolgsfall, FALSE wenn ein Fehler auftrat - * - * @see ldap_read() - * @see ldap_list() - * @see ldap_search() - * @see ldap_sort() - * @see ldap_get_entries() - * @see ldap_free_result() - * - * @author Timothy Burk - */ -function uniLdapSearch($ds, $base, $filter, $attributes, $sort, $mode, $resultLimit, $timeout) { - global $ldapError; - $abfrage = false; - if($mode == "one") { - if($resource = ldap_read($ds, $base, $filter, $attributes, 0, $resultLimit, $timeout)) { - # Abfrage erfolgreich! - $abfrage = true; - } else { - # Abfrage fehlgeschlagen. - $ldapError .= "Abfrage mit Mode $mode ist fehlgeschlagen: ".ldap_error($ds)."<br>\n"; - return false; - } - } else if($mode == "list") { - if($resource = ldap_list($ds, $base, $filter, $attributes, 0, $resultLimit, $timeout)) { - # Abfrage erfolgreich! - ldap_sort($ds,$resource,$sort); - $abfrage = true; - } else { - # Abfrage fehlgeschlagen. - $ldapError .= "Abfrage mit Mode $mode ist fehlgeschlagen: ".ldap_error($ds)."<br>\n"; - return false; - } - } else if($mode == "sub") { - if($resource = ldap_search($ds, $base, $filter, $attributes, 0, $resultLimit, $timeout)) { - # Abfrage erfolgreich! - ldap_sort($ds,$resource,$sort); - $abfrage = true; - } else { - # Abfrage fehlgeschlagen. - $ldapError .= "Abfrage mit Mode $mode ist fehlgeschlagen: ".ldap_error($ds)."<br>\n"; - return false; - } - } else { - # Kein g�ltiger Modus angegeben. - $ldapError .= "Es wurde kein g�ltiger Modus angegeben."; - return false; - } - if($abfrage && ($entries = ldap_get_entries($ds, $resource))) { - # Auslesen des Verzeichnisses erfolgreich. - ldap_free_result($resource); - return $entries; - } else { - # Auslesen des Verzeichnisses nicht erfolgreich. - $ldapError .= "Auslesen des Verzeichnisses nicht erfolgreich: ".ldap_error($ds)."<br>\n"; - return false; - } -} -/** -* uniLdapAdd($ds, $dn, $daten, [$objectclass]) -* -* F�gt ein neues Objekt in die LDAP-Datenbank ein. -* -* @param resource $ds Datenbankhandler -* @param string $dn Distinguished Name des neuen Eintrages -* @param array $daten Assoziatives Array mit den gew�nschten Attributen -* @param string $objectclass Objektklasse des neuen Eintrages (Standard = "") -* -* @return boolean TRUE wenn Eintrag erfolgreich, FALSE wenn ein Fehler aufgetreten ist. -* -* @see ldap_add() -* -* @author Timothy Burk -*/ -function uniLdapAdd($ds, $dn, $daten, $objectclass = "") { - if($objectclass != "") { - $daten['objectclass'] = $objectclass; - } - if(ldap_add($ds, $dn, $daten)) { - return true; - } else { - return false; - } -} - -/** -* uniLdapModify($ds, $dn, $daten_alt, $daten_neu, [$i]) -* -* Universalfunktion zum �ndern von Attributen und Werten. -* Bei �nderungsskripten muss zuerst ein Formular mit den alten Daten gef�llt werden. Die hierf�r -* durchgef�hrte Suche wird in einem unbehandelten Array in der SESSION gespeichert und wieder -* ausgelesen, sobald die �nderungen gespeichert werden sollen. Es wird anschlie�end an diese Funktion -* (als $daten_alt)gegeben, die das Array mit ldapArraySauber von allen unn�tigen Eintr�gen befreit. -* $daten_alt entspricht dann strukturell dem POST-Array des �nderungsformulars ($daten_neu). -* Letzteres wird nun durch laufen, alle Eintr�ge werden mit ihrer Entsprechnung aus $daten_alt verglichen -* und ggf. werden dann Attribute ge�ndert, gel�scht oder hinzugef�gt. -* -* @param resource $ds Datenbankhandler -* @param string $dn Distinguished Name des Eintrages -* @param array $daten_alt Dreidimensionales mixed Array der Form $array[int][string][int], so wie es von uniLdapSearch zur�ckgeliefert wird. -* @param array $daten_neu Zweidimensionales mixed Array der Form $array[string][int], so wie ein Formular in $_POST gespeichert ist. -* @param int $i Gibt an, welcher Eintrag der ersten Dimension von $daten_alt verwendet werden soll. (Standard: $i=0) -* -* @return boolean TRUE wenn �nderung erfolgreich, FALSE wenn ein Fehler aufgetreten ist. -* -* @see ldap_mod_replace() -* @see ldap_mod_add() -* @see ldap_mod_del() -* @see ldapArraySauber() -* @see numArraySauber() -* -* @author Timothy Burk -*/ -function uniLdapModify($ds, $dn, $daten_alt, $daten_neu, $i = 0) { - $meldung = ""; - $daten_alt = ldapArraySauber($daten_alt, FALSE); - $daten_alt = $daten_alt[$i]; - foreach($daten_neu as $key => $value_neu) { - $key = strtolower($key); - if(!(is_array($value_neu))) { - # Wenn $value_neu ein Skalar ist... - # (d.h., das Attribut $key darf nur einen Wert annehmen) - $value_neu = htmlentities(str_replace(chr(160),"",trim($value_neu))); // ungewollte Leerzeichen und l�schen - if (isset($daten_alt[$key])) { - $daten_alt[$key] = str_replace(chr(160),"",trim($daten_alt[$key])); // ungewollte Leerzeichen und l�schen - } else { - $daten_alt[$key] = ""; - } - if($daten_alt[$key] == "" && $value_neu != "") { - # FALL 1: - # Alter Wert ist leer, neuer Wert ist nicht leer. - # F�ge neues Attribut hinzu. - if(ldap_mod_add($ds, $dn, array($key => $value_neu))) { - $meldung .= "Add successfull: ".$key." -> ".$value_neu."<br>"; - } else { - $meldung .= "Add error: ".$key." -> ".$value_neu."<br>"; - } - - } else if($daten_alt[$key] != "" && $value_neu == "") { - # FALL 2: - # Alter Wert ist nicht leer, neuer Wert ist leer. - # L�sche Attribut. - if(ldap_mod_del($ds, $dn, array($key => $daten_alt[$key]))) { - $meldung .= "Delete successfull: ".$key." -> ".$daten_alt[$key]."<br>"; - } else { - $meldung .= "Delete error: ".$key." -> ".$daten_alt[$key]."<br>"; - } - - } else if($daten_alt[$key] != "" && $value_neu != "" && $daten_alt[$key] != $value_neu) { - # FALL 3: - # Alter und neuer Wert sind nicht leer und beide sind ungleich. - # �ndere das Attribut. Der bisherige Wert wird �berschrieben. - if(ldap_mod_replace($ds, $dn, array($key => $value_neu))) { - $meldung .= "Replace successfull: ".$key." -> ".$value_neu."<br>"; - } else { - $meldung .= "Replace error: ".$key." -> ".$value_neu."<br>"; - } - - } else { - # In allen anderen F�llen ist keine �nderung n�tig - } - } else { - # Wenn $value_neu ein Array ist... - # (d.h., das Attribut $key darf mehrere Werte annehmen) - $value_neu = numArraySauber($value_neu); - if (isset($daten_alt[$key])) { - $value_alt = numArraySauber($daten_alt[$key]); - foreach($value_alt as $item) { - #$item = htmlentities($item); - # L�sche alle alten Werte des Attributes $key. - if(ldap_mod_del($ds, $dn, array($key => $item))) { - $meldung .= "Delete successfull: ".$key." -> ".$item."<br>"; - } else { - $meldung .= "Delete error: ".$key." -> ".$item."<br>"; - } - } - } - foreach($value_neu as $item) { - $item = htmlentities($item); - # F�ge alle neuen Werte des Attributes $key ein. - if(ldap_mod_add($ds, $dn, array($key => $item))) { - $meldung .= "Add successfull: ".$key." -> ".$item."<br>"; - } else { - $meldung .= "Add error: ".$key." -> ".$item."<br>"; - } - - } - } - } - #return $meldung; - if(eregi("error",$meldung)) { - return FALSE; - } else { - return TRUE; - } -} - -/** -* uniLdapDelete l�scht beliebige Eintr�ge mit dessen Subtree aus der Datenbank. -* Dabei wird der wird der Baum ab dem Eintrag $dn zu allen Bl�ttern durchlaufen (Es -* k�nnen nur Bl�tter gel�scht werden!!) und die Eintr�ge von hinten her bis einschlie�lich -* $dn gel�scht -* -* @param resource ds LDAP Directory Handle -* @param string dn Distiguished Name -* -* @return boolean -* -* @author Daniel H�fler -*/ - -function uniLdapDelete($ds, $dn) { - # �berpr�fung, ob zu l�schender Eintrag vorhanden ist - if(!uniLdapSearch($ds, $dn, "objectclass=*", array("*"), "", "one", 0, 0)) { - $ldapError .= "L�schen fehlgeschlagen: Eintrag nicht gefunden".ldap_error($ds)."<br>\n"; - return false; - } - # Auslesen der Daten unterhalb von $dn - $daten = uniLdapSearch($ds, $dn, "objectclass=*", array("*"), "", "list", 0, 0); - # for-Schleife wird nur ausgef�hrt, falls sich unterhalb von $dn Eintr�ge befinden - for($i = 0; $i < $daten['count']; $i++){ - uniLdapDelete($ds, $daten[$i]['dn']); - } - # l�schen der Bl�tter - if(ldap_delete($ds, $dn)) { - return true; - } else { - $ldapError .= "L�schen fehlgeschlagen".ldap_error($ds)."<br>\n"; - return false; - } -} - -############################################################################################ -# -# Ab hier LDAP Funktionen (Tarik Gasmi) nutzen die zuvor definierten Funktionen -# von Timothy Burk, u.A. -# -############################################################################################ -# Weitere LDAP Funktionen - -# -# LDAP Funktionen um alle Objekte der AU eines bestimmten Typs mit gew�hlten Attributen zu holen -# -function get_hosts($auDN,$attributes,$sortattr) -{ - global $ds, $suffix, $ldapError; - - if ( $sortattr == ""){ - $sortattr = "hostname"; - } - - if(!($result = uniLdapSearch($ds, "cn=computers,".$auDN, "(objectclass=Host)", $attributes, $sortattr, "sub", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else{ - $result = ldapArraySauber($result); - # print_r($result);printf("<br><br>"); - $host_array = array(); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $atts['auDN'] = $auDN; - $host_array[] = $atts; - } - if($attributes != false ){return $host_array;} - else{return $result;} - } -} - -function get_groups($auDN,$attributes) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, "cn=groups,".$auDN, "(objectclass=groupOfComputers)", $attributes, "cn", "sub", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else{ - $result = ldapArraySauber($result); - # print_r($result);printf("<br><br>"); - $group_array = array(); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $atts['auDN'] = $auDN; - $group_array[] = $atts; - } - if($attributes != false ){return $group_array;} - else{return $result;} - } -} - -function get_groups_member($auDN,$attributes,$member) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, "cn=groups,".$auDN, "(&(objectclass=groupOfComputers)(member=$member))", $attributes, "cn", "sub", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else{ - $result = ldapArraySauber($result); - # print_r($result);printf("<br><br>"); - $group_array = array(); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $atts['auDN'] = $auDN; - $group_array[] = $atts; - } - if($attributes != false ){return $group_array;} - else{return $result;} - } -} - -function get_machineconfigs($baseDN,$attributes) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, $baseDN, "(objectclass=MachineConfig)", $attributes, "", "list", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - elseif(count($result) == 0){return $result;} - else{ - $result = ldapArraySauber($result); - # print_r($result);printf("<br><br>"); - $mc_array = array(); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $atts['baseDN'] = $baseDN; - $atts['auDN'] = $auDN; - $mc_array[] = $atts; - } - if($attributes != false ){return $mc_array;} - else{return $result;} - } -} - -function get_pxeconfigs($baseDN,$attributes) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, $baseDN, "(objectclass=PxeConfig)", $attributes, "", "list", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - elseif(count($result) == 0){return $result;} - else{ - $result = ldapArraySauber($result); - # print_r($result);printf("<br><br>"); - $pxe_array = array(); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $atts['baseDN'] = $baseDN; - $atts['auDN'] = $auDN; - $pxe_array[] = $atts; - } - if($attributes != false ){return $pxe_array;} - else{return $result;} - } -} - -function get_pxeconfigs2($clientDN,$attributes) -{ - global $auDN, $ds, $suffix, $ldapError; - - if ($clientDN == ""){ - $filter = "(objectclass=PxeConfig)"; - }else{ - $filter = "(&(objectclass=PxeConfig)(pxeclientdn=$clientDN))"; - } - - if(!($result = uniLdapSearch($ds, "cn=pxe,".$auDN, $filter, $attributes, "", "list", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - elseif(count($result) == 0){return $result;} - else{ - $result = ldapArraySauber($result); - # print_r($result);printf("<br><br>"); - $pxe_array = array(); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $atts['baseDN'] = $baseDN; - $atts['auDN'] = $auDN; - $pxe_array[] = $atts; - } - if($attributes != false ){return $pxe_array;} - else{return $result;} - } -} - -function get_menuentries($baseDN,$attributes) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, $baseDN, "(objectclass=MenuEntry)", $attributes, "menuposition", "list", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - elseif(count($result) == 0){return $result;} - else{ - $result = ldapArraySauber($result); - # print_r($result);printf("<br><br>"); - $menent_array = array(); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $atts['baseDN'] = $baseDN; - $atts['auDN'] = $auDN; - $menent_array[] = $atts; - } - if($attributes != false ){return $menent_array;} - else{return $result;} - } -} - -function get_rbservices($auDN,$attributes) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, "cn=rbs,".$auDN, "(objectclass=RBService)", $attributes, "", "list", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - elseif(count($result) == 0){return $result;} - else{ - $result = ldapArraySauber($result); - # print_r($result);printf("<br><br>"); - $rbs_array = array(); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $atts['auDN'] = $auDN; - $rbs_array[] = $atts; - } - if($attributes != false ){return $rbs_array;} - else{return $result;} - } -} - -function get_subnets($auDN,$attributes) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, "cn=dhcp,".$auDN, "(objectclass=dhcpSubnet)", $attributes, "cn", "sub", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else { - $result = ldapArraySauber($result); - $subnet_array = array(); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $atts['auDN'] = $auDN; - $subnet_array[] = $atts; - } - if($attributes != false ){return $subnet_array;} - else{return $result;} - } -} - -function get_dhcppools($auDN,$attributes) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, "cn=dhcp,".$auDN, "(objectclass=dhcpPool)", $attributes, "cn", "sub", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else { - $result = ldapArraySauber($result); - - $pool_array = array(); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $atts['auDN'] = $auDN; - $pool_array[] = $atts; - } - if($attributes != false ){return $pool_array;} - else{return $result;} - } -} - -function get_dhcppools_subnet($subnetDN,$attributes) -{ - global $ds, $suffix, $auDN, $ldapError; - - if(!($result = uniLdapSearch($ds, $auDN, "(&(objectclass=dhcpPool)(dhcphlpcont=$subnetDN))", $attributes, "cn", "sub", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else { - $result = ldapArraySauber($result); - - $pool_array = array(); - foreach ($result as $item){ - $poolexpdn = ldap_explode_dn($item['dn'], 1); - $poolau = $poolexpdn[2]; - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $atts['poolAU'] = $poolau; - $pool_array[] = $atts; - } - if($attributes != false ){return $pool_array;} - else{return $result;} - } -} - -function get_dhcppoolranges($poolDN) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, $poolDN, "(objectclass=dhcpPool)", array("dhcprange"), "", "one", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else { - $result = ldapArraySauber($result); - #print_r($result); echo "<br><br>"; - $ranges_array = array(); - if ( count($result[0]['dhcprange']) == 1 ){ - $ranges_array [] = $result[0]['dhcprange']; - } - elseif ( count($result[0]['dhcprange']) > 1 ){ - foreach ($result[0]['dhcprange'] as $range){ - $ranges_array [] = $range; - } - } - return $ranges_array; - } -} - -function get_childau($auDN,$attributes) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, $auDN, "(objectclass=AdministrativeUnit)", $attributes, "ou", "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]; - } - $atts['auDN'] = $auDN; - $childau_array[] = $atts; - } - if($attributes != false ){return $childau_array;} - else{return $result;} - } -} - -function get_all_aus($attributes) -{ - global $ds, $auDN, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, "ou=RIPM,".$suffix, "(objectclass=AdministrativeUnit)", $attributes, "ou", "sub", 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]; - } - $atts['auDN'] = $auDN; - $childau_array[] = $atts; - } - if($attributes != false ){return $childau_array;} - else{return $result;} - } -} - -function get_au_data($auDN,$attributes) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, $auDN, "(objectclass=AdministrativeUnit)", $attributes, "ou", "one", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else { - $result = ldapArraySauber($result); - - $au_array = array(); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $atts['auDN'] = $auDN; - $au_array[] = $atts; - } - if($attributes != false ){return $au_array;} - else{return $result;} - } -} - -function get_domain_data($auDN,$attributes) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, $suffix, "(&(objectclass=dnsdomain)(associatedname=$auDN))", $attributes, "", "sub", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else { - $result = ldapArraySauber($result); - - $domain_array = array(); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $atts['auDN'] = $auDN; - $domain_array[] = $atts; - } - if($attributes != false ){return $domain_array;} - else{return $result;} - } -} - - -function get_roles($auDN) -{ - global $ds, $suffix, $domDN, $ldapError; - - if(!($result = uniLdapSearch($ds, "cn=roles,".$auDN, "(|(objectclass=GroupOfNames)(objectclass=Admins))", array("cn","member"), "cn", "sub", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else{ - $result = ldapArraySauber($result); - $roles_array = array(); - #print_r($result); - foreach ($result as $item){ - if ( count($item['member']) > 1 ){ - foreach ($item['member'] as $member){ - $roles_array[$item['cn']][] = $member; - } - } - if ( count($item['member']) == 1 ){ - $roles_array[$item['cn']][] = $item['member']; - } - } - return $roles_array; - } -} - -function get_roles_dns($domDN) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, "cn=roles,".$domDN, "(objectclass=GroupOfNames)", array("cn","member"), "cn", "sub", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else{ - $result = ldapArraySauber($result); - $roles_array = array(); - foreach ($result as $item){ - if ( count($item['member']) > 1){ - foreach ($item['member'] as $member){ - $roles_array[$item['cn']][] = $member; - } - }else{ - $roles_array[$item['cn']][] = $item['member']; - } - } - return $roles_array; - } -} - - -function get_users(){ - - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, "ou=people,".$suffix, "(objectclass=inetOrgPerson)", array("dn","cn","sn","uid"), "", "sub", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else{ - $result = ldapArraySauber($result); - $users_array = array(); - # foreach ($result as $item){ - # $users_array[$item['cn']] = $item['member']; - # } - # return $users_array; - return $result; - } -} - -function get_user_data($userDN,$attributes) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, $userDN, "(objectclass=inetOrgPerson)", $attributes, "", "one", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else { - $result = ldapArraySauber($result); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $user_data = $atts; - } - if($attributes != false ){return $user_data;} - else{return $result;} - } -} - - -function get_dc_data($dcDN,$attributes) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, $dcDN, "(objectclass=dnsdomain)", $attributes, "", "one", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else { - $result = ldapArraySauber($result); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $dc_data = $atts; - } - if($attributes != false ){return $dc_data;} - else{return $result;} - } -} - -function get_node_data($nodeDN,$attributes) -{ - global $ds, $suffix, $ldapError; - - $node_data = array(); - - if(!($result = uniLdapSearch($ds, $nodeDN, "(objectclass=*)", $attributes, "", "one", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else { - $result = ldapArraySauber($result); - foreach ($result as $item){ - foreach ($attributes as $att){ - $node_data[$att] = $item[$att]; - } - } - if($attributes != false ){return $node_data;} - else{return $result;} - } -} - - - -function get_zone_entries($dcDN,$attributes) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, $dcDN, "(|(objectclass=dNSZone)(objectclass=dNSZoneIncludeDirective))", $attributes, "", "list", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else{ - $result = ldapArraySauber($result); - # print_r($result);printf("<br><br>"); - $zone_array = array(); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $atts['dcDN'] = $dcDN; - $zone_array[] = $atts; - } - if($attributes != false ){return $zone_array;} - else{return $result;} - } -} - - -function get_zone_entries_assocname($dcDN,$attributes,$assocname) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, $dcDN, "(&(|(objectclass=dNSZone)(objectclass=dNSZoneIncludeDirective))(associatedname=$assocname))", $attributes, "", "list", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else{ - $result = ldapArraySauber($result); - # print_r($result);printf("<br><br>"); - $zone_array = array(); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $atts['dcDN'] = $dcDN; - $zone_array[] = $atts; - } - if($attributes != false ){return $zone_array;} - else{return $result;} - } -} - -function get_dn_menuposition($pxeDN,$pos) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, $pxeDN, "(menuposition=$pos)", array("dn"), "", "list", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - else { - $result = ldapArraySauber($result); - return $result[0]['dn']; - } -} - -function get_dhcpservices($auDN,$attributes) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, "cn=dhcp,".$auDN, "(objectclass=dhcpService)", $attributes, "", "list", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - elseif(count($result) == 0){return $result;} - else{ - $result = ldapArraySauber($result); - # print_r($result);printf("<br><br>"); - $dhcp_array = array(); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $atts['auDN'] = $auDN; - $dhcp_array[] = $atts; - } - if($attributes != false ){return $dhcp_array;} - else{return $result;} - } -} - -function get_dhcpsubnets($auDN,$attributes) -{ - global $ds, $suffix, $ldapError; - - if(!($result = uniLdapSearch($ds, "cn=dhcp,".$auDN, "(objectclass=dhcpSubnet)", $attributes, "", "list", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - elseif(count($result) == 0){return $result;} - else{ - $result = ldapArraySauber($result); - # print_r($result);printf("<br><br>"); - $dhcp_array = array(); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $atts['auDN'] = $auDN; - $dhcp_array[] = $atts; - } - if($attributes != false ){return $dhcp_array;} - else{return $result;} - } -} - -function get_service_subnets($dhcpserviceDN,$attributes) -{ - global $ds, $suffix, $ldapError; - - $filter = "(&(dhcphlpcont=".$dhcpserviceDN.")(objectclass=dhcpSubnet))"; - if(!($result = uniLdapSearch($ds, "ou=RIPM,".$suffix, $filter, $attributes, "", "sub", 0, 0))) { - # redirect(5, "", $ldapError, FALSE); - echo "no search"; - die; - } - elseif(count($result) == 0){return $result;} - else{ - $result = ldapArraySauber($result); - # print_r($result); - $dhcpsubnets = array(); - foreach ($result as $item){ - foreach ($attributes as $att){ - $atts[$att] = $item[$att]; - } - $expdn = ldap_explode_dn($item['dn'],1); - $au = array_slice($expdn, 3, 1); - $atts['auDN'] = implode ( ',', $au ); - $dhcpsubnets [] = $atts; - } - #print_r($dhcpsubnets); - if($attributes != false ){ - return $dhcpsubnets; - } - else{return $result;} - } -} - -?> |