if ($oldrbs[$j] == "") { $result = ldap_mod_add($ds, $hostDN[$j], $rbsadd); if ($result) { echo "erfolgreich eingetragen: <b>{$rbscn}</b> (Next-Server: "; print $rbsadd['dhcpoptnext-server'] . " / Filename: " . $rbsadd['dhcpoptfilename'] . ")<br>"; rbs_adjust_host($hostDN[$j], $rbs[$j]); } else { echo "Fehler beim eintragen in Remote Boot Dienst <b>{$rbscn}</b> <br>"; } } else { if ($result = ldap_mod_replace($ds, $hostDN[$j], $rbsadd)) { echo "Remote Boot Service erfolgreich geändert (<b>{$oldrbscn}</b> -> <b>{$rbscn}</b>)<br>"; rbs_adjust_host($hostDN[$j], $rbs[$j]); } else { echo "Fehler beim ändern des Remote Boot Dienstes (<b>{$oldrbscn}</b> -> <b>{$rbscn}</b>)!<br>"; } } } $dhcpchange = 1; } else { # echo "kein Änderung <br>"; } } echo "</td><td></tr><tr><td colspan='3'>"; ######### if ($dhcpchange) { update_dhcpmtime($auDN); } $mesg .= "<br>Sie werden automatisch auf die vorherige Seite zurückgeleitet. <br>\n\t\t\tFalls nicht, klicken Sie hier <a href='ip_rechner.php' style='publink'>back</a>"; redirect(500, $url, $mesg, $addSessionId = TRUE); echo "\n</td></tr></table>\n</head>\n</html>";
print_r($entryrbs); echo "<br>"; if ($result = ldap_mod_add($ds, $hostDN, $entryrbs)) { update_dhcpmtime(array()); rbs_adjust_host($hostDN, $rbs); $mesg = "Remote Boot Service erfolgreich zu <b>" . $rbscn . " [Abt.: " . $rbsau . "]</b> geändert<br><br>"; } else { $mesg = "Fehler beim ändern des Remote Boot Services zu <b>" . $rbscn . "</b>!<br><br>"; } } } else { $entryrbs['hlprbservice'] = array(); $entryrbs['dhcpoptnext-server'] = array(); $entryrbs['dhcpoptfilename'] = array(); echo "RBS delete "; echo "<br>"; if ($result = ldap_mod_del($ds, $hostDN, $entryrbs)) { update_dhcpmtime(array()); $mesg = "Rechner erfolgreich aus RBS gelöscht<br><br>"; } else { $mesg = "Fehler beim löschen aus RBS!<br><br>"; } } } if ($rbs == "none") { echo "RBS none <br>"; } ##################### $mesg .= "<br>Sie werden automatisch auf die vorherige Seite zurückgeleitet. <br>\t\t\t\t\n\t\t\tFalls nicht, klicken Sie hier <a href=" . $url . " style='publink'>back</a>"; redirect($seconds, $url, $mesg, $addSessionId = TRUE); echo "</td></tr></table></body>\n</html>";
function modify_subnet_dn($subnetDN, $newsubnetDN) { global $ds, $suffix, $auDN, $ldapError; # check IP-Net-Syntax ... # Subnet CNs (IP) in internes Range ".._.." Format bringen $newcn = ldap_explode_dn($newsubnetDN, 1); $newcnarray = array($newcn[0], $newcn[0]); $newsubnetip = implode("_", $newcnarray); $oldcn = ldap_explode_dn($subnetDN, 1); $oldcnarray = array($oldcn[0], $oldcn[0]); $oldsubnetip = implode("_", $oldcnarray); # IP checken und FIBS anpassen $fipb_array = get_freeipblocks_au($auDN); for ($i = 0; $i < count($fipb_array); $i++) { if (split_iprange($newsubnetip, $fipb_array[$i]) != 0) { $ipranges = split_iprange($newsubnetip, $fipb_array[$i]); array_splice($fipb_array, $i, 1, $ipranges); break; } } if ($i < count($fipb_array)) { # zunächst alte DHCP Ranges löschen delete_ip_dhcprange($subnetDN, $auDN); # Move Subtree if (move_subtree($subnetDN, $newsubnetDN)) { adjust_dhcpsubnet_dn($newsubnetDN, $subnetDN); printf("<br>Subnet Name (IP) erfolgreich von %s zu %s geändert!<br>", $oldcn[0], $newcn[0]); # neue Subnetz-IP aus FIPBs entfernen foreach ($fipb_array as $item) { $entry['FreeIPBlock'][] = $item; } # alte Subnetz-IP in FIPBs integrieren $entry['FreeIPBlock'][] = $oldsubnetip; $results = ldap_mod_replace($ds, $auDN, $entry); if ($results) { merge_ipranges($auDN); update_dhcpmtime($auDN); echo "<br>FIPBs erfolgreich angepasst!<br>"; return 1; } else { echo "<br>Fehler beim Anpassen der FIPBs!<br>"; } } else { echo "<br>Fehler beim ändern des Subnet Namens (IP)!<br>"; } } else { printf("<br>Neues Subnet %s nicht im verfuegbaren IP Bereich!<br>", $newcn[0]); return 0; } }
if ( $dhcpservice[$i] != $olddhcpservice[$i] ){ if ( $olddhcpservice[$i] == "no" ){ $entrysv ['dhcphlpcont'] = $DHCP_SERVICE; if(ldap_mod_add($ds,$subnetDN[$i],$entrysv)){ $mesg = "Subnetz erfolgreich im DHCP Dienst eingetragen<br><br>"; $dhcpchange = 1; }else{ $mesg = "Fehler beim eintragen des Subnetzes im DHCP Dienst.<br><br>"; } } elseif( $olddhcpservice[$i] == "yes" ){ $entrysv ['dhcphlpcont'] = array(); if(ldap_mod_del($ds,$subnetDN[$i],$entrysv)){ $mesg = "Subnetz erfolgreich aus DHCP Dienst ausgetragen<br><br>"; $dhcpchange = 1; } else{ $mesg = "Fehler beim austragen des Subnetzes aus dem DHCP Dienst!<br><br>"; } } } }*/ ########### if ($dhcpchange) { update_dhcpmtime($subnetaudn); } $mesg .= "<br>Sie werden automatisch auf die vorherige Seite zurückgeleitet. <br>\t\t\t\t\n\t\t\tFalls nicht, klicken Sie hier <a href=" . $url . " style='publink'>back</a>"; redirect($seconds, $url, $mesg, $addSessionId = TRUE); echo "</td></tr></table></body>\n</html>";
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; } }
$mesg .= "<b>Attribut(e) löschen<br>"; $mesg .= ldapmod_log_output($entry_delete, "delete"); if ($del_result = ldap_mod_del($ds, $hostDN, $entry_delete)) { if (check_dhcpchange($entry_delete, $dhcp)) { $dhcpchange = 1; } $mesg .= $ok_mesg; } else { $mesg .= $error_mesg; } } ################################## # DHCP Modify Timestamp if ($dhcpchange) { // if ( $dhcphlpcont != "" && $dhcpchange ){ $mesg .= update_dhcpmtime($auDN); // $mesg .= "DHCP CHANGE<br><br>"; } ################################## # Restlichen Output if ($mesg == "") { $mesg = "<b>Keine Änderungen</b><br><br>"; // $seconds = 200; } if ($automatic_back) { $mesg .= "<br>Sie werden in {$seconds} Sekunden automatisch auf die vorherige Seite zurückgeleitet. <br>Falls nicht, klicken Sie hier <a href=" . $url . " style='publink'>zurück</a>"; redirect($seconds, $url, $mesg, $addSessionId = TRUE); } else { $mesg .= "<br><br><a href={$url} style='publink'><b>gelesen</b> (<< zurück)</a>"; echo $mesg; }
function adjust_dhcpfilename($initbootfile, $rbsDN, $type) { global $ds, $suffix, $ldapError; if (!($result = uniLdapSearch($ds, "ou=RIPM," . $suffix, "(&(objectclass=Host)(hlprbservice={$rbsDN}))", array("dn"), "dn", "sub", 0, 0))) { # redirect(5, "", $ldapError, FALSE); echo "no search"; die; } $result = ldapArraySauber($result); $host_au = array(); if ($type == "add") { $modentry['dhcpoptfilename'] = $initbootfile; foreach ($result as $item) { ldap_mod_add($ds, $item['dn'], $modentry); } } elseif ($type == "delete") { $modentry['dhcpoptfilename'] = array(); foreach ($result as $item) { ldap_mod_del($ds, $item['dn'], $modentry); } } elseif ($type == "replace") { $modentry['dhcpoptfilename'] = $initbootfile; foreach ($result as $item) { ldap_mod_replace($ds, $item['dn'], $modentry); $expdn = array_slice(ldap_explode_dn($item['dn'], 0), 3); $host_au[] = implode(",", $expdn); } } if (count($host_au) != 0) { $host_au = array_unique($host_au); foreach ($host_au as $au) { update_dhcpmtime($au); } } }
$modpool['dhcprange'] = merge_ipranges_array($modpool['dhcprange']); print_r($modpool); echo "<br>"; 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 "<br>FIPBS anpassen<br>"; #print_r($new_fipbs['freeipblock']); echo "<br>"; $new_fipbs['freeipblock'] = merge_ipranges_array($new_fipbs['freeipblock']); print_r($new_fipbs); echo "<br>"; if ($res = ldap_mod_replace($ds, $auDN, $new_fipbs)) { printf("FIPBs erfolgreich angepasst"); } else { printf("Fehler beim Anpassen der FIPBs"); } } ######################################################################################### # DHCP Modify Timestamps in betreffenden AUs aktualisieren #echo "<br>Subnet-AU: ";print_r ($au_to_update); echo "<br>"; update_dhcpmtime($au_to_update); $mesg .= "<br>Sie werden automatisch auf die vorherige Seite zurückgeleitet. <br>\t\t\t\t\n\t\t\tFalls nicht, klicken Sie hier <a href=" . $url . " style='publink'>back</a>"; redirect($seconds, $url, $mesg, $addSessionId = TRUE); echo "</td></tr></table></body>\n</html>";
#$mesg .= "$newhostdn<br>"; #$mesg .= "$selfhost<br>"; /*if ($add = ldap_add($ds,$newhostdn,$newhost)) { if ($delete = delete_host($selfhost)) { if ($newhost['dhcphlpcont']) { $dhcpchange = 1; } $mesg .= "Client <b>$hostname</b> erfolgreich nach <b>$target_ou[0] ($target_zone)</b> verschoben<br><br>"; }else{ $mesg .= "Fehler beim löschen von Client <b>$hostname</b> aus <b>$au_ou ($assocdom)</b><br>"; if ($delete2 = delete_host($newhostdn)) { $mesg .= "Kopierter Client <b>$hostname</b> wieder aus <b>$target_ou[0]</b> entfernt"; }else{ $mesg .= "Fehler beim wieder entfernen von <b>$hostname</b> aus <b>$target_ou[0]</b>. Client jetzt in beiden AUs angelegt<br>"; } } }else{ $mesg .= "Fehler beim hinzufügen von Client <b>$hostname</b> in <b>$target_ou[0] ($target_zone)</b><br>"; }*/ } else { #echo "$found_hostdn<br>"; $mesg .= "<br>Name <b>{$hostname}</b> in DNS Zone <b>{$target_zone}</b> der Ziel-AU <b>{$target_ou['0']}</b> bereits vergeben!<br><br>\n\t\t\t\t\t\t<b>{$hostname}</b> konnte <b>nicht</b> verschoben werden (Sie müssen den Rechner zunächst umbenennen).<br>"; } } } if ($dhcpchange) { update_dhcpmtime(array($target_audn)); } $mesg .= "<br>Sie werden automatisch auf die vorherige Seite zurückgeleitet. <br>\t\t\t\t\n\t\t\tFalls nicht, klicken Sie hier <a href=" . $url . " style='publink'>back</a>"; redirect($seconds, $url, $mesg, $addSessionId = TRUE); echo "</td></tr></table></body>\n</html>";
$mesg .= "Fehler beim eintragen der Attribute " . $addatts . "<br>"; } } if (count($entrymod) != 0) { foreach (array_keys($entrymod) as $key) { $modatts .= "<b>" . $key . "</b>,"; } if (ldap_mod_replace($ds, $dhcpDN, $entrymod)) { $mesg .= "Attribute " . $modatts . " erfolgreich geaendert<br>"; $dhcpchange = 1; } else { $mesg .= "Fehler beim aendern der Attribute " . $modatts . "<br>"; } } if (count($entrydel) != 0) { foreach (array_keys($entrydel) as $key) { $delatts .= "<b>" . $key . "</b>,"; } if (ldap_mod_del($ds, $dhcpDN, $entrydel)) { $mesg .= "Attribute " . $delatts . " erfolgreich geloescht<br>"; $dhcpchange = 1; } else { $mesg .= "Fehler beim loeschen der Attribute " . $delatts . "<br>"; } } if ($dhcpchange) { update_dhcpmtime($dhcpaudn); } $mesg .= "<br>Sie werden automatisch auf die vorherige Seite zurückgeleitet. <br>\t\t\t\t\n\t\t\tFalls nicht, klicken Sie hier <a href=" . $url . " style='publink'>back</a>"; redirect($seconds, $url, $mesg, $addSessionId = TRUE); echo "</td></tr></table></body>\n</html>";
$cldnexp = ldap_explode_dn($cldn, 1); $classcn = $cldnexp[0]; if ($olddhcp[$cldn] != $dhcp[$cldn]) { if ($olddhcp[$cldn] == "") { # add $addentry['dhcphlpcont'] = $dhcp[$cldn]; if ($result = ldap_mod_add($ds, $cldn, $addentry)) { echo "DHCP Class <b>{$classcn}</b> erfolgreich im DHCP Dienst <b>aktiviert</b><br>"; $dhcpchange = 1; } else { echo "<b>Fehler</b> beim aktivieren der DHCP Class <b>{$classcn}</b><br>"; } } else { #remove $delentry['dhcphlpcont'] = array(); if ($result = ldap_mod_del($ds, $cldn, $delentry)) { echo "DHCP Class <b>{$classcn}</b> erfolgreich im DHCP Dienst <b>deaktiviert</b><br>"; $dhcpchange = 1; } else { echo "<b>Fehler</b> beim deaktivieren der DHCP Class <b>{$classcn}</b><br>"; } } } } ########### if ($dhcpchange) { update_dhcpmtime($rootAU); } $mesg .= "<br>Sie werden automatisch auf die vorherige Seite zurückgeleitet. <br>\t\t\t\t\n\t\t\tFalls nicht, klicken Sie hier <a href=" . $url . " style='publink'>back</a>"; redirect($seconds, $url, $mesg, $addSessionId = TRUE); echo "</td></tr></table></body>\n</html>";