";
#print_r($subnet); echo "
";
#print_r($delpool); echo "
";
#print_r($oldrange1); echo "
";
#print_r($oldrange2); echo "
";
#print_r($range1); echo "
";
#print_r($range2); echo "
";
#print_r($rangepooldn); echo "
";
#print_r($addrange1); echo "
";
#print_r($addrange2); echo "
";
#print_r($olduc); echo "
";
#print_r($uc); echo "
";
$mnr = $_POST['mnr'];
$seconds = 2000;
$url = "dhcppool.php?mnr=".$mnr;
echo "
";
for ($i=0;$i "; $add_fipb = ldap_mod_add($ds,$auDN,$modentry); if ($add_fipb){ echo " geloeschte IP Range(s) erfolgreich als neuer FIPB in die AU eingetragen! " ; merge_ipranges($auDN); $delete = ldap_delete($ds,$delpool[$i]); if ($delete){ # Arrays von gelöschten Pools für weitere Verarbeitung bereinigen foreach ( $key as $nr ){ array_splice ( &$pooldn, $nr, 1 ); array_splice ( &$addrange1, $nr, 1 ); array_splice ( &$addrange2, $nr, 1 ); array_splice ( &$uc, $nr, 1 ); array_splice ( &$olduc, $nr, 1 ); } # da sich Arrays verkleinern, Wert in $key_r entsprechend verkleinern, $j=0; # Variable $j als Zähler um wieviel foreach ( $key_r as $nr ){ array_splice ( &$rangepooldn, $nr-$j, 1 ); array_splice ( &$range1, $nr-$j, 1 ); array_splice ( &$range2, $nr-$j, 1 ); array_splice ( &$oldrange1, $nr-$j, 1 ); array_splice ( &$oldrange2, $nr-$j, 1 ); $j++; } printf("Pool %s erfolgreich gelöscht ", $delpool[$i]); }else{ printf("Fehler beim Löschen des Pools %s", $delpool[$i]); } }else{ echo " Fehler beim eintragen der geloeschten IP Range(s) als neuen FIPB! DHCP Pool nicht gelöscht "; } } for ($i=0;$i "; ldap_mod_del($ds,$pooldn[$i],$entrydel); $dhcpoptadd = "dhcpopt".$uc[$i]; $entryadd [$dhcpoptadd] = "unknown-clients"; print_r($entryadd); echo " "; ldap_mod_add($ds,$pooldn[$i],$entryadd); } # Ranges hinzufügen if ( $addrange1[$i] != "" && $addrange2[$i] != "" ){ if ($syntax->check_ip_syntax($addrange1[$i]) && $syntax->check_ip_syntax($addrange2[$i])){ $net = strrev(strchr(strrev($subnet[$i]), ".")); $add1 = strrev(strchr(strrev($addrange1[$i]), ".")); $add2 = strrev(strchr(strrev($addrange2[$i]), ".")); if ( $net == $add1 && $net == $add2 ){ printf("Range in Pool %s hinzufügen ",$pooldn[$i]); # Range zusammenstellen $newrange = implode("_", array($addrange1[$i],$addrange2[$i])); $result = add_dhcprange($newrange,$pooldn[$i]); if ($result){ printf("Neue dynamische IP Range %s - %s erfolgreich in Subnetz %s0 eingetragen! ",$addrange1[$i],$addrange2[$i],$net); }else{ echo " Fehler beim eintragen des dynamischen DHCP Pools! "; } }else{ printf("Neue Range %s - %s nicht in Subnetz %s0",$addrange1[$i],$addrange2[$i],$net); } }else{ printf("falsche IP Syntax der neuen Range %s - %s ", $addrange1[$i],$addrange2[$i]); } } } # bereits angelegte Ranges verarbeiten (löschen, verkleinern, vergrößern) $fipbs = get_freeipblocks_au($auDN); $new_fipbs ['freeipblock'] = $fipbs; $mod_dhcpranges = array(); for ($i=0;$i diffrange: "; print_r($diffrange); echo " "; # array $poolranges aktualisieren (neue Ranges) $mod_dhcpranges [$rangepooldn[$i]] = $poolranges [$rangepooldn[$i]]; $range_key = array_search ( $oldrange, $mod_dhcpranges [$rangepooldn[$i]] ); #print_r($range_key); echo " "; $poolranges [$rangepooldn[$i]][$range_key] = $range; $mod_dhcpranges [$rangepooldn[$i]][$range_key] = $range; foreach ($diffrange as $dr){ $new_fipbs ['freeipblock'][] = $dr; } }else{ printf("falsche IP Syntax der neuen Range %s - %s ", $range1[$i],$range2[$i]); } } elseif( ($nr1 < $or1 || $nr2 > $or2) && !($nr1 > $or1 || $nr2 < $or2) ){ if ($syntax->check_ip_syntax($range1[$i]) && $syntax->check_ip_syntax($range2[$i])){ # Range vergrößern $addrange = split_iprange($oldrange,$range); echo "addrange: "; print_r($addrange); echo " "; $mod_dhcpranges [$rangepooldn[$i]] = $poolranges [$rangepooldn[$i]]; foreach ($addrange as $ar){ $test = 0; for ($c=0; $c < count($new_fipbs['freeipblock']); $c++){ if ( split_iprange($ar,$new_fipbs['freeipblock'][$c]) != 0 ){ $ipranges = split_iprange($ar,$new_fipbs['freeipblock'][$c]); array_splice($new_fipbs['freeipblock'], $c, 1, $ipranges); $test = 1; break; } } if ( $test ){ $poolranges [$rangepooldn[$i]][] = $ar; $mod_dhcpranges [$rangepooldn[$i]][] = $ar; } } }else{ printf("falsche IP Syntax der neuen Range %s - %s ", $range1[$i],$range2[$i]); } } #else{ # $mesg = " Verschieben (Shiften) einer IP Range nicht moeglich! # Nur Vergroessern und Verkleinern moeglich! "; # $mesg .= " Sie werden automatisch auf die vorherige Seite zurückgeleitet. # Falls nicht, klicken Sie hier back"; # redirect($seconds, $url, $mesg, $addSessionId = TRUE); #} } } #print_r($mod_dhcpranges); echo " "; #print_r($new_fipbs); echo " "; $keys = array_keys($mod_dhcpranges); foreach ($keys as $pdn){ #print_r($pdn); echo " "; #print_r($mod_dhcpranges[$pdn]); echo " "; if ( count($mod_dhcpranges[$pdn]) == 0 ){ printf("Pool %s löschen ",$pdn); if ($res = ldap_delete($ds,$pdn)){ printf("Pool %s erfolgreich gelöscht",$pdn); }else{ printf("Fehler beim Löschen von %s",$pdn); } }else{ echo "Pool Ranges anpassen "; foreach ($mod_dhcpranges[$pdn] as $rg){ $modpool ['dhcprange'][] = $rg; } #print_r($modpool); echo " "; $modpool ['dhcprange'] = merge_ipranges_array($modpool ['dhcprange']); print_r($modpool); echo " "; if ($res = ldap_mod_replace($ds,$pdn,$modpool)){ printf("Pool Ranges von %s erfolgreich angepasst",$pdn); }else{ printf("Fehler beim Anpassen der Pool Ranges von %s",$pdn); } } } $diff = array_diff( $new_fipbs['freeipblock'], $fipbs ); $revdiff = array_diff( $fipbs, $new_fipbs['freeipblock'] ); if ( count($diff) != 0 || count($revdiff) != 0 ){ echo " FIPBS anpassen "; #print_r($new_fipbs['freeipblock']); echo " "; $new_fipbs['freeipblock'] = merge_ipranges_array($new_fipbs['freeipblock']); print_r($new_fipbs); echo " "; if ($res = ldap_mod_replace($ds,$auDN,$new_fipbs)){ printf("FIPBs erfolgreich angepasst"); }else{ printf("Fehler beim Anpassen der FIPBs"); } } # DHCP Modify Timestamp festhalten update_dhcpmtime(); $mesg .= " Sie werden automatisch auf die vorherige Seite zurückgeleitet. Falls nicht, klicken Sie hier back"; redirect($seconds, $url, $mesg, $addSessionId = TRUE); echo " |