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.php244
-rw-r--r--ldap-site-mngmt/webinterface/lib/commonlib.inc.php20
-rw-r--r--ldap-site-mngmt/webinterface/lib/config.inc.php7
-rw-r--r--ldap-site-mngmt/webinterface/lib/host_management_functions.php8
-rw-r--r--ldap-site-mngmt/webinterface/lib/ip_management_functions.php376
-rw-r--r--ldap-site-mngmt/webinterface/lib/ldap.inc.php4
-rw-r--r--ldap-site-mngmt/webinterface/lib/syntax_check.php34
7 files changed, 421 insertions, 272 deletions
diff --git a/ldap-site-mngmt/webinterface/lib/au_management_functions.php b/ldap-site-mngmt/webinterface/lib/au_management_functions.php
index 0f725198..35881fec 100644
--- a/ldap-site-mngmt/webinterface/lib/au_management_functions.php
+++ b/ldap-site-mngmt/webinterface/lib/au_management_functions.php
@@ -68,12 +68,12 @@ function new_childau($childDN,$childou,$childcn,$childdesc,$mainadmin){
$entryMA ['cn'] = "MainAdmin";
$entryMA ['member'] = $mainadmin;
if ($resultMA = ldap_add($ds,"cn=MainAdmin,cn=roles,".$childDN,$entryMA)){
- $admins = array("HostAdmin","DhcpAdmin","ZoneAdmin");
- foreach ($admins as $admin){
- $entryAdmin ['objectclass'] = "Admins";
- $entryAdmin ['cn'] = $admin;
- ldap_add($ds,"cn=".$admin.",cn=roles,".$childDN,$entryAdmin);
- }
+ #$admins = array("HostAdmin","DhcpAdmin","ZoneAdmin");
+ #foreach ($admins as $admin){
+ # $entryAdmin ['objectclass'] = "Admins";
+ # $entryAdmin ['cn'] = $admin;
+ # ldap_add($ds,"cn=".$admin.",cn=roles,".$childDN,$entryAdmin);
+ #}
return 1;
}
else{
@@ -124,6 +124,8 @@ function delete_childau($childDN,$childou,$delmodus){
# ChildAU-Rollen unterhalb dc-Knoten löschen (nur diese)(oder übernehmen: MA zu HA, HA zu HA)
$roles = get_roles($childDN);
#print_r($roles); echo "<br>";
+
+ # was ist wenn rollen nur noch ein member haben ... fehler
if(count($roles['MainAdmin']) != 0){
$mainadmins = $roles['MainAdmin'];
for ($i=0; $i<count($mainadmins); $i++){
@@ -281,14 +283,16 @@ function new_child_domain($childdomain, $childDN, $assocdom, $domDN){
#print_r($entryRoleHost); echo "<br>";
$resultMA = ldap_mod_add($ds,"cn=MainAdmin,cn=roles,".$domDN,$entryRoleMain);
}
- if(count($roles['HostAdmin']) != 0){
- $hostadmins = $roles['HostAdmin'];
- for ($i=0; $i<count($hostadmins); $i++){
- $entryRoleHost ['member'][$i] = $hostadmins[$i];
- }
- #print_r($entryRoleHost); echo "<br>";
- $resultHA = ldap_mod_add($ds,"cn=HostAdmin,cn=roles,".$domDN,$entryRoleHost);
- }
+ #if(count($roles['HostAdmin']) != 0){
+ # $dnsroles = get_roles($domDN);
+ # ...
+ # $hostadmins = $roles['HostAdmin'];
+ # for ($i=0; $i<count($hostadmins); $i++){
+ # $entryRoleHost ['member'][$i] = $hostadmins[$i];
+ # }
+ # #print_r($entryRoleHost); echo "<br>";
+ # $resultHA = ldap_mod_add($ds,"cn=HostAdmin,cn=roles,".$domDN,$entryRoleHost);
+ #}
# Domainname zu associatedDomain der ChildAU
$entryAD['objectclass'] = "domainRelatedObject";
$entryAD['associateddomain'] = $assocdom;
@@ -348,20 +352,20 @@ function new_child_domain($childdomain, $childDN, $assocdom, $domDN){
#print_r($entryRoleMain); echo "<br>";
$resultMA = ldap_add($ds,"cn=MainAdmin,cn=roles,".$dcDN,$entryRoleMain);
- $entryRoleHost ['objectclass'] = "Admins";
- $entryRoleHost ['cn'] = "HostAdmin";
if(count($roles['HostAdmin']) != 0){
+ $entryRoleHost ['objectclass'] = "groupOfNames";
+ $entryRoleHost ['cn'] = "HostAdmin";
$hostadmins = $roles['HostAdmin'];
for ($i=0; $i<count($hostadmins); $i++){
$entryRoleHost ['member'][$i] = $hostadmins[$i];
}
#print_r($entryRoleHost); echo "<br>";
- }
- $resultHA = ldap_add($ds,"cn=HostAdmin,cn=roles,".$dcDN,$entryRoleHost);
+ $resultHA = ldap_add($ds,"cn=HostAdmin,cn=roles,".$dcDN,$entryRoleHost);
+ }
- $entryRoleZone ['objectclass'] = "Admins";
- $entryRoleZone ['cn'] = "ZoneAdmin";
- $resultZA = ldap_add($ds,"cn=ZoneAdmin,cn=roles,".$dcDN,$entryRoleZone);
+ #$entryRoleZone ['objectclass'] = "Admins";
+ #$entryRoleZone ['cn'] = "ZoneAdmin";
+ #$resultZA = ldap_add($ds,"cn=ZoneAdmin,cn=roles,".$dcDN,$entryRoleZone);
if ($resultMA){$resultsum = true;}
}
@@ -431,7 +435,7 @@ function change_child_domain($childdomain, $oldchilddomain, $childDN, $assocdom,
#print_r($entryAN); echo "<br>";
$result = ldap_mod_del($ds,$domDN,$entryAN);
- # Eigene Rollen aus dc-Knoten enrfernen
+ # Eigene Rollen aus dc-Knoten entfernen
$roles = get_roles($childDN);
if(count($roles['MainAdmin']) != 0){
$mainadmins = $roles['MainAdmin'];
@@ -976,9 +980,12 @@ function new_role_member($userDN,$role,$auDN,$domDN){
global $ds, $suffix, $ldapError;
+ $actroles = get_roles($auDN);
+
$entry['member'] = $userDN;
if ($domDN != ""){
+ $actdnsroles = get_roles_dns($domDN);
switch ($role){
case 'MainAdmin':
$roleDN1 = "cn=".$role.",cn=roles,".$auDN;
@@ -993,10 +1000,18 @@ function new_role_member($userDN,$role,$auDN,$domDN){
break;
case 'HostAdmin':
$roleDN1 = "cn=".$role.",cn=roles,".$auDN;
- $roleDN2 = "cn=".$role.",cn=roles,".$domDN;
- $results1 = ldap_mod_add($ds,$roleDN1,$entry);
- $results2 = ldap_mod_add($ds,$roleDN2,$entry);
- if ($results1 && $results2){
+ #$roleDN2 = "cn=".$role.",cn=roles,".$domDN;
+ if ( count($actroles['HostAdmin']) != 0 ){
+ $results1 = ldap_mod_add($ds,$roleDN1,$entry);
+ #$results2 = ldap_mod_add($ds,$roleDN2,$entry);
+ }else{
+ $entrynew ['objectclass'] = "groupOfNames";
+ $entrynew ['cn'] = $role;
+ $entrynew ['member'] = $userDN;
+ $results1 = ldap_add($ds,$roleDN1,$entrynew);
+ #$results2 = ldap_add($ds,$roleDN2,$entryHA);
+ }
+ if ($results1){ #&& $results2){
return 1;
}else{
return 0;
@@ -1004,7 +1019,30 @@ function new_role_member($userDN,$role,$auDN,$domDN){
break;
case 'DhcpAdmin':
$roleDN = "cn=".$role.",cn=roles,".$auDN;
- $results = ldap_mod_add($ds,$roleDN,$entry);
+ if ( count($actroles['DhcpAdmin']) != 0 ){
+ $results = ldap_mod_add($ds,$roleDN,$entry);
+ }else{
+ $entrynew ['objectclass'] = "groupOfNames";
+ $entrynew ['cn'] = $role;
+ $entrynew ['member'] = $userDN;
+ $results = ldap_add($ds,$roleDN,$entrynew);
+ }
+ if ($results){
+ return 1;
+ }else{
+ return 0;
+ }
+ break;
+ case 'RbsAdmin':
+ $roleDN = "cn=".$role.",cn=roles,".$auDN;
+ if ( count($actroles['RbsAdmin']) != 0 ){
+ $results = ldap_mod_add($ds,$roleDN,$entry);
+ }else{
+ $entrynew ['objectclass'] = "groupOfNames";
+ $entrynew ['cn'] = $role;
+ $entrynew ['member'] = $userDN;
+ $results = ldap_add($ds,$roleDN,$entrynew);
+ }
if ($results){
return 1;
}else{
@@ -1013,10 +1051,17 @@ function new_role_member($userDN,$role,$auDN,$domDN){
break;
case 'ZoneAdmin':
$roleDN1 = "cn=".$role.",cn=roles,".$auDN;
- $roleDN2 = "cn=".$role.",cn=roles,".$domDN;
- $results1 = ldap_mod_add($ds,$roleDN1,$entry);
- $results2 = ldap_mod_add($ds,$roleDN2,$entry);
- if ($results1 && $results2){
+ #$roleDN2 = "cn=".$role.",cn=roles,".$domDN;
+ if ( count($actroles['ZoneAdmin']) != 0 ){
+ $results1 = ldap_mod_add($ds,$roleDN1,$entry);
+ #$results2 = ldap_mod_add($ds,$roleDN2,$entry);
+ }else{
+ $entrynew ['objectclass'] = "groupOfNames";
+ $entrynew ['cn'] = $role;
+ $entrynew ['member'] = $userDN;
+ $results = ldap_add($ds,$roleDN1,$entrynew);
+ }
+ if ($results1){ #&& $results2){
return 1;
}else{
return 0;
@@ -1036,7 +1081,14 @@ function new_role_member($userDN,$role,$auDN,$domDN){
break;
case 'HostAdmin':
$roleDN = "cn=".$role.",cn=roles,".$auDN;
- $results = ldap_mod_add($ds,$roleDN,$entry);
+ if ( count($actroles['HostAdmin']) != 0 ){
+ $results = ldap_mod_add($ds,$roleDN,$entry);
+ }else{
+ $entrynew ['objectclass'] = "groupOfNames";
+ $entrynew ['cn'] = $role;
+ $entrynew ['member'] = $userDN;
+ $results = ldap_add($ds,$roleDN,$entrynew);
+ }
if ($results){
return 1;
}else{
@@ -1045,7 +1097,30 @@ function new_role_member($userDN,$role,$auDN,$domDN){
break;
case 'DhcpAdmin':
$roleDN = "cn=".$role.",cn=roles,".$auDN;
- $results = ldap_mod_add($ds,$roleDN,$entry);
+ if ( count($actroles['DhcpAdmin']) != 0 ){
+ $results = ldap_mod_add($ds,$roleDN,$entry);
+ }else{
+ $entrynew ['objectclass'] = "groupOfNames";
+ $entrynew ['cn'] = $role;
+ $entrynew ['member'] = $userDN;
+ $results = ldap_add($ds,$roleDN,$entrynew);
+ }
+ if ($results){
+ return 1;
+ }else{
+ return 0;
+ }
+ break;
+ case 'RbsAdmin':
+ $roleDN = "cn=".$role.",cn=roles,".$auDN;
+ if ( count($actroles['RbsAdmin']) != 0 ){
+ $results = ldap_mod_add($ds,$roleDN,$entry);
+ }else{
+ $entrynew ['objectclass'] = "groupOfNames";
+ $entrynew ['cn'] = $role;
+ $entrynew ['member'] = $userDN;
+ $results = ldap_add($ds,$roleDN,$entrynew);
+ }
if ($results){
return 1;
}else{
@@ -1054,7 +1129,14 @@ function new_role_member($userDN,$role,$auDN,$domDN){
break;
case 'ZoneAdmin':
$roleDN = "cn=".$role.",cn=roles,".$auDN;
- $results = ldap_mod_add($ds,$roleDN,$entry);
+ if ( count($actroles['ZoneAdmin']) != 0 ){
+ $results = ldap_mod_add($ds,$roleDN,$entry);
+ }else{
+ $entrynew ['objectclass'] = "groupOfNames";
+ $entrynew ['cn'] = $role;
+ $entrynew ['member'] = $userDN;
+ $results = ldap_add($ds,$roleDN,$entrynew);
+ }
if ($results){
return 1;
}else{
@@ -1070,15 +1152,24 @@ function delete_role_member($userDN,$role,$auDN,$domDN){
global $ds, $suffix, $ldapError;
+ $actroles = get_roles($auDN);
+
$entry['member'] = $userDN;
if ($domDN != ""){
+ $actdnsroles = get_roles_dns($domDN);
+
switch ($role){
case 'MainAdmin':
$roleDN1 = "cn=".$role.",cn=roles,".$auDN;
$roleDN2 = "cn=".$role.",cn=roles,".$domDN;
- $results1 = ldap_mod_del($ds,$roleDN1,$entry);
- $results2 = ldap_mod_del($ds,$roleDN2,$entry);
+ if ( count($actroles['MainAdmin']) == 1 || count($actdnsroles['MainAdmin']) == 1 ){
+ echo "Rolle <b>MainAdmin</b> muss mindestens ein Mitglied haben!<br>
+ <b>$userDN</b> wird nicht gel&ouml;scht.<br><br>";
+ }else{
+ $results1 = ldap_mod_del($ds,$roleDN1,$entry);
+ $results2 = ldap_mod_del($ds,$roleDN2,$entry);
+ }
if ($results1 && $results2){
return 1;
}else{
@@ -1087,10 +1178,14 @@ function delete_role_member($userDN,$role,$auDN,$domDN){
break;
case 'HostAdmin':
$roleDN1 = "cn=".$role.",cn=roles,".$auDN;
- $roleDN2 = "cn=".$role.",cn=roles,".$domDN;
- $results1 = ldap_mod_del($ds,$roleDN1,$entry);
- $results2 = ldap_mod_del($ds,$roleDN2,$entry);
- if ($results1 && $results2){
+ #$roleDN2 = "cn=".$role.",cn=roles,".$domDN;
+ if ( count($actroles['HostAdmin']) == 1 ){
+ $results1 = ldap_delete($ds,$roleDN1);
+ }else{
+ $results1 = ldap_mod_del($ds,$roleDN1,$entry);
+ }
+ #$results2 = ldap_mod_del($ds,$roleDN2,$entry);
+ if ($results1){ #&& $results2){
return 1;
}else{
return 0;
@@ -1098,7 +1193,24 @@ function delete_role_member($userDN,$role,$auDN,$domDN){
break;
case 'DhcpAdmin':
$roleDN = "cn=".$role.",cn=roles,".$auDN;
- $results = ldap_mod_del($ds,$roleDN,$entry);
+ if ( count($actroles['DhcpAdmin']) == 1 ){
+ $results = ldap_delete($ds,$roleDN);
+ }else{
+ $results = ldap_mod_del($ds,$roleDN,$entry);
+ }
+ if ($results){
+ return 1;
+ }else{
+ return 0;
+ }
+ break;
+ case 'RbsAdmin':
+ $roleDN = "cn=".$role.",cn=roles,".$auDN;
+ if ( count($actroles['RbsAdmin']) == 1 ){
+ $results = ldap_delete($ds,$roleDN);
+ }else{
+ $results = ldap_mod_del($ds,$roleDN,$entry);
+ }
if ($results){
return 1;
}else{
@@ -1107,10 +1219,14 @@ function delete_role_member($userDN,$role,$auDN,$domDN){
break;
case 'ZoneAdmin':
$roleDN1 = "cn=".$role.",cn=roles,".$auDN;
- $roleDN2 = "cn=".$role.",cn=roles,".$domDN;
- $results1 = ldap_mod_del($ds,$roleDN1,$entry);
- $results2 = ldap_mod_del($ds,$roleDN2,$entry);
- if ($results1 && $results2){
+ #$roleDN2 = "cn=".$role.",cn=roles,".$domDN;
+ if ( count($actroles['ZoneAdmin']) == 1 ){
+ $results1 = ldap_delete($ds,$roleDN1);
+ }else{
+ $results1 = ldap_mod_del($ds,$roleDN1,$entry);
+ }
+ #$results2 = ldap_mod_del($ds,$roleDN2,$entry);
+ if ($results1){ #&& $results2){
return 1;
}else{
return 0;
@@ -1121,7 +1237,12 @@ function delete_role_member($userDN,$role,$auDN,$domDN){
switch ($role){
case 'MainAdmin':
$roleDN = "cn=".$role.",cn=roles,".$auDN;
- $results = ldap_mod_del($ds,$roleDN,$entry);
+ if ( count($actroles['MainAdmin']) == 1 ){
+ echo "Rolle <b>MainAdmin</b> muss mindestens ein Mitglied haben!<br>
+ <b>$userDN</b> wird nicht gel&oumlscht.<br><br>";
+ }else{
+ $results = ldap_mod_del($ds,$roleDN,$entry);
+ }
if ($results){
return 1;
}else{
@@ -1130,7 +1251,11 @@ function delete_role_member($userDN,$role,$auDN,$domDN){
break;
case 'HostAdmin':
$roleDN = "cn=".$role.",cn=roles,".$auDN;
- $results = ldap_mod_del($ds,$roleDN,$entry);
+ if ( count($actroles['HostAdmin']) == 1 ){
+ $results = ldap_delete($ds,$roleDN);
+ }else{
+ $results = ldap_mod_del($ds,$roleDN,$entry);
+ }
if ($results){
return 1;
}else{
@@ -1139,7 +1264,24 @@ function delete_role_member($userDN,$role,$auDN,$domDN){
break;
case 'DhcpAdmin':
$roleDN = "cn=".$role.",cn=roles,".$auDN;
- $results = ldap_mod_del($ds,$roleDN,$entry);
+ if ( count($actroles['DhcpAdmin']) == 1 ){
+ $results = ldap_delete($ds,$roleDN);
+ }else{
+ $results = ldap_mod_del($ds,$roleDN,$entry);
+ }
+ if ($results){
+ return 1;
+ }else{
+ return 0;
+ }
+ break;
+ case 'RbsAdmin':
+ $roleDN = "cn=".$role.",cn=roles,".$auDN;
+ if ( count($actroles['RbsAdmin']) == 1 ){
+ $results = ldap_delete($ds,$roleDN);
+ }else{
+ $results = ldap_mod_del($ds,$roleDN,$entry);
+ }
if ($results){
return 1;
}else{
@@ -1148,7 +1290,11 @@ function delete_role_member($userDN,$role,$auDN,$domDN){
break;
case 'ZoneAdmin':
$roleDN = "cn=".$role.",cn=roles,".$auDN;
- $results = ldap_mod_del($ds,$roleDN,$entry);
+ if ( count($actroles['ZoneAdmin']) == 1 ){
+ $results = ldap_delete($ds,$roleDN);
+ }else{
+ $results = ldap_mod_del($ds,$roleDN,$entry);
+ }
if ($results){
return 1;
}else{
diff --git a/ldap-site-mngmt/webinterface/lib/commonlib.inc.php b/ldap-site-mngmt/webinterface/lib/commonlib.inc.php
index 7fb68395..e827c811 100644
--- a/ldap-site-mngmt/webinterface/lib/commonlib.inc.php
+++ b/ldap-site-mngmt/webinterface/lib/commonlib.inc.php
@@ -187,24 +187,24 @@ function createMainMenu($rollen , $mainnr) {
$mainmenu = array(array("link" => "au/au.php",
"text" => "AU Home",
"zugriff" => "alle"),
- array("link" => "roles/roles.php",
- "text" => "Admin Rollen",
- "zugriff" => array("MainAdmin")),
- array("link" => "ip/ip.php",
- "text" => "IP Management",
- "zugriff" => array("MainAdmin","HostAdmin","DhcpAdmin")),
+ #array("link" => "roles/roles.php",
+ # "text" => "Admin Rollen",
+ # "zugriff" => array("MainAdmin","DhcpAdmin")),
+ #array("link" => "ip/ip.php",
+ # "text" => "IP Management",
+ # "zugriff" => array("MainAdmin","HostAdmin","DhcpAdmin")),
array("link" => "computers/computers.php",
"text" => "Rechner",
"zugriff" => array("MainAdmin","HostAdmin","DhcpAdmin")),
- array("link" => "rbs/rbs.php",
- "text" => "RemoteBoot/PXE",
- "zugriff" => array("MainAdmin","HostAdmin")),
array("link" => $dhcplink,
"text" => "DHCP",
"zugriff" => array("MainAdmin","DhcpAdmin")),
+ array("link" => "rbs/rbs.php",
+ "text" => "RemoteBoot/PXE",
+ "zugriff" => array("MainAdmin","RbsAdmin")),
array("link" => "dns/dns.php",
"text" => "DNS",
- "zugriff" => array("MainAdmin","ZoneAdmin","HostAdmin")));
+ "zugriff" => array("MainAdmin","ZoneAdmin")));
# Zusammenstellen der Menuleiste
diff --git a/ldap-site-mngmt/webinterface/lib/config.inc.php b/ldap-site-mngmt/webinterface/lib/config.inc.php
index fe76a958..cc26d0fc 100644
--- a/ldap-site-mngmt/webinterface/lib/config.inc.php
+++ b/ldap-site-mngmt/webinterface/lib/config.inc.php
@@ -1,8 +1,7 @@
<?php
#Pfad festlegen wo die Anwendungsskripte sich befinden
- #$START_PATH="http://132.230.4.150/test/";
- #$START_PATH="https://132.230.9.56/lsm/";
+ #$START_PATH="http://localhost/lsm/";
$START_PATH="https://dhcp.uni-freiburg.de/";
# Anlegen einer Variablen für den Speicherort von den CSVs
@@ -19,8 +18,8 @@
$rootAU = "ou=UniFreiburg,ou=RIPM,dc=uni-freiburg,dc=de";
# der LDAP-Server für die Authentisierung der User
- #define('LDAP_HOST_RZ', '132.230.1.61');
- #define('LDAP_PORT_RZ', 636);
+ #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!!!
diff --git a/ldap-site-mngmt/webinterface/lib/host_management_functions.php b/ldap-site-mngmt/webinterface/lib/host_management_functions.php
index 8534371e..a45304bc 100644
--- a/ldap-site-mngmt/webinterface/lib/host_management_functions.php
+++ b/ldap-site-mngmt/webinterface/lib/host_management_functions.php
@@ -15,6 +15,7 @@
# Konfiguration laden
require_once("config.inc.php");
+
$ldapError = null;
###################################################################################################
@@ -66,6 +67,8 @@ function add_host($hostDN,$hostname,$hostdesc,$mac,$ip,$atts,$dhcp){
global $ds, $suffix, $auDN, $assocdom, $ldapError;
+ $syntax = new Syntaxcheck;
+
$entryhost ['objectclass'][0] = "Host";
$entryhost ['objectclass'][1] = "dhcpHost";
$entryhost ['objectclass'][2] = "dhcpOptions";
@@ -73,11 +76,13 @@ function add_host($hostDN,$hostname,$hostdesc,$mac,$ip,$atts,$dhcp){
$entryhost ["hostname"] = $hostname;
$entryhost ["domainname"] = $assocdom;
if ($hostdesc != ""){$entryhost ["description"] = $hostdesc;}
- if ($mac != ""){
+ if ($mac != "" && $syntax->check_mac_syntax($mac) ){
$entryhost ["hwaddress"] = $mac;
if ($dhcp != "none" && $dhcp != ""){
$entryhost ["dhcphlpcont"] = $dhcp;
}
+ }else{
+ echo "Keine MAC Adresse angelegt. Kein Eintrag im DHCP.<br>";
}
foreach (array_keys($atts) as $key){
if ($atts[$key] != ""){
@@ -89,7 +94,6 @@ function add_host($hostDN,$hostname,$hostdesc,$mac,$ip,$atts,$dhcp){
if ($result = ldap_add($ds, $hostDN, $entryhost)){
if($ip != ""){
- $syntax = new Syntaxcheck;
if( $syntax->check_ip_syntax($ip) ){
$newip_array = array($ip,$ip);
$newip = implode('_',$newip_array);
diff --git a/ldap-site-mngmt/webinterface/lib/ip_management_functions.php b/ldap-site-mngmt/webinterface/lib/ip_management_functions.php
index b158e35b..e5c30eca 100644
--- a/ldap-site-mngmt/webinterface/lib/ip_management_functions.php
+++ b/ldap-site-mngmt/webinterface/lib/ip_management_functions.php
@@ -455,13 +455,13 @@ function merge_ipranges($auDN)
}
}
}
- print_r($fipb_array);printf("<br>");
+ #print_r($fipb_array);printf("<br>");
foreach ( $fipb_array as $item ){
$entry ['FreeIPBlock'][] = $item;
}
$results = ldap_mod_replace($ds,$auDN,$entry);
- if ($results) echo "<br>FIPBs erfolgreich zusammengefasst!<br><br>" ;
- else echo "<br>Fehler beim eintragen der FIPBs!<br><br>";
+ if ($results) echo "FIPBs erfolgreich zusammengefasst!<br>" ;
+ else echo "Fehler beim eintragen der FIPBs!<br>";
$d = count($mipb_array);
for ($i=0; $i < $d; $i++){
@@ -475,13 +475,13 @@ function merge_ipranges($auDN)
}
}
}
- print_r($mipb_array);printf("<br>");
+ #print_r($mipb_array);printf("<br>");
foreach ( $mipb_array as $item ){
$entry2 ['MaxIPBlock'][] = $item;
}
$results = ldap_mod_replace($ds,$auDN,$entry2);
- if ($results) echo "<br>MIPBs erfolgreich zusammengefasst!<br><br>" ;
- else echo "<br>Fehler beim eintragen der MIPBs!<br><br>";
+ if ($results) echo "MIPBs erfolgreich zusammengefasst!<br>" ;
+ else echo "Fehler beim eintragen der MIPBs!<br>";
}
function merge_dhcpranges($dhcpobjectDN)
@@ -805,12 +805,16 @@ function delete_ip_dhcprange($dhcpobjectDN,$auDN)
*
* @author Tarik Gasmi
*/
-function modify_ip_host($ip,$hostDN,$auDN)
+function modify_ip_host($ip,$hostDN,$auDN,$fixadd)
{
global $ds, $suffix, $ldapError;
if ( delete_ip_host($hostDN,$auDN) ){
if ( new_ip_host($ip,$hostDN,$auDN) ){
+ if ( $fixadd != ""){
+ $fa_entry ['dhcpoptfixed-address'] = $fixadd;
+ ldap_mod_add($ds,$hostDN,$fa_entry);
+ }
echo "<br>IP Adresse erfolgeich geaendert!<br>";
return 1;
}else{
@@ -873,7 +877,7 @@ function new_ip_delegation($ip,$childauDN,$auDN)
global $ds, $suffix, $ldapError;
$fipb_array = get_freeipblocks_au($auDN);
- echo "<br>---<br>";print_r($fipb_array);echo "<br>---<br>";
+ #echo "<br>---<br>";print_r($fipb_array);echo "<br>---<br>";
for ($i=0; $i < count($fipb_array); $i++){
if ( split_iprange($ip,$fipb_array[$i]) != 0 ){
$ipranges = split_iprange($ip,$fipb_array[$i]);
@@ -895,13 +899,12 @@ function new_ip_delegation($ip,$childauDN,$auDN)
# ldap_mod_add -> IPAddress = $ip , in Host mit $hostDN
$mipbentry['MaxIPBlock'] = $ip;
$mipbentry['FreeIPBlock'] = $ip;
- print_r($mipbentry);
+ #print_r($mipbentry);
$results = ldap_mod_add($ds,$childauDN,$mipbentry);
if ($results){
echo "<br>IP Adressblock erfolgreich delegiert!<br>" ;
merge_ipranges($childauDN);
-
return 1;
}else{
echo "<br>Fehler beim eintragen der IP Adresse!<br>";
@@ -937,7 +940,7 @@ function delete_ip_delegation($oldmipb,$childauDN,$auDN)
# Durch Reduzierung zu loeschende IP Ranges (Array)
$delip[] = $oldmipb;
- print_r($delip);printf("<br><br>");
+ #print_r($delip);printf("<br><br>");
# Finde unter allen Child-AUs diejenigen, die von Reduzierung betroffene Child-Child-AUs haben
# Diese sind werden rekursiv abgearbeitet
@@ -964,39 +967,49 @@ function delete_ip_delegation($oldmipb,$childauDN,$auDN)
}
}
}
- print_r($cchild_todo);printf("<br><br>");
+ #print_r($cchild_todo);printf("<br><br>");
+ ###################
# Rekursionsaufruf (für jede Child-AU, die betroffene Child-Child-AU hat)
foreach ($cchild_todo as $item){
delete_ip_delegation($item['coldmipb'],$item['ccauDN'],$item['childauDN']);
}
+ ###################
# Ab hier: alles was bei jedem Fkt.Aufruf zu machen ist (in Ebene AU und Child-AU)
# in CAU Check ob RechnerIPs oder DhcpIPs betroffen:
$del_objects = objects_to_delete($delip,$childauDN,$cchild_array);
# print_r($del_objects);printf("<br><br>");
- printf("<br>Host IP Addresses that will be deleted: <br>");
- foreach ($del_objects['hostips'] as $item){
- printf("HostDN: %s &nbsp;&nbsp; IP Address: %s <br>",$item['dn'],$item['ip']);
- }
- printf("<br>Subnet IP Ranges that will be adjusted: <br>");
- foreach ($del_objects['dhcpranges'] as $item){
- printf("DhcpObjectDN: %s &nbsp;&nbsp; Zu loeschende IP Range: %s <br>",$item['dn'],$item['delrange']);
+ if ( count($del_objects['hostips']) != 0 ){
+ printf("<br>Host IP Addresses that will be deleted: <br>");
+ foreach ($del_objects['hostips'] as $item){
+ printf("HostDN: %s &nbsp;&nbsp; IP Address: %s <br>",$item['dn'],$item['ip']);
+ }
}
+ if ( count($del_objects['dhcpranges']) != 0 ){
+ printf("<br>Subnet IP Ranges that will be adjusted: <br>");
+ foreach ($del_objects['dhcpranges'] as $item){
+ printf("DhcpObjectDN: %s &nbsp;&nbsp; Zu loeschende IP Range: %s <br>",$item['dn'],$item['delrange']);
+ }
+ }
# hier kommte Abfrage ob wirklich Aenderung ausfuehren, ja dann weiter mit loeschen
# sonst Abbruch
- # momentan: einfach loeschen
- foreach ($del_objects['hostips'] as $item){
- delete_ip_host($item['dn'],$item['auDN']);
+ # momentan: einfach loeschen
+ if ( count($del_objects['hostips']) != 0 ){
+ foreach ($del_objects['hostips'] as $item){
+ delete_ip_host($item['dn'],$item['auDN']);
+ }
}
- foreach ($del_objects['dhcpranges'] as $item){
- delete_ip_dhcprange($item['dn'],$item['auDN']);
- }
+ if ( count($del_objects['dhcpranges']) != 0 ){
+ foreach ($del_objects['dhcpranges'] as $item){
+ delete_ip_dhcprange($item['dn'],$item['auDN']);
+ }
+ }
# in Child-AU: oldmipb loeschen
$mipb_array = get_maxipblocks_au($childauDN);
- print_r($mipb_array);printf("<br><br>");
+ #print_r($mipb_array);printf("<br><br>");
foreach ($delip as $delipitem){
# if ( count($mipb_array) > 1 ){
for ($i=0; $i < count($mipb_array); $i++){
@@ -1016,16 +1029,17 @@ function delete_ip_delegation($oldmipb,$childauDN,$auDN)
# for ($i=0; $i < count($mipb_array); $i++){
# if ($mipb_array[$i] == false){array_splice($mipb_array, $i, 1);}
# }
- print_r($mipb_array);printf("<br><br>");
+
+ #print_r($mipb_array);printf("<br><br>");
if (count($mipb_array) == 0){
$entry ['MaxIPBlock'] = array();
- print_r($entry);printf("<br><br>");
+ #print_r($entry);printf("<br><br>");
$results = ldap_mod_del($ds,$childauDN,$entry);
}else{
foreach ( $mipb_array as $item ){
$entry ['MaxIPBlock'][] = $item;
}
- print_r($entry);printf("<br><br>");
+ #print_r($entry);printf("<br><br>");
$results = ldap_mod_replace($ds,$childauDN,$entry);
}
@@ -1034,7 +1048,7 @@ function delete_ip_delegation($oldmipb,$childauDN,$auDN)
# in Child-AU: FIPBs anpassen
$fipb_array = get_freeipblocks_au($childauDN);
- print_r($fipb_array);printf("<br><br>");
+ #print_r($fipb_array);printf("<br><br>");
foreach ($delip as $delipitem){
# if ( count($fipb_array) > 1 ){
for ($i=0; $i < count($fipb_array); $i++){
@@ -1055,45 +1069,46 @@ function delete_ip_delegation($oldmipb,$childauDN,$auDN)
# for ($i=0; $i < count($fipb_array); $i++){
# if ($fipb_array[$i] == false){array_splice($fipb_array, $i, 1);}
# }
- print_r($fipb_array);printf("<br><br>");
+
+ #print_r($fipb_array);printf("<br><br>");
if (count($fipb_array) == 0){
$entry1 ['FreeIPBlock'] = array();
- print_r($entry1);printf("<br><br>");
+ #print_r($entry1);printf("<br><br>");
$results = ldap_mod_del($ds,$childauDN,$entry1);
}else{
foreach ( $fipb_array as $item ){
$entry1 ['FreeIPBlock'][] = $item;
}
- print_r($entry1);printf("<br><br>");
+ #print_r($entry1);printf("<br><br>");
$results = ldap_mod_replace($ds,$childauDN,$entry1);
}
if ($results){
- echo "<br>FIPBs in Child-AU erfolgreich geloescht!<br>" ;
+ echo "FIPBs in Child-AU erfolgreich geloescht!<br>" ;
# in AU: Geloeschte IP Bereiche als neue FIPBs aufnehmen
foreach ($delip as $item){
$entry2 ['FreeIPBlock'][] = $item;
}
- print_r($entry2);printf("<br><br>");
+ #print_r($entry2);printf("<br><br>");
$results = ldap_mod_add($ds,$auDN,$entry2);
if ($results){
- echo "<br>FIPBs in AU erfolgreich aktualisiert!<br>" ;
+ echo "FIPBs in AU erfolgreich aktualisiert!<br>" ;
# IP Bloecke aufraeumen in Child-AU und AU (Merging)
merge_ipranges($auDN);
merge_ipranges($childauDN);
return 1;
}else{
- echo "<br>Fehler beim aktualisieren!<br>";
+ echo "Fehler beim aktualisieren der FIPBs in AU!<br>";
return 0;
}
}else{
- echo "<br>Fehler beim loeschen!<br>";
+ echo "Fehler beim loeschen der FIPBs in Child-AU!<br>";
return 0;
}
}else{
- echo "<br>Fehler beim loeschen!<br>";
+ echo "<br>Fehler beim loeschen der MIPBs in Child-AU!<br>";
return 0;
}
}
@@ -1120,7 +1135,7 @@ function reduce_ip_delegation($oldmipb,$newmipb,$childauDN,$auDN)
# Durch Reduzierung zu loeschende IP Ranges (Array)
$delip = split_iprange($newmipb,$oldmipb);
- print_r($delip);printf("<br><br>");
+ #print_r($delip);printf("<br><br>");
# Finde unter allen Child-AUs diejenigen, die von Reduzierung betroffene Child-Child-AUs haben
# Diese sind werden rekursiv abgearbeitet
@@ -1149,9 +1164,9 @@ function reduce_ip_delegation($oldmipb,$newmipb,$childauDN,$auDN)
}
}
}
- print_r($cchild_todo);printf("<br><br>");
-
+ #print_r($cchild_todo);printf("<br><br>");
+ ######################
# Rekursionsaufruf (für jede Child-AU, die betroffene Child-Child-AU hat)
foreach ($cchild_todo as $item){
if ($item['cnewmipb'] == false ){
@@ -1161,6 +1176,7 @@ function reduce_ip_delegation($oldmipb,$newmipb,$childauDN,$auDN)
reduce_ip_delegation($item['coldmipb'],$item['cnewmipb'],$item['ccauDN'],$item['childauDN']);
}
}
+ ######################
# Ab hier: alles was bei jedem Fkt.Aufruf zu machen ist (auf Ebene AU und Child-AU)
@@ -1172,27 +1188,34 @@ function reduce_ip_delegation($oldmipb,$newmipb,$childauDN,$auDN)
# - falls nein: fuer jedes FIPB in CAU intersect(FIPB,newmipb)-> Schnittmengen bilden die neuen FIPB
$del_objects = objects_to_adjust($newmipb,$delip,$childauDN,$cchild_array);
# print_r($del_objects);printf("<br><br>");
- printf("<br>Host IP Addresses that will be deleted: <br>");
- foreach ($del_objects['hostips'] as $item){
- printf("HostDN: %s &nbsp;&nbsp; IP Address: %s <br>",$item['dn'],$item['ip']);
+ if ( count($del_objects['hostips']) != 0 ){
+ printf("<br>Host IP Addresses that will be deleted: <br>");
+ foreach ($del_objects['hostips'] as $item){
+ printf("HostDN: %s &nbsp;&nbsp; IP Address: %s <br>",$item['dn'],$item['ip']);
+ }
}
- printf("<br>Subnet IP Ranges that will be adjusted: <br>");
- foreach ($del_objects['dhcpranges'] as $item){
- printf("DhcpObjectDN: %s &nbsp;&nbsp; New IP Range: %s <br>",$item['dn'],$item['newrange']);
+ if ( count($del_objects['dhcpranges']) != 0 ){
+ printf("<br>Subnet IP Ranges that will be adjusted: <br>");
+ foreach ($del_objects['dhcpranges'] as $item){
+ printf("DhcpObjectDN: %s &nbsp;&nbsp; New IP Range: %s <br>",$item['dn'],$item['newrange']);
+ }
}
# momentan wird einfach geloescht:
- foreach ($del_objects['hostips'] as $item){
- delete_ip_host($item['dn'],$item['auDN']);
+ if ( count($del_objects['hostips']) != 0 ){
+ foreach ($del_objects['hostips'] as $item){
+ delete_ip_host($item['dn'],$item['auDN']);
+ }
+ }
+ if ( count($del_objects['dhcpranges']) != 0 ){
+ foreach ($del_objects['dhcpranges'] as $item){
+ if ( count($item['newrange']) >= 1 ){
+ modify_ip_dhcprange($item['newrange'],$item['dn'],$item['auDN']);
+ }else{
+ delete_ip_dhcprange($item['dn'],$item['auDN']);
+ }
+ }
}
- foreach ($del_objects['dhcpranges'] as $item){
- if ( count($item['newrange']) >= 1 ){
- modify_ip_dhcprange($item['newrange'],$item['dn'],$item['auDN']);
- }else{
- delete_ip_dhcprange($item['dn'],$item['auDN']);
- }
- }
-
# in Child-AU: oldmipb -> newmipb
$mipb_array = get_maxipblocks_au($childauDN);
@@ -1209,16 +1232,16 @@ function reduce_ip_delegation($oldmipb,$newmipb,$childauDN,$auDN)
for ($i=0; $i < count($mipb_array); $i++){
if ($mipb_array[$i] == false){array_splice($mipb_array, $i, 1);}
}
- print_r($mipb_array);printf("<br><br>");
+ #print_r($mipb_array);printf("<br><br>");
if (count($mipb_array) == 0){
$entry ['MaxIPBlock'] = array();
- print_r($entry);printf("<br><br>");
+ #print_r($entry);printf("<br><br>");
$results = ldap_mod_del($ds,$childauDN,$entry);
}else{
foreach ( $mipb_array as $item ){
$entry ['MaxIPBlock'][] = $item;
}
- print_r($entry);printf("<br><br>");
+ #print_r($entry);printf("<br><br>");
$results = ldap_mod_replace($ds,$childauDN,$entry);
}
@@ -1240,30 +1263,30 @@ function reduce_ip_delegation($oldmipb,$newmipb,$childauDN,$auDN)
for ($i=0; $i < count($fipb_array); $i++){
if ($fipb_array[$i] == false){array_splice($fipb_array, $i, 1);}
}
- print_r($fipb_array);printf("<br><br>");
+ #print_r($fipb_array);printf("<br><br>");
if (count($fipb_array) == 0){
$entry1 ['FreeIPBlock'] = array();
- print_r($entry1);printf("<br><br>");
+ #print_r($entry1);printf("<br><br>");
$results = ldap_mod_del($ds,$childauDN,$entry1);
}else{
foreach ( $fipb_array as $item ){
$entry1 ['FreeIPBlock'][] = $item;
}
- print_r($entry1);printf("<br><br>");
+ #print_r($entry1);printf("<br><br>");
$results = ldap_mod_replace($ds,$childauDN,$entry1);
}
if ($results){
- echo "<br>FIPBs in Child-AU erfolgreich aktualisiert!<br>" ;
+ echo "FIPBs in Child-AU erfolgreich aktualisiert!<br>" ;
# in AU: Geloeschte IP Bereiche als neue FIPBs aufnehmen
foreach ($delip as $item){
$entry2 ['FreeIPBlock'][] = $item;
}
- print_r($entry2);printf("<br><br>");
+ #print_r($entry2);printf("<br><br>");
$results = ldap_mod_add($ds,$auDN,$entry2);
if ($results){
- echo "<br>FIPBs in AU erfolgreich aktualisiert!<br>" ;
+ echo "FIPBs in AU erfolgreich aktualisiert!<br>" ;
# IP Bloecke aufraeumen in Child-AU und AU (Merging)
merge_ipranges($auDN);
@@ -1271,15 +1294,15 @@ function reduce_ip_delegation($oldmipb,$newmipb,$childauDN,$auDN)
return 1;
}else{
- echo "<br>Fehler beim aktualisieren!<br>";
+ echo "Fehler beim aktualisieren der FIPBs in AU!<br>";
return 0;
}
}else{
- echo "<br>Fehler beim aktualisieren!<br>";
+ echo "Fehler beim aktualisieren der FIPBs in Child-AU!<br>";
return 0;
}
}else{
- echo "<br>Fehler beim aktualisieren!<br>";
+ echo "<br>Fehler beim aktualisieren der MIPBs in Child-AU!<br>";
return 0;
}
}
@@ -1305,7 +1328,11 @@ function expand_ip_delegation($oldmipb,$newmipb,$childauDN,$auDN)
global $ds, $suffix, $ldapError;
$difference = split_iprange($oldmipb,$newmipb);
- new_ip_delegation($difference[0],$childauDN,$auDN);
+ if ( new_ip_delegation($difference[0],$childauDN,$auDN) ){
+ return 1;
+ }else{
+ return 0;
+ }
}
@@ -1331,6 +1358,7 @@ function objects_to_delete($delip,$childauDN,$cchild_array)
# Hosts von child-AU, child-child-AU
$chosts = get_hosts($childauDN,array("dn","ipaddress"));
# print_r($chosts);printf("<br><br>");
+ $cchosts = array();
foreach ($cchild_array as $item){
$cchostsitem = get_hosts($item['dn'],array("dn","ipaddress"));
foreach ($cchostsitem as $item2){
@@ -1340,9 +1368,10 @@ function objects_to_delete($delip,$childauDN,$cchild_array)
$chosts = array_merge($chosts,$cchosts);
# print_r($chosts);printf("<br><br>");
- # Subnets von child-AU, child-child-AU
- $csubnets = get_subnets($childauDN,array("dn","dhcprange"));
+ # Pools von child-AU, child-child-AU
+ $csubnets = get_dhcppools($childauDN,array("dn","dhcprange"));
# print_r($csubnets);printf("<br><br>");
+ $ccsubnets = array();
foreach ($cchild_array as $item){
$ccsubnetsitem = get_hosts($item['dn'],array("dn","dhcprange"));
foreach ($ccsubnetsitem as $item2){
@@ -1352,98 +1381,63 @@ function objects_to_delete($delip,$childauDN,$cchild_array)
$csubnets = array_merge($csubnets,$ccsubnets);
# print_r($csubnets);printf("<br><br>");
- # Pools von child-AU, child-child-AU
- /*$cpools = get_pools($childauDN,array("dn","dhcprange"));
- # print_r($cpools);printf("<br>");
- foreach ($cchild_array as $item){
- $ccpoolsitem = get_hosts($item['dn'],array("dn","dhcprange"));
- foreach ($ccpoolsitem as $item2){
- $ccpools[] = $item2;
- }
- }
- $cpools = array_merge($cpools,$ccpools);
- # print_r($cpools);printf("<br><br>");
- */
# Zu loeschende Hosts bestimmen
$chosts_todo = array();
foreach ($delip as $delipitem){
- foreach ($chosts as $item){
- if( count($item['ipaddress']) > 1 ){
- foreach ($item['ipaddress'] as $item2 ){
- if ( intersect_ipranges($delipitem,$item2) != false ){
+ if ( count($chosts) != 0 ){
+ foreach ($chosts as $item){
+ if( count($item['ipaddress']) > 1 ){
+ foreach ($item['ipaddress'] as $item2 ){
+ if ( intersect_ipranges($delipitem,$item2) != false ){
+ $chosts_todo[] = array('dn' => $item['dn'],
+ 'ip' => $item['ipaddress'],
+ 'auDN' => $item['auDN']);
+ }
+ }
+ }
+ elseif ( count($item['ipaddress']) == 1 ){
+ if ( intersect_ipranges($delipitem,$item['ipaddress']) != false ){
$chosts_todo[] = array('dn' => $item['dn'],
'ip' => $item['ipaddress'],
'auDN' => $item['auDN']);
}
}
}
- elseif ( count($item['ipaddress']) == 1 ){
- if ( intersect_ipranges($delipitem,$item['ipaddress']) != false ){
- $chosts_todo[] = array('dn' => $item['dn'],
- 'ip' => $item['ipaddress'],
- 'auDN' => $item['auDN']);
- }
- }
}
}
# print_r($chosts_todo);printf("<br><br>");
- # Zu loeschende Subnets bestimmen, und wie IP Range anzupassen ist
+ # Zu loeschende Pools bestimmen, und wie IP Range anzupassen ist
$csubnets_todo = array();
foreach ($delip as $delipitem){
- foreach ($csubnets as $item){
- if( count($item['dhcprange']) > 1 ){
- foreach ($item['dhcprange'] as $item2 ){
- # print_r(intersect_ipranges($delipitem,$item2));
- if ( intersect_ipranges($delipitem,$item2) != false ){
- $csubnets_todo[] = array('dn'=> $item['dn'],
- 'delrange' => $item2['dhcprange'],
- 'auDN' => $item['auDN']);
+ if ( count($csubnets) != 0 ){
+ foreach ($csubnets as $item){
+ if( count($item['dhcprange']) > 1 ){
+ foreach ($item['dhcprange'] as $item2 ){
+ # print_r(intersect_ipranges($delipitem,$item2));
+ if ( intersect_ipranges($delipitem,$item2) != false ){
+ $csubnets_todo[] = array('dn'=> $item['dn'],
+ 'delrange' => $item2['dhcprange'],
+ 'auDN' => $item['auDN']);
+ }
}
}
- }
- elseif ( count($item['dhcprange']) == 1 ){
- # print_r(intersect_ipranges($delipitem,$item['dhcprange']));
- if ( intersect_ipranges($delipitem,$item['dhcprange']) != false ){
- $csubnets_todo[] = array('dn'=> $item['dn'],
- 'delrange' => $item['dhcprange'],
- 'auDN' => $item['auDN']);
- }
- }
- }
- }
- # print_r($csubnets_todo);printf("<br><br>");
-
- # Zu loeschende Pools bestimmen, und wie IP Range anzupassen ist
- /*$cpools_todo = array();
- foreach ($delip as $delipitem){
- foreach ($cpools as $item){
- if( count($item['dhcprange']) > 1 ){
- foreach ($item['dhcprange'] as $item2 ){
- if ( intersect_ipranges($delipitem,$item2) != false ){
- $cpools_todo[] = array('dn'=> $item['dn'],
- 'delrange' => $item2['dhcprange'],
- 'auDN' => $item['auDN']);
+ elseif ( count($item['dhcprange']) == 1 ){
+ # print_r(intersect_ipranges($delipitem,$item['dhcprange']));
+ if ( intersect_ipranges($delipitem,$item['dhcprange']) != false ){
+ $csubnets_todo[] = array('dn'=> $item['dn'],
+ 'delrange' => $item['dhcprange'],
+ 'auDN' => $item['auDN']);
}
}
}
- elseif ( count($item['dhcprange']) == 1 ){
- if ( intersect_ipranges($delipitem,$item['dhcprange']) != false ){
- $cpools_todo[] = array('dn'=> $item['dn'],
- 'delrange' => $item['dhcprange'],
- 'auDN' => $item['auDN']);
- }
- }
}
}
- # print_r($cpools_todo);printf("<br><br>");
- */
-
- $dhcps_todo = array_merge($csubnets_todo,$cpools_todo);
+ # print_r($csubnets_todo);printf("<br><br>");
$objects_to_delete = array('hostips' => $chosts_todo,
- 'dhcpranges' => $dhcps_todo);
+ 'dhcpranges' => $csubnets_todo);
return $objects_to_delete;
}
@@ -1471,6 +1465,7 @@ function objects_to_adjust($newmipb,$delip,$childauDN,$cchild_array)
# Hosts von child-AU, child-child-AU
$chosts = get_hosts($childauDN,array("dn","ipaddress"));
# print_r($chosts);printf("<br><br>");
+ $cchosts = array();
foreach ($cchild_array as $item){
$cchostsitem = get_hosts($item['dn'],array("dn","ipaddress"));
foreach ($cchostsitem as $item2){
@@ -1480,9 +1475,10 @@ function objects_to_adjust($newmipb,$delip,$childauDN,$cchild_array)
$chosts = array_merge($chosts,$cchosts);
# print_r($chosts);printf("<br><br>");
- # Subnets von child-AU, child-child-AU
- $csubnets = get_subnets($childauDN,array("dn","dhcprange"));
+ # Pools von child-AU, child-child-AU
+ $csubnets = get_dhcppools($childauDN,array("dn","dhcprange"));
# print_r($csubnets);printf("<br><br>");
+ $ccsubnets = array();
foreach ($cchild_array as $item){
$ccsubnetsitem = get_hosts($item['dn'],array("dn","dhcprange"));
foreach ($ccsubnetsitem as $item2){
@@ -1492,39 +1488,29 @@ function objects_to_adjust($newmipb,$delip,$childauDN,$cchild_array)
$csubnets = array_merge($csubnets,$ccsubnets);
# print_r($csubnets);printf("<br><br>");
- # Pools von child-AU, child-child-AU
- /*$cpools = get_pools($childauDN,array("dn","dhcprange"));
- # print_r($cpools);printf("<br>");
- foreach ($cchild_array as $item){
- $ccpoolsitem = get_hosts($item['dn'],array("dn","dhcprange"));
- foreach ($ccpoolsitem as $item2){
- $ccpools[] = $item2;
- }
- }
- $cpools = array_merge($cpools,$ccpools);
- # print_r($cpools);printf("<br><br>");
- */
# Zu loeschende Hosts bestimmen
$chosts_todo = array();
foreach ($delip as $delipitem){
- foreach ($chosts as $item){
- if( count($item['ipaddress']) > 1 ){
- foreach ($item['ipaddress'] as $item2 ){
- if ( intersect_ipranges($delipitem,$item2) != false ){
+ if ( count($chosts) != 0 ){
+ foreach ($chosts as $item){
+ if( count($item['ipaddress']) > 1 ){
+ foreach ($item['ipaddress'] as $item2 ){
+ if ( intersect_ipranges($delipitem,$item2) != false ){
+ $chosts_todo[] = array('dn' => $item['dn'],
+ 'ip' => $item['ipaddress'],
+ 'auDN' => $item['auDN']);
+ }
+ }
+ }
+ elseif ( count($item['ipaddress']) == 1 ){
+ if ( intersect_ipranges($delipitem,$item['ipaddress']) != false ){
$chosts_todo[] = array('dn' => $item['dn'],
'ip' => $item['ipaddress'],
'auDN' => $item['auDN']);
}
}
}
- elseif ( count($item['ipaddress']) == 1 ){
- if ( intersect_ipranges($delipitem,$item['ipaddress']) != false ){
- $chosts_todo[] = array('dn' => $item['dn'],
- 'ip' => $item['ipaddress'],
- 'auDN' => $item['auDN']);
- }
- }
}
}
# print_r($chosts_todo);printf("<br><br>");
@@ -1532,58 +1518,34 @@ function objects_to_adjust($newmipb,$delip,$childauDN,$cchild_array)
# Zu loeschende Subnets bestimmen, und wie IP Range anzupassen ist
$csubnets_todo = array();
foreach ($delip as $delipitem){
- foreach ($csubnets as $item){
- if( count($item['dhcprange']) > 1 ){
- foreach ($item['dhcprange'] as $item2 ){
- # print_r(intersect_ipranges($delipitem,$item2));
- if ( intersect_ipranges($delipitem,$item2) != false ){
- $csubnets_todo[] = array('dn'=> $item['dn'],
- 'newrange' => intersect_ipranges($newmipb,$item2),
- 'auDN' => $item['auDN']);
+ if ( count($csubnets) != 0 ){
+ foreach ($csubnets as $item){
+ if( count($item['dhcprange']) > 1 ){
+ foreach ($item['dhcprange'] as $item2 ){
+ # print_r(intersect_ipranges($delipitem,$item2));
+ if ( intersect_ipranges($delipitem,$item2) != false ){
+ $csubnets_todo[] = array('dn'=> $item['dn'],
+ 'newrange' => intersect_ipranges($newmipb,$item2),
+ 'auDN' => $item['auDN']);
+ }
}
}
- }
- elseif ( count($item['dhcprange']) == 1 ){
- # print_r(intersect_ipranges($delipitem,$item['dhcprange']));
- if ( intersect_ipranges($delipitem,$item['dhcprange']) != false ){
- $csubnets_todo[] = array('dn'=> $item['dn'],
- 'newrange' => intersect_ipranges($newmipb,$item['dhcprange']),
- 'auDN' => $item['auDN']);
- }
- }
- }
- }
- # print_r($csubnets_todo);printf("<br><br>");
-
- # Zu loeschende Pools bestimmen, und wie IP Range anzupassen ist
- /*$cpools_todo = array();
- foreach ($delip as $delipitem){
- foreach ($cpools as $item){
- if( count($item['dhcprange']) > 1 ){
- foreach ($item['dhcprange'] as $item2 ){
- if ( intersect_ipranges($delipitem,$item2) != false ){
- $cpools_todo[] = array('dn'=> $item['dn'],
- 'newrange' => intersect_ipranges($newmipb,$item2),
- 'auDN' => $item['auDN']);
+ elseif ( count($item['dhcprange']) == 1 ){
+ # print_r(intersect_ipranges($delipitem,$item['dhcprange']));
+ if ( intersect_ipranges($delipitem,$item['dhcprange']) != false ){
+ $csubnets_todo[] = array('dn'=> $item['dn'],
+ 'newrange' => intersect_ipranges($newmipb,$item['dhcprange']),
+ 'auDN' => $item['auDN']);
}
}
}
- elseif ( count($item['dhcprange']) == 1 ){
- if ( intersect_ipranges($delipitem,$item['dhcprange']) != false ){
- $cpools_todo[] = array('dn'=> $item['dn'],
- 'newrange' => intersect_ipranges($newmipb,$item['dhcprange']),
- 'auDN' => $item['auDN']);
- }
- }
}
}
- # print_r($cpools_todo);printf("<br><br>");
- */
+ # print_r($csubnets_todo);printf("<br><br>");
- $dhcps_todo = array_merge($csubnets_todo,$cpools_todo);
$objects_to_adjust = array('hostips' => $chosts_todo,
- 'dhcpranges' => $dhcps_todo);
+ 'dhcpranges' => $csubnets_todo);
return $objects_to_adjust;
}
diff --git a/ldap-site-mngmt/webinterface/lib/ldap.inc.php b/ldap-site-mngmt/webinterface/lib/ldap.inc.php
index 292529a6..f7f6be07 100644
--- a/ldap-site-mngmt/webinterface/lib/ldap.inc.php
+++ b/ldap-site-mngmt/webinterface/lib/ldap.inc.php
@@ -404,6 +404,10 @@ function get_hosts($auDN,$attributes)
{
global $ds, $suffix, $ldapError;
+ #if ( $sortattr == ""){
+ # $sortattr = "hostname";
+ #}
+
if(!($result = uniLdapSearch($ds, "cn=computers,".$auDN, "(objectclass=Host)", $attributes, "hostname", "sub", 0, 0))) {
# redirect(5, "", $ldapError, FALSE);
echo "no search";
diff --git a/ldap-site-mngmt/webinterface/lib/syntax_check.php b/ldap-site-mngmt/webinterface/lib/syntax_check.php
index 35924e3c..48926260 100644
--- a/ldap-site-mngmt/webinterface/lib/syntax_check.php
+++ b/ldap-site-mngmt/webinterface/lib/syntax_check.php
@@ -88,6 +88,40 @@ function check_netip_syntax($IP)
}
# MAC Adresse
+function check_mac_syntax($MAC)
+{
+ if($this->CLEAR) { $this->clear_error();}
+
+ $len = strlen($MAC);
+ if( $len != 17 ){
+ $this->ERROR = "check_mac_syntax: too long [$MAC][$len]";
+ return false;
+ }
+
+ $badcharacter = eregi_replace("([0-9a-fA-F\:]+)","",$MAC);
+ if(!empty($badcharacter)){
+ $this->ERROR = "check_mac_syntax: Bad data in MAC address [$badcharacter]";
+ return false;
+ }
+
+ $chunks = explode(":",$MAC);
+ $count = count($chunks);
+ if ($count != 6){
+ $this->ERROR = "check_mac_syntax: not in format hx:hx:hx:hx:hx:hx [$MAC]";
+ return false;
+ }
+ foreach ($chunks as $chunk){
+ $chunklen = strlen($chunk);
+ if( $len != 2 ){
+ $this->ERROR = "check_mac_syntax: too long [$MAC][$len]";
+ return false;
+ }
+ }
+
+ return true;
+
+}
+
# Domainname