diff options
Diffstat (limited to 'ldap-site-mngmt/webinterface/lib')
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 = " ") - * 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 löschen + $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 + $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. + # 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; |