if ($maxlease) { $atts['dhcpoptmax-lease-time'] = htmlentities($maxlease); } if ($defaultlease) { $atts['dhcpoptdefault-lease-time'] = htmlentities($defaultlease); } #print_r($atts); echo "<br><br>"; $nodeDN = "cn=dhcp," . $auDN; $mnr = $_POST['mnr']; $sbmnr = $_POST['sbmnr']; $get_dhcpcn = str_replace(" ", "_", $cn); $seconds = 2; $url = "new_dhcpsubnet.php?&mnr=2"; echo "\n<html>\n<head>\n\t<title>Computers Management</title>\n\t<link rel='stylesheet' href='../styles.css' type='text/css'>\n</head>\n<body>\n<table border='0' cellpadding='30' cellspacing='0'> \n<tr><td>"; if ($cn != "" && $cn != "Hier_Subnetz_eintragen" && $netmask != "" && $netmask != "Hier_Netzmaske_eintragen") { if ($syntax->check_netip_syntax($cn) && $syntax->check_ip_syntax($netmask)) { if (add_dhcpsubnet($cn, $dhcpservice, $netmask, $atts)) { $mesg .= "<br>DHCP Subnet erfolgreich angelegt<br>"; $url = "dhcpsubnets.php?mnr=" . $mnr; } else { $mesg .= "<br>Fehler beim anlegen des DHCP Subnets!<br>"; } } else { $mesg .= "Falsche IP Syntax! Geben Sie eine korrekte IP Adresse als Subnet Name oder Netzmaske ein."; $url = "new_dhcpsubnet.php?subnetcn=Hier_Subnetz_eintragen&netmask=" . $netmask . "&mnr=" . $mnr; } } elseif ($cn == "" || $cn == "Hier_Subnetz_eintragen" || $netmask == "" || $netmask == "Hier_Netzmaske_eintragen") { if ($cn == "") { $cn = "Hier_Subnetz_eintragen"; } if ($netmask == "") {
if ($result1) { $mesg .= "<br>IP Range $oldrange1[$i] - $oldrange2[$i] erfolgreich aus Pool gelöscht!<br>"; $result2 = ldap_mod_add($ds,$poolaudn,$addentry); if ($result2) { merge_ipranges($poolaudn); $mesg .= "<br>geloeschte IP Range erfolgreich als neuer FIPB in die AU eingetragen!<br>"; $dhcpchange = 1; }else{ $mesg .= "Fehler beim eintragen als neuer FIPB!"; ldap_mod_add($ds,$pooldn,$delentry); } }else{ $mesg .= "Fehler beim löschen der Pool IP Range $oldrange1[$i] - $oldrange2[$i]"; }*/ } elseif ($oldrange1 != "" && $oldrange2 != "" && $range1 != "" && $range2 != "") { if ($syntax->check_ip_syntax($range1) && $syntax->check_ip_syntax($range2)) { $or1 = ip2long($oldrange1); $or2 = ip2long($oldrange2); $nr1 = ip2long($range1); $nr2 = ip2long($range2); if ($nr2 >= $nr1) { # korrekte IP Range $modentry['dhcpRange'] = $range; if (($nr1 > $or1 || $nr2 < $or2) && !($nr1 < $or1 || $nr2 > $or2)) { # Range verkleinern $diffrange = split_iprange($range, $oldrange); echo "<br>verkleinern - diffrange: "; print_r($diffrange); echo "<br>"; if ($modresult = ldap_mod_replace($ds, $pooldn, $modentry)) { $new_fipbs = array();
#print_r($olddhcp); echo "<br><br>"; #print_r($newip); echo "<br><br>"; #print_r($oldip); echo "<br><br>"; #print_r($hostDN); echo "<br><br>"; # IP Adressen echo "<br><b>IP Adressen:</b> <br><br>"; $diff1 = array_keys(array_diff_assoc($oldip, $newip)); $diff2 = array_keys(array_diff_assoc($newip, $oldip)); $tochange = array_unique(array_merge($diff1, $diff2)); #print_r($tochange); echo "<br><br>"; foreach ($tochange as $i) { $hostexp = ldap_explode_dn($hostDN[$i], 1); echo "<b>{$hostexp['0']}</b> - "; if ($oldip[$i] == "" && $newip[$i] != "") { echo "IP <b>{$newip[$i]}</b> eintragen <br>"; if ($syntax->check_ip_syntax($newip[$i])) { #echo "korrekte IP Syntax"; $newip[$i] = htmlentities($newip[$i]); $newip_array = array($newip[$i], $newip[$i]); #print_r($newip_array); $newipp = implode('_', $newip_array); #print_r($newipp); $oldip[$i] = htmlentities($oldip[$i]); if (new_ip_host($newipp, $hostDN[$i], $auDN)) { #$mesg = "Neue IP Adresse eingetragen<br>"; # falls Rechner in DHCP -> fixed-address auf IP Setzen... if ($dhcp[$i]) { $entryfa['dhcpoptfixed-address'] = "ip"; if ($fixadd) { if (ldap_mod_replace($ds, $hostDN[$i], $entryfa)) { $mesg .= "DHCP Fixed-Address erfolgreich auf IP gesetzt.";
if ($oldhostname != "" && $hostname == "") { echo "Hostname löschen!<br>>br>\n\t\t\tDies ist Teil des DN, Sie werden den Rechner komplett löschen<br><br>"; echo "Wollen Sie den Rechner <b>" . $oldhostname . "</b> mit seinen Hardware-Profilen (MachineConfigs) \n\t\t\tund PXE Bootmenüs wirklich löschen?<br><br>\n\t\t\t<form action='host_delete.php' method='post'>\n\t\t\t\tFalls ja:<br><br>\n\t\t\t\t<input type='hidden' name='dn' value='" . $hostDN . "'>\n\t\t\t\t<input type='hidden' name='name' value='" . $oldhostname . "'>\n\t\t\t\t<input type='Submit' name='apply' value='löschen' class='small_loginform_button'><br><br>\n\t\t\t</form>\n\t\t\t<form action='" . $url . "' method='post'>\n\t\t\t\tFalls, nein:<br><br>\n\t\t\t\t<input type='Submit' name='apply' value='zurück' class='small_loginform_button'>\n\t\t\t</form>"; $seconds = 600; } ################################################# # IP Adresse, sofort ausgefuehrt, da spezielle # Funktionen nach IP Aenderungen folgen if ($oldip == "" && $ip != "") { #echo "IP neu anlegen<br>"; # Wenn DHCP Subnet zu IP nicht existiert dann kein Eintrag DHCP if ($network = test_ip_dhcpsubnet($ip)) { $mesg .= "<b>Client bereits als dynamisch im DHCP eingetragen.<br>\n\t\t\t\tIP Adresse {$ip} kann nicht gesetzt werden, da kein Subnetz {$network}/24 im DHCP eingetragen ist</b><br><br>"; } else { # Syntaxcheck if ($syntax->check_ip_syntax($ip)) { $newip_array = array($ip, $ip); $newip = implode('_', $newip_array); if (new_ip_host($newip, $hostDN, $auDN)) { $mesg .= "IP erfolgreich eingetragen<br><br>"; # Falls Host in DHCP dann Fixed-Address setzen if ($olddhcp || $dhcp) { $dhcpchange = 1; if ($fixedaddress != "ip") { $fixedaddress = "ip"; } } } else { $mesg .= "Fehler beim eintragen der IP<br><br>"; } } else {
$mesg = "Fehler beim ändern des DHCP Subnets!<br><br>"; } } else { $mesg = "falsche IP Syntax<br>"; } } if ($oldcn != "" && $cn == "") { echo "DHCP Subnet loeschen!<br> \n\t\t\tDieser ist Teil des DN, Sie werden den DHCP Subnet komplett löschen<br><br>"; echo "Wollen Sie den DHCP Subnet <b>" . $oldcn . "</b> wirklich löschen?<br><br>\n\t\t\t<form action='dhcpsubnet_delete.php' method='post'>\n\t\t\t\tFalls ja:<br><br>\n\t\t\t\t<input type='hidden' name='dn' value='" . $subnetDN . "'>\n\t\t\t\t<input type='hidden' name='name' value='" . $oldcn . "'>\n\t\t\t\t<input type='Submit' name='apply' value='löschen' class='small_loginform_button'><br><br>\n\t\t\t</form>\n\t\t\t<form action='" . $url . "' method='post'>\n\t\t\t\tFalls, nein:<br><br>\n\t\t\t\t<input type='Submit' name='apply' value='zurück' class='small_loginform_button'>\n\t\t\t</form>"; $seconds = 600; } ##################################### # Netmask if ($netmask != $oldnetmask) { if ($netmask) { if ($syntax->check_ip_syntax($netmask)) { $entry['dhcpoptnetmask'] = $netmask; if (ldap_mod_replace($ds, $subnetDN, $entry)) { $mesg = "Netzmaske erfolgreich geändert<br><br>"; $dhcpchange = 1; } else { $mesg = "Fehler beim ändern der Netzmaske!<br><br>"; } } else { $mesg = "falsche IP Syntax<br>"; } } else { echo "Die Subnetzmaske ist ein notwendiges Attribut.<br>\n Keine Änderung!<br>"; } } #####################################
$tochange1 = array_unique(array_merge($diff1, $diff2)); $diff3 = array_keys(array_diff_assoc($oldrange2, $newrange2)); $diff4 = array_keys(array_diff_assoc($newrange2, $oldrange2)); $tochange2 = array_unique(array_merge($diff3, $diff4)); # print_r($tochange1);echo "<br><br>"; # print_r($tochange2);echo "<br><br>"; $tochange = array_unique(array_merge($tochange1, $tochange2)); #print_r($tochange);echo "<br><br>"; if ($tochange) { foreach ($tochange as $i) { if ($oldrange1[$i] == "" && $oldrange2[$i] == "" && $newrange1[$i] != "" && $newrange2[$i] != "") { echo "Neuen IP Bereich <b>{$newrange1[$i]} - {$newrange2[$i]}</b> an <b>{$childau}</b> delegieren:"; echo "<br>"; echo "<br>"; #echo "neue IP Range: ";print_r($newrange1[$i]);echo " - ";print_r($newrange2[$i]);echo "<br>"; if ($syntax->check_ip_syntax($newrange1[$i]) && $syntax->check_ip_syntax($newrange2[$i])) { #echo "korrekte IP Syntax<br>"; $newrange1[$i] = htmlentities($newrange1[$i]); $newrange2[$i] = htmlentities($newrange2[$i]); # DNS Lookup Test für neue IPs #if ( check_iprange_zone($newrange1[$i],$newrange2[$i],$childzone,$childau) ) { #echo "bla"; $newrange_array = array($newrange1[$i], $newrange2[$i]); #print_r($newrange_array); $newrange = implode('_', $newrange_array); #print_r($newrange); # $oldip[$i] = htmlentities($oldip[$i]); if (new_ip_delegation($newrange, $childauDN, $auDN)) { echo "<br>Neuer IP Bereich erfolgreich delegiert<br>"; } else { echo "<br>Fehler beim delegieren des neuen IP Bereichs<br>";
function add_host($hostDN, $hostname, $hostdesc, $mac, $ip, $atts, $dhcp) { global $ds, $suffix, $auDN, $assocdom, $ldapError; $syntax = new Syntaxcheck(); $mactest = 0; $entryhost['objectclass'][0] = "Host"; $entryhost['objectclass'][1] = "dhcpHost"; $entryhost['objectclass'][2] = "dhcpOptions"; $entryhost['objectclass'][3] = "top"; $entryhost["hostname"] = $hostname; $entryhost["domainname"] = $assocdom; if ($hostdesc != "") { $entryhost["description"] = $hostdesc; } if ($mac != "") { if ($syntax->check_mac_syntax($mac)) { $entryhost["hwaddress"] = $mac; if ($dhcp != "none" && $dhcp != "") { $entryhost["dhcphlpcont"] = $dhcp; } } else { echo "SyntaxCheck MAC Adresse <b>{$mac}</b>:<br>-> " . $syntax->ERROR; } } else { echo "Keine MAC Adresse angelegt. Kein DHCP Eintrag.<br>"; } foreach (array_keys($atts) as $key) { if ($atts[$key] != "") { $entryhost[$key] = $atts[$key]; } } #print_r($entryhost); echo "<br>"; if ($result = ldap_add($ds, $hostDN, $entryhost)) { if ($ip != "") { if ($syntax->check_ip_syntax($ip)) { $newip_array = array($ip, $ip); $newip = implode('_', $newip_array); print_r($newip); echo "<br><br>"; if (new_ip_host($newip, $hostDN, $auDN)) { echo "IP erfolgreich eingetragen<br><br>"; if ($mac != "" && $mactest && $dhcp != "none" && $dhcp != "") { $entryfa["dhcpoptfixed-address"] = "ip"; if (ldap_mod_add($ds, $hostDN, $entryfa)) { echo "DHCP Fixed-Address erfolgreich auf IP gesetzt<br><br>"; } else { echo "Fehler beim Setzen von DHCP Fixed-Address<br><br>"; } } } else { echo "Fehler beim eintragen der IP<br><br>"; } } else { echo "Falsche IP Syntax! IP nicht eingetragen<br><br>"; } } #echo "Rechner erfolgreich eingetragen<br>"; if ($mac != "" && $mactest && $dhcp != "none" && $dhcp != "") { update_dhcpmtime($auDN); } return 1; } else { #echo "Fehler beim eintragen des neuen Rechners!<br>"; return 0; } }
echo "DHCP Pool erfolgreich aus RBS gelöscht.<br>"; } } else { echo "RBS replace "; print_r($oldrbs[$i]); echo " with "; print_r($entryrbs); echo "<br>"; if ($result = ldap_mod_replace($ds, $pooldn[$i], $entryrbs)) { echo "DHCP Pool RBS Einbindung erfolgreich geändert.<br>"; } } } # 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<br>", $pooldn[$i]); # Range zusammenstellen $newrange = implode("_", array($addrange1[$i], $addrange2[$i])); $result = add_dhcprange($newrange, $pooldn[$i]); if ($result) { # Subnet-AU auf DHCP-Modify setzen $au_to_update[] = $subnetau[$i]; printf("Neue dynamische IP Range %s - %s erfolgreich in Subnetz %s0 eingetragen!<br>", $addrange1[$i], $addrange2[$i], $net); } else { echo "<br>Fehler beim eintragen des dynamischen DHCP Pools!<br>"; }
$mesg .= "RBS Name erfolgreich geändert<br><br>"; } else { $mesg .= "Fehler beim ändern des RBS Namen!<br><br>"; } } if ($oldrbscn != "" && $rbscn == "") { echo "Gruppenname loeschen!<br> \n\t\t\tDieses ist Teil des DN, Sie werden den RBS komplett löschen<br><br>"; echo "Wollen Sie den RBS Dienst <b>" . $oldrbscn . "</b> wirklich löschen?<br><br>\n\t\t\t<form action='rbservice_delete.php' method='post'>\n\t\t\t\tFalls ja:<br><br>\n\t\t\t\t<input type='hidden' name='dn' value='" . $pxeDN . "'>\n\t\t\t\t<input type='hidden' name='name' value='" . $oldrbscn . "'>\n\t\t\t\t<input type='Submit' name='apply' value='löschen' class='small_loginform_button'><br><br>\n\t\t\t</form>\n\t\t\t<form action='" . $url . "' method='post'>\n\t\t\t\tFalls, nein:<br><br>\n\t\t\t\t<input type='Submit' name='apply' value='zurück' class='small_loginform_button'>\n\t\t\t</form>"; $seconds = 600; } ##################################################### # TFTP Server IP (nur aus eigenen Max-IP-Blocks) if ($tftpserverip != $oldtftpserverip) { if ($tftpserverip == "") { // $entry_del ['tftpserverip'] = array(); } elseif ($syntax->check_ip_syntax($tftpserverip)) { if (check_tftpip_in_mipb($tftpserverip)) { if ($oldtftpserverip == "") { $entry_add['tftpserverip'] = $tftpserverip; } else { $entry_replace['tftpserverip'] = $tftpserverip; } } else { $mesg .= "Gewählte TFTP Server IP <b>{$tftpserverip}</b> nicht aus dem eigenem IP Bereich!<br> Konnte nicht eingetragen werden.<br><br>"; } } } ##################################### # Offer ändern // if ( $rbsoffer != "none" && $rbsoffer == $oldrbsoffer ){ // $mesg = "Sie haben die gleiche Abteilung ausgewählt<br>
include '../standard_header.inc.php'; $syntax = new Syntaxcheck(); $ipnet = $_POST['ip']; #print_r($ipnet); $childauDN = $_POST['childdn']; $childzone = $_POST['childzone']; $only_subnet = $_POST['only_subnet']; $childaudnexp = ldap_explode_dn($childauDN, 1); $childau = $childaudnexp[0]; #print_r($childau); $url = "child_au.php?cau=" . $childau; $seconds = 2; echo "\n<html>\n<head>\n\t<title>IP Address Management</title>\n\t<link rel='stylesheet' href='../styles.css' type='text/css'>\n</head>\n<body>\n<table border='0' cellpadding='20' cellspacing='0' width='100%'>\n<tr><td>"; $net = implode(".", $ipnet) . ".0"; if ($syntax->check_ip_syntax($net) && $ipnet[0] != "0") { #echo "<b>$net</b><br>"; if ($only_subnet) { $mipb = $net . "_" . $net; } else { $mipb = $net . "_" . implode(".", $ipnet) . ".255"; } #echo "<b>$mipb</b><br>"; if (!($ou = check_for_existing_mipbs($mipb))) { #echo "Netz <b>$net</b> anlegen ...<br><br>"; # MIPB und FIPB in ChildAU eintragen $childau_entry['MaxIPBlock'] = $mipb; $childau_entry['FreeIPBlock'] = $mipb; if (ldap_mod_add($ds, $childauDN, $childau_entry)) { $seconds = 500; if ($only_subnet) {