summaryrefslogtreecommitdiffstats
path: root/ldap-site-mngmt/webinterface/lib/ldap.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'ldap-site-mngmt/webinterface/lib/ldap.inc.php')
-rw-r--r--ldap-site-mngmt/webinterface/lib/ldap.inc.php180
1 files changed, 119 insertions, 61 deletions
diff --git a/ldap-site-mngmt/webinterface/lib/ldap.inc.php b/ldap-site-mngmt/webinterface/lib/ldap.inc.php
index f7f6be07..79d50e61 100644
--- a/ldap-site-mngmt/webinterface/lib/ldap.inc.php
+++ b/ldap-site-mngmt/webinterface/lib/ldap.inc.php
@@ -1,13 +1,13 @@
<?php
/**
* ldap.inc.php - LDAP-Bibliothek
-* Diese Bibliothek enthält alle Funktionen für den Zugriff auf den LDAP-Server.
+* 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
+* @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");
@@ -15,9 +15,9 @@ require_once("config.inc.php");
$ldapError = null;
/**
-* uniLdapConnect($userRdn, $userPwd) - Führt den Bind am Gruppe1-LDAP-Server durch
+* uniLdapConnect($userRdn, $userPwd) - F�hrt den Bind am Gruppe1-LDAP-Server durch
*
-* @param string userRdn UID für den Login
+* @param string userRdn UID f�r den Login
* @param string userPwd Loginpasswort
*
* @return boolean Erfolg bzw. Misserfolg
@@ -38,7 +38,7 @@ function uniLdapConnect($userRdn = "", $userPwd = "") {
if($userRdn != "" && $userPwd != "") {
# Anmeldung als User.
if($result = @ldap_bind($ds, "uid=".$userRdn.",ou=people,".$suffix, $userPwd)) {
- # Bind erfolgreich ausgeführt
+ # Bind erfolgreich ausgef�hrt
return $ds;
} else {
# Bind nicht erfolreich.
@@ -53,7 +53,7 @@ function uniLdapConnect($userRdn = "", $userPwd = "") {
} else {
# Anonymer Bind.
if($result = ldap_bind($ds)) {
- # Anonymer Bind erfolgreich ausgeführt
+ # Anonymer Bind erfolgreich ausgef�hrt
return $ds;
} else {
# Anonymer Bind nicht erfolreich.
@@ -77,9 +77,9 @@ function uniLdapConnect($userRdn = "", $userPwd = "") {
/**
-* rzLdapConnect($userRdn, $userPwd) - Führt den Bind am RZ-LDAP-Server durch
+* rzLdapConnect($userRdn, $userPwd) - F�hrt den Bind am RZ-LDAP-Server durch
*
-* @param string userRdn UID für den Login
+* @param string userRdn UID f�r den Login
* @param string userPwd Loginpasswort
*
* @return boolean Erfolg bzw. Misserfolg
@@ -99,7 +99,7 @@ function rzLdapConnect($userRdn = "", $userPwd = "") {
if($userRdn != "" && $userPwd != "") {
# Anmeldung als User.
if($result = @ldap_bind($ds, "uid=".$userRdn.",ou=people,".$suffix_rz, $userPwd)) {
- # Bind erfolgreich ausgeführt
+ # Bind erfolgreich ausgef�hrt
return $ds;
} else {
# Bind nicht erfolreich.
@@ -113,7 +113,7 @@ function rzLdapConnect($userRdn = "", $userPwd = "") {
} else {
# Anonymer Bind.
if($result = ldap_bind($ds)) {
- # Anonymer Bind erfolgreich ausgeführt
+ # Anonymer Bind erfolgreich ausgef�hrt
return $ds;
} else {
# Anonymer Bind nicht erfolreich.
@@ -133,14 +133,14 @@ function rzLdapConnect($userRdn = "", $userPwd = "") {
/**
* uniLdapSearch($ds, $base, $filter, $attributes, $sort, $mode, $resultLimit, $timeout)
- * Sucht Einträge im LDAP-Server.
+ * 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.
+ * 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
*
@@ -148,16 +148,16 @@ function rzLdapConnect($userRdn = "", $userPwd = "") {
*
* @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 $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 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 $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
+ * @return mixed multidimensionales array mit den Eintr�gen im Erfolgsfall, FALSE wenn ein Fehler auftrat
*
* @see ldap_read()
* @see ldap_list()
@@ -201,8 +201,8 @@ function uniLdapSearch($ds, $base, $filter, $attributes, $sort, $mode, $resultLi
return false;
}
} else {
- # Kein gültiger Modus angegeben.
- $ldapError .= "Es wurde kein gültiger Modus angegeben.";
+ # Kein g�ltiger Modus angegeben.
+ $ldapError .= "Es wurde kein g�ltiger Modus angegeben.";
return false;
}
if($abfrage && ($entries = ldap_get_entries($ds, $resource))) {
@@ -218,11 +218,11 @@ function uniLdapSearch($ds, $base, $filter, $attributes, $sort, $mode, $resultLi
/**
* uniLdapAdd($ds, $dn, $daten, [$objectclass])
*
-* Fügt ein neues Objekt in die LDAP-Datenbank ein.
+* 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 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.
@@ -245,22 +245,22 @@ function uniLdapAdd($ds, $dn, $daten, $objectclass = "") {
/**
* 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.
+* 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_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.
+* @return boolean TRUE wenn �nderung erfolgreich, FALSE wenn ein Fehler aufgetreten ist.
*
* @see ldap_mod_replace()
* @see ldap_mod_add()
@@ -279,16 +279,16 @@ function uniLdapModify($ds, $dn, $daten_alt, $daten_neu, $i = 0) {
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 &nbsp; löschen
+ $value_neu = htmlentities(str_replace(chr(160),"",trim($value_neu))); // ungewollte Leerzeichen und &nbsp; l�schen
if (isset($daten_alt[$key])) {
- $daten_alt[$key] = str_replace(chr(160),"",trim($daten_alt[$key])); // ungewollte Leerzeichen und &nbsp; löschen
+ $daten_alt[$key] = str_replace(chr(160),"",trim($daten_alt[$key])); // ungewollte Leerzeichen und &nbsp; 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.
+ # F�ge neues Attribut hinzu.
if(ldap_mod_add($ds, $dn, array($key => $value_neu))) {
$meldung .= "Add successfull: ".$key." -> ".$value_neu."<br>";
} else {
@@ -298,7 +298,7 @@ function uniLdapModify($ds, $dn, $daten_alt, $daten_neu, $i = 0) {
} else if($daten_alt[$key] != "" && $value_neu == "") {
# FALL 2:
# Alter Wert ist nicht leer, neuer Wert ist leer.
- # Lösche Attribut.
+ # L�sche Attribut.
if(ldap_mod_del($ds, $dn, array($key => $daten_alt[$key]))) {
$meldung .= "Delete successfull: ".$key." -> ".$daten_alt[$key]."<br>";
} else {
@@ -308,7 +308,7 @@ function uniLdapModify($ds, $dn, $daten_alt, $daten_neu, $i = 0) {
} 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.
+ # �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 {
@@ -316,7 +316,7 @@ function uniLdapModify($ds, $dn, $daten_alt, $daten_neu, $i = 0) {
}
} else {
- # In allen anderen Fällen ist keine Änderung nötig
+ # In allen anderen F�llen ist keine �nderung n�tig
}
} else {
# Wenn $value_neu ein Array ist...
@@ -326,7 +326,7 @@ function uniLdapModify($ds, $dn, $daten_alt, $daten_neu, $i = 0) {
$value_alt = numArraySauber($daten_alt[$key]);
foreach($value_alt as $item) {
#$item = htmlentities($item);
- # Lösche alle alten Werte des Attributes $key.
+ # L�sche alle alten Werte des Attributes $key.
if(ldap_mod_del($ds, $dn, array($key => $item))) {
$meldung .= "Delete successfull: ".$key." -> ".$item."<br>";
} else {
@@ -336,7 +336,7 @@ function uniLdapModify($ds, $dn, $daten_alt, $daten_neu, $i = 0) {
}
foreach($value_neu as $item) {
$item = htmlentities($item);
- # Füge alle neuen Werte des Attributes $key ein.
+ # 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 {
@@ -355,36 +355,36 @@ function uniLdapModify($ds, $dn, $daten_alt, $daten_neu, $i = 0) {
}
/**
-* 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
+* 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
+* @author Daniel H�fler
*/
function uniLdapDelete($ds, $dn) {
- # Überprüfung, ob zu löschender Eintrag vorhanden ist
+ # �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";
+ $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-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
+ # l�schen der Bl�tter
if(ldap_delete($ds, $dn)) {
return true;
} else {
- $ldapError .= "Löschen fehlgeschlagen".ldap_error($ds)."<br>\n";
+ $ldapError .= "L�schen fehlgeschlagen".ldap_error($ds)."<br>\n";
return false;
}
}
@@ -398,17 +398,17 @@ function uniLdapDelete($ds, $dn) {
# Weitere LDAP Funktionen
#
-# LDAP Funktionen um alle Objekte der AU eines bestimmten Typs mit gewählten Attributen zu holen
+# LDAP Funktionen um alle Objekte der AU eines bestimmten Typs mit gew�hlten Attributen zu holen
#
-function get_hosts($auDN,$attributes)
+function get_hosts($auDN,$attributes,$sortattr)
{
global $ds, $suffix, $ldapError;
- #if ( $sortattr == ""){
- # $sortattr = "hostname";
- #}
+ if ( $sortattr == ""){
+ $sortattr = "hostname";
+ }
- if(!($result = uniLdapSearch($ds, "cn=computers,".$auDN, "(objectclass=Host)", $attributes, "hostname", "sub", 0, 0))) {
+ if(!($result = uniLdapSearch($ds, "cn=computers,".$auDN, "(objectclass=Host)", $attributes, $sortattr, "sub", 0, 0))) {
# redirect(5, "", $ldapError, FALSE);
echo "no search";
die;
@@ -533,6 +533,39 @@ function get_pxeconfigs($baseDN,$attributes)
}
}
+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;
@@ -712,6 +745,31 @@ function get_childau($auDN,$attributes)
}
}
+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;