summaryrefslogtreecommitdiffstats
path: root/ldap-site-mngmt/webinterface/lib
diff options
context:
space:
mode:
Diffstat (limited to 'ldap-site-mngmt/webinterface/lib')
-rw-r--r--ldap-site-mngmt/webinterface/lib/au_management_functions.php4
-rw-r--r--ldap-site-mngmt/webinterface/lib/commonlib.inc.php84
-rw-r--r--ldap-site-mngmt/webinterface/lib/config.inc.php60
-rw-r--r--ldap-site-mngmt/webinterface/lib/dhcp_management_functions.php20
-rw-r--r--ldap-site-mngmt/webinterface/lib/host_management_functions.php71
-rw-r--r--ldap-site-mngmt/webinterface/lib/ldap.inc.php180
-rw-r--r--ldap-site-mngmt/webinterface/lib/rbs_management_functions.php4
7 files changed, 279 insertions, 144 deletions
diff --git a/ldap-site-mngmt/webinterface/lib/au_management_functions.php b/ldap-site-mngmt/webinterface/lib/au_management_functions.php
index 35881fec..d924aec0 100644
--- a/ldap-site-mngmt/webinterface/lib/au_management_functions.php
+++ b/ldap-site-mngmt/webinterface/lib/au_management_functions.php
@@ -53,7 +53,7 @@ function new_childau($childDN,$childou,$childcn,$childdesc,$mainadmin){
if ($resultAU = ldap_add($ds,$childDN,$entryAU)){
# alle Au Container anlegen
- $containers = array("computers","dhcp","groups","rbs","roles");
+ $containers = array("computers","dhcp","groups","pxe","rbs","roles");
foreach ($containers as $cont){
$entryCont = array();
$entryCont ['objectclass'] = "AUContainer";
@@ -426,7 +426,7 @@ function change_child_domain($childdomain, $oldchilddomain, $childDN, $assocdom,
$entryAD['associateddomain'] = $assocdom;
#print_r($entryAD); echo "<br>";
if ($resultAD = ldap_mod_del($ds,$childDN,$entryAD)){
-
+
# neuen dc Knoten anlegen mit Rollen ...
if(new_child_domain($childdomain, $childDN, $assocdom, $domDN)){
diff --git a/ldap-site-mngmt/webinterface/lib/commonlib.inc.php b/ldap-site-mngmt/webinterface/lib/commonlib.inc.php
index e827c811..95fc0776 100644
--- a/ldap-site-mngmt/webinterface/lib/commonlib.inc.php
+++ b/ldap-site-mngmt/webinterface/lib/commonlib.inc.php
@@ -5,20 +5,20 @@
* attributesToString($entry, $name, $delemiter = "", $pattern = "", $empty = "&nbsp") -
* Gibt die Attribute eines LDAP-Eintrages formatiert aus
*
-* Gibt die Attribute des Schlüssels $name des LDAP-Eintraes $entry aus. Mehrere Werte werden mit $delemiter
-* voneinander getrennt. Für jeden Wert des Attributes wird in $pattern an die Stelle "$name" (Dallarzeichen plus die Bezeichnung)
-* das aktuelle Attribut eingefügt - ähnlich (aber nicht gleich!) der String-Interpretation von PHP. Falls $pattern = "" wird
-* einfach der Wert zurück gegeben. Falls für den Schlüssel keine Attribut-Werte definiert sind, wird $empty zurück gegeben
+* Gibt die Attribute des Schl�ssels $name des LDAP-Eintraes $entry aus. Mehrere Werte werden mit $delemiter
+* voneinander getrennt. F�r jeden Wert des Attributes wird in $pattern an die Stelle "$name" (Dallarzeichen plus die Bezeichnung)
+* das aktuelle Attribut eingef�gt - �hnlich (aber nicht gleich!) der String-Interpretation von PHP. Falls $pattern = "" wird
+* einfach der Wert zur�ck gegeben. Falls f�r den Schl�ssel keine Attribut-Werte definiert sind, wird $empty zur�ck gegeben
*
* @param array entry LDAP-Array
* @param string name Hashbezeichnung
* @param string delimiter Trennzeichen
* @param string pattern Muster
-* @param string empty Zeichen für leere Felder
+* @param string empty Zeichen f�r leere Felder
*
* @return string Array-Werte als String
*
-* @author Timothy Burk, lt. Musterlösung
+* @author Timothy Burk, lt. Musterl�sung
*
*/
@@ -51,7 +51,7 @@
* liefert den ($i-ten) Wert des Attributes $name aus $entry
* Eingabe ist entweder ein Datensatz aus dem ldapsearch-Ergebnis, oder
* ein um die Meta-Infos (count) bereinigtes Ergebnis
- * sorry für die mangelhafte Doku - Thomas
+ * sorry f�r die mangelhafte Doku - Thomas
*/
function oneAttribute($entry, $name, $empty = "", $i = 0) {
@@ -72,11 +72,11 @@
/**
* redirect($seconds, $url, $msg = "", $addSessionId = TRUE) - leitet den Benutzer auf eine andere Seite weiter
*
- * Leitet den Benuzter nach $seconds Sekunden auf die Seite $url weiter. Während der Wartezeit bekommt der Benutzer
+ * Leitet den Benuzter nach $seconds Sekunden auf die Seite $url weiter. W�hrend der Wartezeit bekommt der Benutzer
* die Information $msg mitgeteilt (Achtung: keine automatische Formatierung der $msg). Wenn $addSessionId TRUE ist,
- * dann wird an den URL die SessionId angehängt.
+ * dann wird an den URL die SessionId angeh�ngt.
*
- * @author Timothy Burk, lt. Musterlösung
+ * @author Timothy Burk, lt. Musterl�sung
*/
function redirect($seconds, $url, $msg = "", $addSessionId = TRUE) {
@@ -106,8 +106,8 @@
/**
* getRights($ds, $userDn) - ermittelt die Rechte eines Users.
*
-* Die Funktion erwartet ein Directory-Handle und den vollständigen Distiguished Name des
-* Users. Rückgabewert ist ein numerisches eindimensionales Array, welches die Rechte enthält.
+* Die Funktion erwartet ein Directory-Handle und den vollst�ndigen Distiguished Name des
+* Users. R�ckgabewert ist ein numerisches eindimensionales Array, welches die Rechte enth�lt.
*
* @param resource ds LDAP Directory Handle
* @param string userDn Distinguishedname des Users
@@ -158,10 +158,10 @@ function getRoles($ds, $userDN) {
/**
-* createMenu($rechte) - erstellt die Menuleiste abhängig von der Rechten des Users.
+* createMenu($rechte) - erstellt die Menuleiste abh�ngig von der Rechten des Users.
*
* Die Navigationsleiste wird dynamisch erzeugt und von dieser Funktion direkt in das
-* entsprechende Template geparst. Dabei werden nur die Schaltflächen zur Verfügung
+* entsprechende Template geparst. Dabei werden nur die Schaltfl�chen zur Verf�gung
* gestellt, die der User mit seinen Rechten anzeigen darf.
*
* @param array rechte Eindimensionales Array mit den Rechten des Users
@@ -178,7 +178,7 @@ function createMainMenu($rollen , $mainnr) {
$mipbs = get_maxipblocks_au($auDN);
#echo "MIPB: "; print_r ($mipbs); echo "<br>";
if ($mipbs[0] != ""){
- $dhcplink = "dhcp/dhcp.php";
+ $dhcplink = "dhcp/dhcpsubnets.php?mnr=0";
}else{
$dhcplink = "dhcp/no_dhcp.php";
}
@@ -193,7 +193,7 @@ function createMainMenu($rollen , $mainnr) {
#array("link" => "ip/ip.php",
# "text" => "IP Management",
# "zugriff" => array("MainAdmin","HostAdmin","DhcpAdmin")),
- array("link" => "computers/computers.php",
+ array("link" => "computers/hostoverview.php?sort=hostname",
"text" => "Rechner",
"zugriff" => array("MainAdmin","HostAdmin","DhcpAdmin")),
array("link" => $dhcplink,
@@ -277,7 +277,7 @@ function vergleicheArrays($a, $b) {
/**
* inputArraySauber($Array)
*
-* Löscht aus einem Array, welches POST-Daten enthält leere Felder. Nötig für die Formatierung
+* L�scht aus einem Array, welches POST-Daten enth�lt leere Felder. N�tig f�r die Formatierung
* vor dem Anlegen neuer Objekte.
*
* @param array _POST-Array
@@ -307,7 +307,7 @@ function inputArraySauber($Array) {
/**
* numArraySauber($Array)
*
-* Löscht aus einemn numerischen Array leere Felder.
+* L�scht aus einemn numerischen Array leere Felder.
*
* @param array Numerisches Array
*
@@ -335,8 +335,8 @@ function numArraySauber($Array) {
* ldapArraySauber($Array, [$delEmpty])
*
* Bereinigt ein dreidimensionales Array, so wie es aus der Funktion uniLdapSearch kommt.
-* Dabei werden alle count-Felder sowie alle numerischen Felder in denen der Schlüssel
-* gespeichert ist entfernt. Attributarrays mit nur einem Element werden gelöscht, das Element
+* Dabei werden alle count-Felder sowie alle numerischen Felder in denen der Schl�ssel
+* gespeichert ist entfernt. Attributarrays mit nur einem Element werden gel�scht, das Element
* wir als Skalar gespeichert.
* Wenn $delEmpty = TRUE ist, werden nur nichtleere Felder gespeichert.
*
@@ -390,14 +390,14 @@ function ldapArraySauber($Array, $delEmpty = FALSE) {
/**
* personOptionen($rechte)
*
-* Enthält die möglichen Optionen, die auf einen User angewandt werden können als
+* Enth�lt die m�glichen Optionen, die auf einen User angewandt werden k�nnen als
* zweidimensionales Array mit folgenden Attributen:
* [ziel]: Aufzurufendes PHP-Skript
-* [text]: Beschriftung der Schaltfläche
+* [text]: Beschriftung der Schaltfl�che
* [desc]: Beschreibung der Funktion
-* [rechte][]: Array mit den erforderlichen Rechten für die jeweilige Option. array("alle") steht für "ohne Einschränkung".
+* [rechte][]: Array mit den erforderlichen Rechten f�r die jeweilige Option. array("alle") steht f�r "ohne Einschr�nkung".
*
-* Dieses in dieser Funktion gespeicherte Array wird abhängig von den übergebenen
+* Dieses in dieser Funktion gespeicherte Array wird abh�ngig von den �bergebenen
* Rechten um nicht erlaubte Optionen reduziert und dann ausgegeben.
*
* @param array $rechte Eindimensionales Array $_SESSION['rechte']
@@ -411,12 +411,12 @@ function personOptionen($rechte) {
$optionen = array();
$optionen[] = array("ziel" => $START_PATH."person/datensatz.php?aktion=edit",
"text" => "Userdaten bearbeiten",
- "desc" => "Anzeigen und Ändern der persönlichen Daten des Users.",
+ "desc" => "Anzeigen und �ndern der pers�nlichen Daten des Users.",
"rechte" => array("writeMitarbeiter"),
"hidden" => array("aktion" => "edit"));
$optionen[] = array("ziel" => $START_PATH."person/datensatz.php",
- "text" => "Datensatz löschen",
- "desc" => "Der User wird vollständig mit allen Daten aus der Datenbank gelöscht.",
+ "text" => "Datensatz l�schen",
+ "desc" => "Der User wird vollst�ndig mit allen Daten aus der Datenbank gel�scht.",
"rechte" => array("writeMitarbeiter"),
"hidden" => array("aktion" => "delete"));
$optionen[] = array("ziel" => $START_PATH."person/datensatz.php",
@@ -425,8 +425,8 @@ function personOptionen($rechte) {
"rechte" => array("writeMitarbeiter"),
"hidden" => array("aktion" => "archiv"));
$optionen[] = array("ziel" => $START_PATH."person/vertrag_show.php",
- "text" => "Verträge bearbeiten",
- "desc" => "Bearbeiten oder Anlegen eines Vertrages. Sie können dabei zwischen verschiedenen Vertragsarten wählen.",
+ "text" => "Vertr�ge bearbeiten",
+ "desc" => "Bearbeiten oder Anlegen eines Vertrages. Sie k�nnen dabei zwischen verschiedenen Vertragsarten w�hlen.",
"rechte" => array("writeVertrag", "readVertrag"));
$optionen[] = array("ziel" => $START_PATH."urlaub/krank_angabe.php",
"text" => "Krankheitstage",
@@ -435,7 +435,7 @@ function personOptionen($rechte) {
"hidden" => array("uidToChange" => $utc_uid, "GName" => $utc_cn));
$optionen[] = array("ziel" => $START_PATH."urlaub/liste.php",
"text" => "Urlaubstage anzeigen",
- "desc" => "Urlaubstage des Users in grafischer Übersicht anzeigen.",
+ "desc" => "Urlaubstage des Users in grafischer �bersicht anzeigen.",
"rechte" => array("readKrankheitUrlaub"),
"hidden" => array("wer" => $utc_uid, "wann" => "g", "sub" => $utc_cn));
$optionen[] = array("ziel" => $START_PATH."person/rechte_show.php",
@@ -461,12 +461,12 @@ function personOptionen($rechte) {
* makeArrFromAttribute($a, $attribute)
*
* Ein zweidimensionales Array wird nach der ersten Dimension durchlaufen.
-* Dabei werden die Werte des angegebenen Attributes $attribute für alle
-* Einträge extrahiert und in einem neuen Array gespeichert, welches
-* anschließend zurückgegeben wird.
+* Dabei werden die Werte des angegebenen Attributes $attribute f�r alle
+* Eintr�ge extrahiert und in einem neuen Array gespeichert, welches
+* anschlie�end zur�ckgegeben wird.
*
* @param array $a Zweidimensionales Array
-* @param string $attribute Schlüsselname der zweiten Dimension
+* @param string $attribute Schl�sselname der zweiten Dimension
*
* @return array Eindimensionales numerisches Array mit den Attributwerten.
*
@@ -486,20 +486,20 @@ function makeArrFromAttribute($a, $attribute) {
/**
* sortArrayByKey sortiert die 1.Dimension von bis zu 5-dimensionalen Arrays
-* nach den Werten in einem beliebigen Schlüssel in beliebiger Dimension
+* nach den Werten in einem beliebigen Schl�ssel in beliebiger Dimension
*
-* PS: die Funktion sortArrayByKey ist nur sinnvoll, wenn sich die Array-Einträge
-* der 1.Dim sehr ähnlich sind, sprich bei Suchergebnissen!!
+* PS: die Funktion sortArrayByKey ist nur sinnvoll, wenn sich die Array-Eintr�ge
+* der 1.Dim sehr �hnlich sind, sprich bei Suchergebnissen!!
*
* @param array $array : das zu sortierende Array
-* @param string $sortKey : der Schlüssel, nach dem sortiert werden soll
+* @param string $sortKey : der Schl�ssel, nach dem sortiert werden soll
* Bsp.:
* es soll nach $array[$i][$j][$k]['sortkey'] sortiert werden
* => $sortKey = "$j#$k#sortkey"
-* @param string $sortDirection : die Sortierrichtung, gültige Werte sind "up", "down"
+* @param string $sortDirection : die Sortierrichtung, g�ltige Werte sind "up", "down"
*
*
-* @author Daniel Höfler
+* @author Daniel H�fler
*/
function sortArrayByKey($array, $sortKey, $sortDirection = "up") {
$sortKeyArray = explode("#", $sortKey);
@@ -533,7 +533,7 @@ function sortArrayByKey($array, $sortKey, $sortDirection = "up") {
break;
}
} else {
- echo "zu viele Dimensionen!! Höchstens 4 Dimensionen möglich";
+ echo "zu viele Dimensionen!! H�chstens 4 Dimensionen m�glich";
return false;
}
if($sortDirection == "up") {
@@ -541,7 +541,7 @@ function sortArrayByKey($array, $sortKey, $sortDirection = "up") {
} elseif($sortDirection == "down") {
arsort($toSortKeys);
} else {
- echo "Keine gültige Sortierrichtung!! Wählen sie \"up\" oder \"down\"\n";
+ echo "Keine g�ltige Sortierrichtung!! W�hlen sie \"up\" oder \"down\"\n";
return false;
}
$sortArray = array();
diff --git a/ldap-site-mngmt/webinterface/lib/config.inc.php b/ldap-site-mngmt/webinterface/lib/config.inc.php
index cc26d0fc..18a59409 100644
--- a/ldap-site-mngmt/webinterface/lib/config.inc.php
+++ b/ldap-site-mngmt/webinterface/lib/config.inc.php
@@ -1,30 +1,36 @@
<?php
- #Pfad festlegen wo die Anwendungsskripte sich befinden
- #$START_PATH="http://localhost/lsm/";
- $START_PATH="https://dhcp.uni-freiburg.de/";
-
- # Anlegen einer Variablen für den Speicherort von den CSVs
- # $TMPPATH_CSV="/home/gruppe1/public_html/htdocs/";
-
- # einige LDAP-Angaben:
- # der Anwendungs-LDAP
- define('LDAP_HOST', 'ldap://foo.ruf.uni-freiburg.de');
- #define('LDAP_HOST', 'ldaps://foo.ruf.uni-freiburg.de');
- define('LDAP_PORT', 389);
- #define('LDAP_PORT', 636);
- $suffix = "dc=uni-freiburg,dc=de";
- $domsuffix = "uni-freiburg.de";
- $rootAU = "ou=UniFreiburg,ou=RIPM,dc=uni-freiburg,dc=de";
-
- # der LDAP-Server für die Authentisierung der User
- #define('LDAP_HOST', 'localhost');
- #define('LDAP_PORT', 389);
- #$suffix_rz = "dc=uni-freiburg,dc=de";
-
- # einige Sachen, die aus Sicherheitsgründen in produktiven Umgebungen geändert werden sollten!!!
- #$dummyUid = "rz-ldap"; // Dummy-User für einige Aktionen - muss angelegt werden!!!
- #$dummyPassword = "dummy";
-
- #$standardPassword = "..."; // das Passwort mit dem alle User im Anwendungsldap angelegt werden!!!
+ # URL and Root Path of LSM Webinterface
+ $START_PATH="https://dhcp.uni-freiburg.de/";
+ #$START_PATH="http://localhost/lsm/";
+
+ ###################################
+ # LSM LDAP Directory Information
+
+ # LDAP Server
+ # Master
+ define('LDAP_HOST', 'ldap://foo.ruf.uni-freiburg.de');
+ #define('LDAP_HOST', 'ldaps://foo.ruf.uni-freiburg.de');
+ # Slave
+ #define('LDAP_HOST', 'ldap://bar.ruf.uni-freiburg.de');
+ #define('LDAP_HOST', 'ldaps://bar.ruf.uni-freiburg.de');
+
+ # Local for Testing
+ #define('LDAP_HOST', 'localhost');
+
+ define('LDAP_PORT', 389);
+ #define('LDAP_PORT', 636);
+
+ $suffix = "dc=uni-freiburg,dc=de";
+ $domsuffix = "uni-freiburg.de";
+ $rootAU = "ou=UniFreiburg,ou=RIPM,dc=uni-freiburg,dc=de";
+ ###################################
+
+
+ # einige Sachen, die aus Sicherheitsgr�nden in produktiven Umgebungen ge�ndert werden sollten!!!
+ #$dummyUid = "rz-ldap"; // Dummy-User f�r einige Aktionen - muss angelegt werden!!!
+ #$dummyPassword = "dummy";
+
+ #$standardPassword = "..."; // das Passwort mit dem alle User im Anwendungsldap angelegt werden!!!
+
?>
diff --git a/ldap-site-mngmt/webinterface/lib/dhcp_management_functions.php b/ldap-site-mngmt/webinterface/lib/dhcp_management_functions.php
index 05d47f49..97259728 100644
--- a/ldap-site-mngmt/webinterface/lib/dhcp_management_functions.php
+++ b/ldap-site-mngmt/webinterface/lib/dhcp_management_functions.php
@@ -673,18 +673,18 @@ function check_ip_in_subnet($ip,$subnet) {
#########################
# Pools
-function add_dhcppool ($dhcpsubnetdn,$range,$unknownclients,$dhcpservicedn){
+function add_dhcppool ($dhcpsubnetdn,$range,$unknownclients,$dhcpservicedn,$rbssrvdn){
global $ds, $suffix, $auDN, $ldapError;
-
+
if(!($result = uniLdapSearch($ds, "cn=dhcp,".$auDN,"(objectclass=*)", array("cn"), "dn", "list", 0, 0))) {
- # redirect(5, "", $ldapError, FALSE);
- echo "no search";
- die;
+ # redirect(5, "", $ldapError, FALSE);
+ echo "no search";
+ die;
}
$result = ldapArraySauber($result);
- $dhcpcn_array = array();
+ $dhcpcn_array = array();
foreach ($result as $item){
$dhcpcn_array [] = $item['cn'];
}
@@ -696,7 +696,7 @@ function add_dhcppool ($dhcpsubnetdn,$range,$unknownclients,$dhcpservicedn){
}
}
$dhcppoolDN = "cn=".$cn.",cn=dhcp,".$auDN;
-
+
$entrydhcp ['objectclass'][0] = "dhcpPool";
$entrydhcp ['objectclass'][1] = "dhcpOptions";
$entrydhcp ['objectclass'][2] = "top";
@@ -710,15 +710,17 @@ function add_dhcppool ($dhcpsubnetdn,$range,$unknownclients,$dhcpservicedn){
}else{
$entrydhcp ['dhcpoptdeny'] = "unknown-clients";
}
+ if ( $rbssrvdn != "none" ){
+ $entrydhcp ['hlprbservice'] = $rbssrvdn;
+ }
print_r($dhcppoolDN);echo "<br><br>";
print_r($entrydhcp);echo "<br><br>";
-
+
if ($result = ldap_add($ds,$dhcppoolDN,$entrydhcp)){
return 1;
}else{return 0;}
-
}
diff --git a/ldap-site-mngmt/webinterface/lib/host_management_functions.php b/ldap-site-mngmt/webinterface/lib/host_management_functions.php
index a45304bc..502dccb2 100644
--- a/ldap-site-mngmt/webinterface/lib/host_management_functions.php
+++ b/ldap-site-mngmt/webinterface/lib/host_management_functions.php
@@ -173,6 +173,21 @@ function delete_host($hostDN){
}
}
+function check_hostname($hostname){
+
+ global $ds, $suffix, $auDN, $ldapError;
+
+ $brothercheck = 0;
+ $brotherhosts = get_hosts($auDN,array("hostname"),"");
+
+ foreach ($brotherhosts as $item){
+ if( $item['hostname'] == $hostname ){
+ $brothercheck = 1;
+ break;
+ }
+ }
+ return $brothercheck;
+}
###############################################################################
# Funktionen zur Verwaltung von Rechnergruppen
@@ -400,6 +415,60 @@ function change_mc_timerange($mcDN,$newmcDN,$mctimerange){
}
}
-
+#####################################################################
+# Natürliches Sortieren (x.x.4.9 vor x.x.4.11 ) von mehr-dim Arrays der Art:
+# Array (
+# [0] => Array (
+# [hostname] = client01
+# [ipaddress] = 132.230.4.11
+# )
+# [1] => Array (
+# [hostname] = client02
+# [ipaddress] = 132.230.4.9
+# )
+# )
+
+/**
+ * @return Returns the array sorted as required
+ * @param $aryData Array containing data to sort
+ * @param $strIndex Name of column to use as an index
+ * @param $strSortBy Column to sort the array by
+ * @param $strSortType String containing either asc or desc [default to asc]
+ * @desc Naturally sorts an array using by the column $strSortBy
+ */
+function array_natsort($aryData, $strIndex, $strSortBy, $strSortType=false){
+
+ // if the parameters are invalid
+ if (!is_array($aryData) || !$strIndex || !$strSortBy){
+ // return the array
+ return $aryData;
+ }
+ // create our temporary arrays
+ $arySort = $aryResult = array();
+ // loop through the array
+ foreach ($aryData as $aryRow){
+ // set up the value in the array
+ $arySort[$aryRow[$strIndex]] = $aryRow[$strSortBy];
+ }
+ // apply the natural sort
+ natsort($arySort);
+ // if the sort type is descending
+ if ($strSortType=="desc"){
+ // reverse the array
+ arsort($arySort);
+ }
+ // loop through the sorted and original data
+ foreach ($arySort as $arySortKey => $arySorted){
+ foreach ($aryData as $aryOriginal){
+ // if the key matches
+ if ($aryOriginal[$strIndex]==$arySortKey){
+ // add it to the output array
+ array_push($aryResult, $aryOriginal);
+ }
+ }
+ }
+
+ return $aryResult;
+}
?> \ No newline at end of file
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;
diff --git a/ldap-site-mngmt/webinterface/lib/rbs_management_functions.php b/ldap-site-mngmt/webinterface/lib/rbs_management_functions.php
index 71ea576f..2e7d5348 100644
--- a/ldap-site-mngmt/webinterface/lib/rbs_management_functions.php
+++ b/ldap-site-mngmt/webinterface/lib/rbs_management_functions.php
@@ -200,7 +200,7 @@ function adjust_dhcpnextserver($tftpIP, $rbsDN){
global $ds, $suffix, $ldapError;
- if(!($result = uniLdapSearch($ds, "ou=RIPM,".$suffix, "(&(objectclass=Host)(hlprbservice=$rbsDN))", array("dn"), "dn", "sub", 0, 0))) {
+ if(!($result = uniLdapSearch($ds, "ou=RIPM,".$suffix, "(&(|(objectclass=Host)(objectclass=dhcpPool))(hlprbservice=$rbsDN))", array("dn"), "dn", "sub", 0, 0))) {
# redirect(5, "", $ldapError, FALSE);
echo "no search";
die;
@@ -436,7 +436,7 @@ function add_pxe($pxeDN,$pxecn,$rbsDN,$pxetimerange,$pxeattribs,$filenames,$conf
}
}
}
- #print_r($pxeentry); echo "<br>";
+ print_r($pxeentry); echo "<br>";
print_r($pxeDN); echo "<br>";
if (ldap_add($ds,$pxeDN,$pxeentry)){
return 1;