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&auml;ndert (<b>{$oldrbscn}</b> -> <b>{$rbscn}</b>)<br>";
                    rbs_adjust_host($hostDN[$j], $rbs[$j]);
                } else {
                    echo "Fehler beim &auml;ndern des Remote Boot Dienstes (<b>{$oldrbscn}</b> -> <b>{$rbscn}</b>)!<br>";
                }
            }
        }
        $dhcpchange = 1;
    } else {
        #	echo "kein &Auml;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&uuml;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&auml;ndert<br><br>";
            } else {
                $mesg = "Fehler beim &auml;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&ouml;scht<br><br>";
        } else {
            $mesg = "Fehler beim l&ouml;schen aus RBS!<br><br>";
        }
    }
}
if ($rbs == "none") {
    echo "RBS none <br>";
}
#####################
$mesg .= "<br>Sie werden automatisch auf die vorherige Seite zur&uuml;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&auml;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 &auml;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&uuml;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&ouml;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 &Auml;nderungen</b><br><br>";
    // 	$seconds = 200;
}
if ($automatic_back) {
    $mesg .= "<br>Sie werden in {$seconds} Sekunden automatisch auf die vorherige Seite zur&uuml;ckgeleitet. <br>Falls nicht, klicken Sie hier <a href=" . $url . " style='publink'>zur&uuml;ck</a>";
    redirect($seconds, $url, $mesg, $addSessionId = TRUE);
} else {
    $mesg .= "<br><br><a href={$url} style='publink'><b>gelesen</b> &nbsp;&nbsp;(<< zur&uuml;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&uuml;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&ouml;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&uuml;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&uuml;ssen den Rechner zun&auml;chst umbenennen).<br>";
        }
    }
}
if ($dhcpchange) {
    update_dhcpmtime(array($target_audn));
}
$mesg .= "<br>Sie werden automatisch auf die vorherige Seite zur&uuml;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&uuml;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&uuml;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>";