summaryrefslogtreecommitdiffstats
path: root/ldap-site-mngmt/webinterface/lib/dhcp_management_functions.php
diff options
context:
space:
mode:
Diffstat (limited to 'ldap-site-mngmt/webinterface/lib/dhcp_management_functions.php')
-rw-r--r--ldap-site-mngmt/webinterface/lib/dhcp_management_functions.php727
1 files changed, 0 insertions, 727 deletions
diff --git a/ldap-site-mngmt/webinterface/lib/dhcp_management_functions.php b/ldap-site-mngmt/webinterface/lib/dhcp_management_functions.php
deleted file mode 100644
index 97259728..00000000
--- a/ldap-site-mngmt/webinterface/lib/dhcp_management_functions.php
+++ /dev/null
@@ -1,727 +0,0 @@
-<?php
-
-/**
-* dhcp_management_functions.php - DHCP Management Funktions-Bibliothek
-* Diese Bibliothek enthält alle Funktionen für die Verwaltung des DHCP Dienstes
-*
-* @param string ldapError
-* @param resource ds
-*
-* @author Tarik Gasmi
-* @copyright Tarik Gasmi
-*/
-
-# Konfiguration laden
-require_once("config.inc.php");
-
-$ldapError = null;
-
-###################################################################################################
-
-# wenn DHCP Objekte geändert werden DHCP modify time der AU aktualisieren, und auch der AUs
-# referenzierter Objekte (Subnetz, RBS Dhcp Optionen) aktualisieren
-function update_dhcpmtime($au_array){
-
- global $ds, $auDN, $ldapError;
-
- $entry ['dhcpmtime'] = time();
-
- # eigene AU
- $results = ldap_mod_replace($ds,$auDN,$entry);
- if ($results){
- echo "<br><b>dhcpMTime</b> erfolgreich in AU ".$auDN." aktualisiert!<br>" ;
- #return 1;
- }else{
- echo "<br>Fehler beim Aktualisieren der <b>dhcpMTime</b>!<br>" ;
- }
-
- # andere AUs
- if ( count($au_array) != 0 ) {
- $au_array = array_unique($au_array);
- # Bind als DHCP Manager
- $dhcp_uid = "dhcpmanager";
- $dhcp_userPassword = "dhcpman02";
- if (!($dhcp_ds = uniLdapConnect($dhcp_uid,$dhcp_userPassword))){
- echo "Konnte nicht als <b>DHCP-Manager</b> mit LDAP Server verbinden";
- die;
- }else{
- #echo "DHCP BIND erfolgreich";
- foreach ($au_array as $au){
- $results = ldap_mod_replace($dhcp_ds,$au,$entry);
- if ($results){
- echo "<b>dhcpMTime</b> erfolgreich in AU ".$au." aktualisiert!<br>" ;
- #return 1;
- }else{
- echo "<br>Fehler beim Aktualisieren der <b>dhcpMTime</b>!<br>" ;
- }
- }
- ldap_unbind($dhcp_ds);
- }
- }
-}
-
-
-# freie x.x.x.0/24 Netzwerke einer AU holen
-function get_networks(){
-
- global $ds, $suffix, $auDN, $ldapError;
-
- $networks = array();
- $fipb_array = get_freeipblocks_au($auDN);
- foreach ( $fipb_array as $fipb ){
- $exp = explode('_',$fipb);
- $fs = explode('.',$exp[0]);
- $fe = explode('.',$exp[1]);
- #print_r($fs); echo "<br>";
- #print_r($fe); echo "<br>";
-
- if ($fs[3] == 0){$networks [] = $exp[0];}
- $fs[2] = $fs[2] + 1;
- $fs[3] = 0;
-
- while ( $fs[2] <= $fe[2] ){
- $iprange = implode('_',array(implode('.',$fs),implode('.',$fs)));
- if (check_ip_in_iprange($iprange,$fipb)){
- $networks [] = implode('.',$fs);
- if ($fs[2] == 255){ $fs[1] = $fs[1] + 1; $fs[2] = 0; }
- else{ $fs[2] = $fs[2] + 1; }
- }
- }
- }
- #print_r($networks); echo "<br>";
- return $networks;
-}
-
-# Check ob AU über noch freie x.x.x.0/24 Netzwerke verfügt (freie IP Blöcke)
-function check_if_free_networks(){
-
- global $ds, $suffix, $auDN, $ldapError;
-
- $networks = 0;
- $fipb_array = get_freeipblocks_au($auDN);
- if ( $fipb_array[0] != "" ){
- foreach ( $fipb_array as $fipb ){
- $exp = explode('_',$fipb);
- $fs = explode('.',$exp[0]);
- $fe = explode('.',$exp[1]);
-
- if ($fs[3] == 0){return 1; break;}
- else{
- $fs[2] = $fs[2] + 1;
- $fs[3] = 0;
-
- while ( $fs[2] <= $fe[2] ){
- $iprange = implode('_',array(implode('.',$fs),implode('.',$fs)));
- if (check_ip_in_iprange($iprange,$fipb)){
- return 1; break 2;
- }
- if ($fs[2] == 255){ $fs[1] = $fs[1] + 1; $fs[2] = 0; }
- else{ $fs[2] = $fs[2] + 1; }
- }
- }
- }
- }
- return $networks;
-}
-
-# Check ob AU über x.x.x.0/24 Netzwerke insgesamt verfügt (maximale IP Blöcke)
-function check_if_max_networks(){
-
- global $ds, $suffix, $auDN, $ldapError;
-
- $networks = 0;
- $mipb_array = get_maxipblocks_au($auDN);
- if ( $mipb_array[0] != "" ){
- foreach ( $mipb_array as $mipb ){
- $exp = explode('_',$mipb);
- $fs = explode('.',$exp[0]);
- $fe = explode('.',$exp[1]);
-
- if ($fs[3] == 0){return 1; break;}
- else{
- $fs[2] = $fs[2] + 1;
- $fs[3] = 0;
-
- while ( $fs[2] <= $fe[2] ){
- $iprange = implode('_',array(implode('.',$fs),implode('.',$fs)));
- if (check_ip_in_iprange($iprange,$mipb)){
- return 1; break 2;
- }
- if ($fs[2] == 255){ $fs[1] = $fs[1] + 1; $fs[2] = 0; }
- else{ $fs[2] = $fs[2] + 1; }
- }
- }
- }
- }
- return $networks;
-}
-
-###################################################################################################
-
-function get_dhcpoffers($auDN){
-
- global $ds, $suffix, $auDN, $ldapError;
-
- $attribs = array("dn","dhcpofferdn");
- if(!($result = uniLdapSearch($ds, "ou=RIPM,".$suffix, "(objectclass=dhcpService)", $attribs, "dn", "sub", 0, 0))) {
- # redirect(5, "", $ldapError, FALSE);
- echo "no search";
- die;
- }
- else{
- $result = ldapArraySauber($result);
- #print_r($result);echo "<br><br>";
-
- $dhcp_offers = array();
- foreach ($result as $dhcp){
- if ( strpos($auDN, $dhcp['dhcpofferdn']) !== false ) # && $dhcp['dn'] != $dhcpserviceDN
- $dhcp_offers [] = $dhcp['dn'];
- }
- }
- #print_r($dhcp_offers);echo "<br><br>";
- return $dhcp_offers;
-}
-
-function alternative_dhcpservices($dhcpserviceDN){
-
- global $ds, $suffix, $auDN, $ldapError;
-
- $alt_dhcp = array();
-
- $dhcparray = get_dhcpoffers($auDN);
- # print_r($dhcparray); echo "<br>";
- if (count($dhcparray) != 0){
- for ($i=0; $i < count($dhcparray); $i++){
- if ($dhcparray[$i] != $dhcpserviceDN){
- $exp = ldap_explode_dn ( $dhcparray[$i], 1 );
- $alt = array ("dn" => $dhcparray[$i], "cn" => $exp[0], "au" => " / ".$exp[2]);
- $alt_dhcp[] = $alt;
- }
- }
- }
-
- return $alt_dhcp;
-}
-
-function alternative_dhcpsubnets($dhcpsubnetDN){
-
- global $ds, $suffix, $auDN, $ldapError;
-
- $alt_subnet = array();
- $dhcpservices = get_dhcpoffers($auDN);
- #print_r($dhcpservices); echo "<br>";
- if (count($dhcpservices) != 0){
- foreach ($dhcpservices as $servDN){
- $attribs = array("dn","cn","dhcphlpcont");
- #$servDN = $item['dn'];
- #print_r($servDN); echo "<br>";
- $filter = "(&(objectclass=dhcpSubnet)(dhcphlpcont=$servDN))";
- if(!($result = uniLdapSearch($ds, "ou=RIPM,".$suffix, $filter, $attribs, "cn", "sub", 0, 0))) {
- # redirect(5, "", $ldapError, FALSE);
- echo "no search";
- die;
- }else{
- $result = ldapArraySauber($result);
- #print_r($result); echo "<br>";
- foreach ($result as $subnet){
- if ( check_subnet_mipb($subnet['cn']) && $subnet['dn'] != $dhcpsubnetDN){
- $exp = ldap_explode_dn ( $subnet['dn'], 1 );
- $alt = array ("dn" => $subnet['dn'], "cn" => $exp[0], "au" => " / ".$exp[2]);
- $alt_subnet[] = $alt;
- }
- }
- }
-
- }
- }
-
- return $alt_subnet;
-}
-
-function check_subnet_mipb($subnet){
-
- global $ds, $suffix, $auDN, $ldapError;
-
- $subexp = explode('.',$subnet);
- $ret = 0;
- $mipb_array = get_maxipblocks_au($auDN);
- if ( $mipb_array[0] != "" ){
- foreach ( $mipb_array as $mipb ){
- $exp = explode('_',$mipb);
- $ms = explode('.',$exp[0]);
- $me = explode('.',$exp[1]);
- if ( $subexp[2] >= $ms[2] && $subexp[2] <= $me[2] ){
- $ret = 1;
- break;
- }
- }
- }
- if ($ret){return 1;}
- else{return 0;}
-
-}
-
-###############################################################################
-# Funktionen zur Verwaltung von DHCP Service Objekten
-#
-
-function add_dhcpservice ($dhcpserviceName,$dhcpoffer,$atts){
-
- global $ds, $suffix, $auDN, $ldapError;
-
- #$dnarray = ldap_explode_dn ( $dhcpserviceDN, 1 );
- $dhcpserviceDN = "cn=".$dhcpserviceName.",cn=dhcp,".$auDN;
-
- $entrydhcp ['objectclass'][0] = "dhcpService";
- $entrydhcp ['objectclass'][1] = "dhcpOptions";
- $entrydhcp ['objectclass'][2] = "top";
- $entrydhcp ['cn'] = $dhcpserviceName;
- $entrydhcp ['dhcpofferdn'] = $dhcpoffer;
-
- # weitere Attribute
- foreach (array_keys($atts) as $key){
- if ($atts[$key] != ""){
- $entrydhcp[$key] = $atts[$key];
- }
- }
- print_r($entrydhcp); echo "<br>";
- print_r($dhcpserviceDN); echo "<br>";
-
- if ($result = ldap_add($ds, $dhcpserviceDN, $entrydhcp)){
- return 1;
- }
- else{
- $mesg = "Fehler beim eintragen des neuen DHCP Service Objekts!";
- return 0;
- }
-}
-
-
-# Löschen von Referenzen (dhcpHlpService) auf DHCP Service Objekt
-function cleanup_del_dhcpservice ($dhcpserviceDN){
-
- global $ds, $suffix, $auDN, $ldapError;
-
- $filter = "(&(|(objectClass=dhcpSubnet)(objectclass=dhcpHost))(dhcphlpcont=$dhcpserviceDN))";
- if(!($result = uniLdapSearch($ds, "ou=RIPM,".$suffix, $filter, array("dn"), "dn", "sub", 0, 0))) {
- # redirect(5, "", $ldapError, FALSE);
- echo "no search";
- die;
- }
- $result = ldapArraySauber($result);
- $delentry ['dhcphlpcont'] = $dhcpserviceDN;
- foreach ($result as $item){
- ldap_mod_del($ds, $item['dn'], $delentry);
- }
-}
-
-
-# Anpassen von Referenzen auf DHCP Service Objekt an neuen DN
-function adjust_dhcpservice_dn ($newdhcpserviceDN,$dhcpserviceDN){
-
- global $ds, $suffix, $auDN, $ldapError;
-
- $filter = "(&(|(objectClass=dhcpSubnet)(objectclass=dhcpHost))(dhcphlpcont=$dhcpserviceDN))";
- if(!($result = uniLdapSearch($ds, "ou=RIPM,".$suffix, $filter, array("dn"), "dn", "sub", 0, 0))) {
- # redirect(5, "", $ldapError, FALSE);
- echo "no search";
- die;
- }
- $result = ldapArraySauber($result);
- $modentry ['dhcphlpcont'] = $newdhcpserviceDN;
- foreach ($result as $item){
- ldap_mod_replace($ds, $item['dn'], $modentry);
- }
-
-}
-
-
-
-function alternative_dhcpobjects($objecttype,$objectDN,$ip){
-
- global $ds, $suffix, $auDN, $assocdom, $ldapError;
-
- $alt_dhcp = array();
- $expip = explode('.',$ip);
- $subnetDN = "";
-
- /*if ($objecttype == "subnet"){
- # alternative DHCP Dienstobjekte eigene AU/übergeordnete AUs
- $servarray = alternative_dhcpservices("");
- #print_r($servarray); echo "<br>";
- if (count($servarray) != 0){
- for ($i=0; $i < count($servarray); $i++){
- $alt_dhcp[] = $servarray[$i];
- }
- }
- if ($ip == ""){
- # alternative DHCP Subnetzobjekte eigene AU/übergeordnete AUs hinzufügen
- $subarray = alternative_dhcpsubnets($objectDN);
- #print_r($subarray);
- if (count($subarray) != 0){
- for ($i=0; $i < count($subarray); $i++){
- $alt_dhcp[] = $subarray[$i];
- }
- }
- }
- }*/
-
- if ($objecttype == "service"){
- # alternative DHCP Dienstobjekte eigene AU/übergeordnete AUs
- $servarray = alternative_dhcpservices($objectDN);
- #print_r($servarray); echo "<br>";
- if (count($servarray) != 0){
- for ($i=0; $i < count($servarray); $i++){
- $alt_dhcp[] = $servarray[$i];
- }
- }
- /*# Subnetz entsprechend IP
- $subarray = alternative_dhcpsubnets($objectDN);
- #print_r($subarray);
- if (count($subarray) != 0){
- for ($i=0; $i < count($subarray); $i++){
- $expsub = explode('.', $subarray[$i]['cn']);
- if ($expip[0] == $expsub[0] && $expip[1] == $expsub[1] && $expip[2] == $expsub[2]){
- $alt_dhcp[] = $subarray[$i];
- $subnetDN = $subarray[$i]['dn'];
- break;
- }
- }
- }
- # falls keine IP weitere Subnetze hinzufügen
- #print_r($subarray);
- if ( $ip == "" && count($subarray) != 0 ){
- for ($i=0; $i < count($subarray); $i++){
- if ($subnetDN != $subarray[$i]['dn']){
- $alt_dhcp[] = $subarray[$i];
- }
- }
- }*/
- }
-
- if ($objecttype == "nodhcp"){
- # alternative DHCP Dienstobjekte eigene AU/übergeordnete AUs
- $servarray = alternative_dhcpservices("");
- #print_r($servarray); echo "<br>";
- if (count($servarray) != 0){
- for ($i=0; $i < count($servarray); $i++){
- $alt_dhcp[] = $servarray[$i];
- }
- }
- /*# Subnetz entsprechend IP
- $subarray = alternative_dhcpsubnets($objectDN);
- #print_r($subarray);
- if (count($subarray) != 0){
- for ($i=0; $i < count($subarray); $i++){
- $expsub = explode('.', $subarray[$i]['cn']);
- if ($expip[0] == $expsub[0] && $expip[1] == $expsub[1] && $expip[2] == $expsub[2]){
- $alt_dhcp[] = $subarray[$i];
- $subnetDN = $subarray[$i]['dn'];
- break;
- }
- }
- }
- # falls keine IP weitere Subnetze hinzufügen
- #print_r($subarray); echo "<br>";print_r($subnetDN);
- if ( $ip == "" && count($subarray) != 0 ){
- for ($i=0; $i < count($subarray); $i++){
- if ($subnetDN != $subarray[$i]['dn']){
- $alt_dhcp[] = $subarray[$i];
- }
- }
- }*/
- }
- #echo "<br>";print_r($alt_dhcp);
- return $alt_dhcp;
-}
-
-
-###############################################################################
-# Funktionen zur Verwaltung von DHCP Subnet Objekten
-#
-
-function add_dhcpsubnet ($cn,$dhcpservice,$netmask,$atts){
-
- global $ds, $suffix, $auDN, $ldapError;
-
- $subnet = implode('_',array($cn,$cn));
-
- # IP checken und FIBS anpassen
- $fipb_array = get_freeipblocks_au($auDN);
-
- for ($i=0; $i < count($fipb_array); $i++){
- if ( split_iprange($subnet,$fipb_array[$i]) != 0 ){
- $ipranges = split_iprange($subnet,$fipb_array[$i]);
- array_splice($fipb_array, $i, 1, $ipranges);
- break;
- }
- }
-
- if ($i < count($fipb_array) ){
- # ldap_mod_replace -> Array fipb_array aktualisiert die FIPB in AU mit $auDN
- foreach ( $fipb_array as $item ){
- $entry ['FreeIPBlock'][] = $item;
- }
-
- $results = ldap_mod_replace($ds,$auDN,$entry);
- if ($results){
- echo "<br>Neue FIPBs erfolgreich eingetragen!<br>" ;
-
- $dhcpsubnetDN = "cn=".$cn.",cn=dhcp,".$auDN;
-
- $entrydhcp ['objectclass'][0] = "dhcpSubnet";
- $entrydhcp ['objectclass'][1] = "dhcpOptions";
- $entrydhcp ['objectclass'][2] = "top";
- $entrydhcp ['cn'] = $cn;
- $entrydhcp ['dhcpoptnetmask'] = $netmask;
- if ( $dhcpservice != "none" ){
- $entrydhcp ['dhcphlpcont'] = $dhcpservice;
- }
- # weitere Attribute
- foreach (array_keys($atts) as $key){
- if ($atts[$key] != ""){
- $entrydhcp[$key] = $atts[$key];
- }
- }
- print_r($entrydhcp); echo "<br>";
- print_r($dhcpsubnetDN); echo "<br>";
-
- if ($result = ldap_add($ds, $dhcpsubnetDN, $entrydhcp)){
- printf("Subnet <b>%s / %s</b> erfolgreich eingetragen",$cn,$netmask);
- update_dhcpmtime(array());
- return 1;
- #if ( check_ip_in_subnet($range1,$cn) && check_ip_in_subnet($range2,$cn)){
- # $dhcprange = implode('_',array($range1,$range2));
- # if ( $range = new_ip_dhcprange($dhcprange,$dhcpsubnetDN,$auDN) ){
- # echo "DHCP Range <b>".$range1." - ".$range2."</b> erfolgreich im Subnetobjekt eingetragen";
- # }else{
- # echo "DHCP Range <b>".$range1." - ".$range2."</b> konnte nicht im Subnetobjekt eingetragen werden!";
- # }
- # return 1;
- #}else{
- # echo "DHCP Range nicht in Subnetz ".$cn." enthalten.<br>Keine DHCP Range angelegt.<br>";
- # return 1;
- #}
- }else{
- echo "<br>Fehler beim anlegen des DHCP Subnet Objekts!<br>";
- return 0;
- }
- }else{
- echo "<br>Fehler beim eintragen der FIPBs!<br>";
- return 0;
- }
- }
- else{
- printf("<br>Subnet %s nicht im verfuegbaren IP Bereich!<br>", $subnet );
- return 0;
- }
-
-}
-
-function delete_dhcpsubnet($subnetDN,$cn){
-
- global $ds, $suffix, $auDN, $ldapError;
-
- delete_ip_dhcprange($subnetDN,$auDN);
- if ( dive_into_tree_del($subnetDN,"") ){
- cleanup_del_dhcpsubnet($subnetDN);
- $oldsubnetip = implode("_",array($cn,$cn));
- $entry ['FreeIPBlock'] = $oldsubnetip;
- $results = ldap_mod_add($ds,$auDN,$entry);
- if ($results){
- merge_ipranges($auDN);
- update_dhcpmtime(array());
- return 1;
- }else{
- return 0;
- }
- }else{
- return 0;
- }
-
-}
-
-function modify_subnet_dn($subnetDN,$newsubnetDN){
-
- global $ds, $suffix, $auDN, $ldapError;
-
- # check IP-Net-Syntax ...
-
- # Subnet CNs (IP) in internes Range ".._.." Format bringen
- $newcn = ldap_explode_dn($newsubnetDN,1);
- $newcnarray = array($newcn[0],$newcn[0]);
- $newsubnetip = implode("_",$newcnarray);
- $oldcn = ldap_explode_dn($subnetDN,1);
- $oldcnarray = array($oldcn[0],$oldcn[0]);
- $oldsubnetip = implode("_",$oldcnarray);
-
- # IP checken und FIBS anpassen
- $fipb_array = get_freeipblocks_au($auDN);
- for ($i=0; $i < count($fipb_array); $i++){
- if ( split_iprange($newsubnetip,$fipb_array[$i]) != 0 ){
- $ipranges = split_iprange($newsubnetip,$fipb_array[$i]);
- array_splice($fipb_array, $i, 1, $ipranges);
- break;
- }
- }
-
- if ($i < count($fipb_array) ){
-
- # zunächst alte DHCP Ranges löschen
- delete_ip_dhcprange($subnetDN,$auDN);
- # Move Subtree
- if(move_subtree($subnetDN, $newsubnetDN)){
- adjust_dhcpsubnet_dn($newsubnetDN, $subnetDN);
- printf("<br>Subnet Name (IP) erfolgreich von %s zu %s ge&auml;ndert!<br>", $oldcn[0], $newcn[0]);
- # neue Subnetz-IP aus FIPBs entfernen
- foreach ( $fipb_array as $item ){
- $entry ['FreeIPBlock'][] = $item;
- }
- # alte Subnetz-IP in FIPBs integrieren
- $entry ['FreeIPBlock'][] = $oldsubnetip;
- $results = ldap_mod_replace($ds,$auDN,$entry);
- if ($results){
- merge_ipranges($auDN);
- update_dhcpmtime(array());
- echo "<br>FIPBs erfolgreich angepasst!<br>" ;
- return 1;
- }else{
- echo "<br>Fehler beim Anpassen der FIPBs!<br>" ;
- }
- }else{
- echo "<br>Fehler beim &auml;ndern des Subnet Namens (IP)!<br>" ;
- }
- }else{
- printf("<br>Neues Subnet %s nicht im verfuegbaren IP Bereich!<br>", $newcn[0] );
- return 0;
- }
-}
-
-# wird eigentlich nicht benötigt wenn host deklarationen nicht in subnet scope sind ...
-function cleanup_del_dhcpsubnet ($dhcpsubnetDN){
-
- global $ds, $suffix, $auDN, $ldapError;
-
- $filter = "(&(objectclass=dhcpHost)(dhcphlpcont=$dhcpsubnetDN))";
- if(!($result = uniLdapSearch($ds, "ou=RIPM,".$suffix, $filter, array("dn"), "dn", "sub", 0, 0))) {
- # redirect(5, "", $ldapError, FALSE);
- echo "no search";
- die;
- }
- $result = ldapArraySauber($result);
- $delentry ['dhcphlpcont'] = $dhcpsubnetDN;
- foreach ($result as $item){
- ldap_mod_del($ds, $item['dn'], $delentry);
- }
-}
-
-
-# wird eigentlich nicht benötigt wenn host deklarationen nicht in subnet scope sind ...
-function adjust_dhcpsubnet_dn ($newdhcpsubnetDN,$dhcpsubnetDN){
-
- global $ds, $suffix, $auDN, $ldapError;
-
- $filter = "(&(objectclass=dhcpHost)(dhcphlpcont=$dhcpsubnetDN))";
- if(!($result = uniLdapSearch($ds, "ou=RIPM,".$suffix, $filter, array("dn"), "dn", "sub", 0, 0))) {
- # redirect(5, "", $ldapError, FALSE);
- echo "no search";
- die;
- }
- $result = ldapArraySauber($result);
- $modentry ['dhcphlpcont'] = $newdhcpsubnetDN;
- foreach ($result as $item){
- ldap_mod_replace($ds, $item['dn'], $modentry);
- }
-}
-
-
-# Nach Änderung der Host IP Adresse, überprüfen ob neue IP noch mit Subnet übereinstimmt
-# Falls keine Übereinstimmung mehr, dann Subnetzuordnung aus Host löschen.
-# wird eigentlich nicht benötigt wenn host deklarationen nicht in subnet scope sind ...
-function adjust_hostip_dhcpsubnet($ip,$hostDN,$dhcphlpcont) {
-
- global $ds, $suffix, $auDN, $ldapError;
-
- $subnet = ldap_explode_dn($dhcphlpcont, 1);
- $expsub = explode('.', $subnet[0]);
- print_r($expsub); echo "<br>";
- $expip = explode('.', $ip);
- print_r($expsip); echo "<br>";
- if ($expip[0] != $expsub[0] || $expip[1] != $expsub[1] || $expip[2] != $expsub[2]){
- $entrydhcp ['dhcphlpcont'] = array();
- ldap_mod_del($ds,$hostDN,$entrydhcp);
- echo "Host mit neuer IP <b>".$ip."</b> wurde aus DHCP Subnet <b>".$subnet[0]."</b> entfernt<br><br>";
- }
-}
-
-function check_ip_in_subnet($ip,$subnet) {
-
- global $ds, $suffix, $auDN, $ldapError;
- $ipchunks = explode('.',$ip);
- $netchunks = explode('.',$subnet);
- $return = 0;
- for ($i=1; $i<4; $i++){
- if ( $netchunks[$i] == "0" ){
- if ( $ipchunks[$i-1] == $netchunks[$i-1] ){
- $return = 1;
- }
- break;
- }
- }
- if ($return) { return 1; }else{ return 0; }
-}
-
-#########################
-# Pools
-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;
- }
- $result = ldapArraySauber($result);
-
- $dhcpcn_array = array();
- foreach ($result as $item){
- $dhcpcn_array [] = $item['cn'];
- }
- print_r($dhcpcn_array);echo "<br><br>";
- for ($i=0;$i<100;$i++){
- if ( array_search ( "Pool".$i, $dhcpcn_array ) === false ){
- $cn = "Pool".$i;
- break;
- }
- }
- $dhcppoolDN = "cn=".$cn.",cn=dhcp,".$auDN;
-
- $entrydhcp ['objectclass'][0] = "dhcpPool";
- $entrydhcp ['objectclass'][1] = "dhcpOptions";
- $entrydhcp ['objectclass'][2] = "top";
- $entrydhcp ['cn'] = $cn;
- $entrydhcp ['dhcphlpcont'] = $dhcpsubnetdn;
- $entrydhcp ['dhcprange'] = $range;
- if ($unknownclients == "allow"){
- $entrydhcp ['dhcpoptallow'] = "unknown-clients";
- }elseif ($unknownclients == "ignore"){
- $entrydhcp ['dhcpoptignore'] = "unknown-clients";
- }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;}
-
-}
-
-
-?> \ No newline at end of file