From c7b4e4a81d7f38c0f1f927f6804ef281c4f67dcd Mon Sep 17 00:00:00 2001
From: Tarik Gasmi
Date: Tue, 31 Jul 2007 07:29:53 +0000
Subject: Actualized LDAP SiteManagement Code - Web Interface, DHCP
Generationscript
git-svn-id: http://svn.openslx.org/svn/openslx/trunk@1284 95ad53e4-c205-0410-b2fa-d234c58c8868
---
.../webinterface/lib/dhcp_management_functions.php | 107 +++++++++++++++++----
1 file changed, 90 insertions(+), 17 deletions(-)
(limited to 'ldap-site-mngmt/webinterface/lib/dhcp_management_functions.php')
diff --git a/ldap-site-mngmt/webinterface/lib/dhcp_management_functions.php b/ldap-site-mngmt/webinterface/lib/dhcp_management_functions.php
index 4194a1b3..fd939369 100644
--- a/ldap-site-mngmt/webinterface/lib/dhcp_management_functions.php
+++ b/ldap-site-mngmt/webinterface/lib/dhcp_management_functions.php
@@ -18,6 +18,22 @@ $ldapError = null;
###################################################################################################
+# immer wenn ein DHCP Objekt geändert wird (DHCP modify time aktualisieren)
+function update_dhcpmtime(){
+
+ global $ds, $auDN, $ldapError;
+
+ $entry ['dhcpmtime'] = time();
+ $results = ldap_mod_replace($ds,$auDN,$entry);
+ if ($results){
+ echo "
dhcpMTime erfolgreich aktualisiert!
" ;
+ return 1;
+ }else{
+ echo "
Fehler beim Aktualisieren der dhcpMTime!
" ;
+ }
+}
+
+
# freie x.x.x.0/24 Netzwerke einer AU holen
function get_networks(){
@@ -397,12 +413,11 @@ function alternative_dhcpobjects($objecttype,$objectDN,$ip){
# Funktionen zur Verwaltung von DHCP Subnet Objekten
#
-function add_dhcpsubnet ($cn,$dhcpservice,$netmask,$range1,$range2,$atts){
+function add_dhcpsubnet ($cn,$dhcpservice,$netmask,$atts){
global $ds, $suffix, $auDN, $ldapError;
- $cnarray = array($cn,$cn);
- $subnet = implode('_',$cnarray);
+ $subnet = implode('_',array($cn,$cn));
# IP checken und FIBS anpassen
$fipb_array = get_freeipblocks_au($auDN);
@@ -445,18 +460,21 @@ function add_dhcpsubnet ($cn,$dhcpservice,$netmask,$range1,$range2,$atts){
print_r($dhcpsubnetDN); echo "
";
if ($result = ldap_add($ds, $dhcpsubnetDN, $entrydhcp)){
- 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 ".$range1." - ".$range2." erfolgreich im Subnetobjekt eingetragen";
- }else{
- echo "DHCP Range ".$range1." - ".$range2." konnte nicht im Subnetobjekt eingetragen werden!";
- }
- return 1;
- }else{
- echo "DHCP Range nicht in Subnetz ".$cn." enthalten.
Keine DHCP Range angelegt.
";
- return 1;
- }
+ printf("Subnet %s / %s erfolgreich eingetragen",$cn,$netmask);
+ return 1;
+ update_dhcpmtime();
+ #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 ".$range1." - ".$range2." erfolgreich im Subnetobjekt eingetragen";
+ # }else{
+ # echo "DHCP Range ".$range1." - ".$range2." konnte nicht im Subnetobjekt eingetragen werden!";
+ # }
+ # return 1;
+ #}else{
+ # echo "DHCP Range nicht in Subnetz ".$cn." enthalten.
Keine DHCP Range angelegt.
";
+ # return 1;
+ #}
}else{
echo "
Fehler beim anlegen des DHCP Subnet Objekts!
";
return 0;
@@ -485,6 +503,7 @@ function delete_dhcpsubnet($subnetDN,$cn){
$results = ldap_mod_add($ds,$auDN,$entry);
if ($results){
merge_ipranges($auDN);
+ update_dhcpmtime();
return 1;
}else{
return 0;
@@ -536,6 +555,7 @@ function modify_subnet_dn($subnetDN,$newsubnetDN){
$results = ldap_mod_replace($ds,$auDN,$entry);
if ($results){
merge_ipranges($auDN);
+ update_dhcpmtime();
echo "
FIPBs erfolgreich angepasst!
" ;
return 1;
}else{
@@ -550,7 +570,7 @@ function modify_subnet_dn($subnetDN,$newsubnetDN){
}
}
-
+# wird eigentlich nicht benötigt wenn host deklarationen nicht in subnet scope sind ...
function cleanup_del_dhcpsubnet ($dhcpsubnetDN){
global $ds, $suffix, $auDN, $ldapError;
@@ -569,7 +589,7 @@ function cleanup_del_dhcpsubnet ($dhcpsubnetDN){
}
-
+# wird eigentlich nicht benötigt wenn host deklarationen nicht in subnet scope sind ...
function adjust_dhcpsubnet_dn ($newdhcpsubnetDN,$dhcpsubnetDN){
global $ds, $suffix, $auDN, $ldapError;
@@ -590,6 +610,7 @@ function adjust_dhcpsubnet_dn ($newdhcpsubnetDN,$dhcpsubnetDN){
# 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;
@@ -622,4 +643,56 @@ function check_ip_in_subnet($ip,$subnet) {
}
if ($return) { return 1; }else{ return 0; }
}
+
+#########################
+# Pools
+function add_dhcppool ($dhcpsubnetdn,$range,$unknownclients,$dhcpservicedn){
+
+ 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 "
";
+ 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";
+ }
+
+ print_r($dhcppoolDN);echo "
";
+ print_r($entrydhcp);echo "
";
+
+ if ($result = ldap_add($ds,$dhcppoolDN,$entrydhcp)){
+ return 1;
+ }else{return 0;}
+
+
+}
+
+
?>
\ No newline at end of file
--
cgit v1.2.3-55-g7522