diff options
Diffstat (limited to 'ldap-site-mngmt/webinterface/lib')
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ö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öscht.<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 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 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 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 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 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 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 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 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 |