<?php

include '../standard_header.inc.php';
$pxeDN = $_POST['dn'];
$oldpxecn = $_POST['name'];
$mnr = $_POST['mnr'];
$sbmnr = $_POST['sbmnr'];
$mcnr = $_POST['mcnr'];
$seconds = 1;
$url = $_POST['successurl'];
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 ($pxeDN != "") {
    if (dive_into_tree_del($pxeDN, "")) {
        $mesg = "PXE Boot Men&uuml; <b>" . $pxecn . "</b> erfolgreich gel&ouml;scht!<br><br>";
    } else {
        $mesg = "Fehler beim l&ouml;schen des PXE Boot Men&uuml;s <b>" . $pxecn . "</b> !<br><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 delete_dhcppool($poolDN)
{
    global $ds, $suffix, $auDN, $ldapError;
    $exppooldn = ldap_explode_dn($poolDN, 0);
    $exppooldn = array_slice($exppooldn, 3);
    $poolaudn = implode(',', $exppooldn);
    echo "Pool-AUDN: {$poolaudn}<br>";
    $ranges_array = get_dhcp_range2($poolDN);
    if (count($ranges_array) != 0) {
        if (count($ranges_array) > 1) {
            foreach ($ranges_array as $range) {
                $new_fipbs['FreeIPBlock'][] = $range;
            }
        } else {
            $new_fipbs['FreeIPBlock'] = $ranges_array[0];
        }
    }
    #echo "Ranges: "; print_r($ranges_array); echo "<br>";
    #echo "FIPBS: "; print_r($new_fipbs); echo "<br>";
    if (dive_into_tree_del($poolDN, "")) {
        if (ldap_mod_add($ds, $poolaudn, $new_fipbs)) {
            merge_ipranges($poolaudn);
            return 1;
        }
    } else {
        echo "Fehler beim l&ouml;schen des Pool-Objekts";
        return 0;
    }
}
<?php

include '../standard_header.inc.php';
$gbmDN = $_POST['dn'];
$gbmcn = $_POST['name'];
$seconds = 1;
$url = "gbm_overview.php?";
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 ($gbmDN != "") {
    clean_up_del_gbm($gbmDN);
    if (dive_into_tree_del($gbmDN, "")) {
        clean_up_del_gbm($gbmDN);
        $mesg = "Generisches Bootmen&uuml; <b>" . $gbmcn . "</b> erfolgreich gel&ouml;scht!<br><br>";
    } else {
        $mesg = "Fehler beim l&ouml;schen des Generischen Bootmen&uuml;s <b>" . $gbmcn . "</b> !<br><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>";
<?php

include '../standard_header.inc.php';
$dhcpDN = $_POST['dn'];
$dhcpcn = $_POST['name'];
$seconds = 2;
$url = "dhcpservice.php?mnr=1";
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 ($dhcpDN != "") {
    if (dive_into_tree_del($dhcpDN, "")) {
        cleanup_del_dhcpservice($dhcpDN);
        $mesg = "DHCP Service <b>" . $dhcpcn . "</b> erfolgreich gel&ouml;scht!<br><br>";
    } else {
        $mesg = "Fehler beim l&ouml;schen des DHCP Services <b>" . $dhcpcn . "</b> !<br><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>";
<?php

include '../standard_header.inc.php';
$rbsDN = $_POST['dn'];
$rbscn = $_POST['name'];
$seconds = 100;
$url = 'rbs.php';
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 ($rbsDN != "") {
    if (dive_into_tree_del($rbsDN, "")) {
        clean_up_del_rbs($rbsDN);
        $mesg = "Remote Boot Service <b>" . $rbscn . "</b> erfolgreich gel&ouml;scht!<br><br>";
    } else {
        $mesg = "Fehler beim l&ouml;schen des Remote Boot Services <b>" . $rbscn . "</b> !<br><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 delete_group($groupDN)
{
    global $ds, $suffix, $auDN, $ldapError;
    if (dive_into_tree_del($groupDN, "")) {
        # alle DN Objekte in denen Gruppe stand ebenfalls löschen
        # DHCP ... noch todo
        return 1;
    } else {
        return 0;
    }
}
function delete_child_domain($oldchilddomain, $assocdom, $childDN, $domDN, $delmodus)
{
    global $ds, $suffix, $domprefix, $domsuffix, $ldapError;
    #print_r($domDN); echo "<br>";
    # dcDNold
    $dcDNold = "ou=DNS," . $suffix;
    $dcold_array = explode('.', $oldchilddomain);
    $dcold_array = array_reverse($dcold_array);
    foreach ($dcold_array as $dc) {
        $dcDNold = "dc=" . $dc . "," . $dcDNold;
    }
    #print_r($dcDNold); echo "<br>";
    # dcDNnew = domDN
    if ($delmodus == "integrate") {
        # associatedNames zu neuem dc-Knoten hinzufügen
        $assocnames = get_dc_data($dcDNold, array("associatedname"));
        # funkt nicht bei uni-freiburg.de
        # echo "<br>"; print_r($assocnames); echo "<br>";
        if (count($assocnames['associatedname']) > 1) {
            foreach ($assocnames['associatedname'] as $aname) {
                #print_r($aname); echo "<br>";
                $entryAN['associatedname'][] = $aname;
            }
        } else {
            $entryAN['associatedname'] = $assocnames['associatedname'];
            $assocname = $assocnames['associatedname'];
            $assocnames['associatedname'] = array($assocname);
        }
        #print_r($entryAN); echo "<br>";
        $resultAN = ldap_mod_add($ds, $domDN, $entryAN);
        if ($resultAN) {
            # DNS Einträge verschieben und an neue Domain anpassen
            $zone_entries = get_zone_entries($dcDNold, array("dn", "relativedomainname"));
            #echo "<br>"; print_r($zone_entries); echo "<br>";
            if (count($zone_entries) >= 1) {
                foreach ($zone_entries as $ze) {
                    #print_r($ze['relativedomainname']); echo "<br>";
                    #print_r($domDN); echo "<br>";
                    move_subtree($ze['dn'], "relativedomainname=" . $ze['relativedomainname'] . "," . $domDN);
                    $entryZE['zonename'] = $assocdom;
                    print_r($entryZE);
                    echo "<br>";
                    $resultZE = ldap_mod_replace($ds, "relativedomainname=" . $ze['relativedomainname'] . "," . $domDN, $entryZE);
                }
            }
            # Rollenmembers kopieren für jeden associatedName (ohne Duplikate zu generieren)
            $newdom_roles = get_roles_dns($domDN);
            #print_r($newdom_roles); echo "<br>";
            if (count($newdom_roles['MainAdmin']) != 0) {
                $newmainadmins = $newdom_roles['MainAdmin'];
            } else {
                $newmainadmins = array();
            }
            if (count($newdom_roles['HostAdmin']) != 0) {
                $newhostadmins = $newdom_roles['HostAdmin'];
            } else {
                $newhostadmins = array();
            }
            if (count($newdom_roles['ZoneAdmin']) != 0) {
                $newzoneadmins = $newdom_roles['ZoneAdmin'];
            } else {
                $newzoneadmins = array();
            }
            #print_r($newmainadmins); echo "<br>";
            #print_r($newhostadmins); echo "<br>";
            #print_r($newzoneadmins); echo "<br><br>";
            foreach ($assocnames['associatedname'] as $aname) {
                #echo "_________________________________________<br>";
                #print_r($aname); echo "<br>";
                $roles = get_roles($aname);
                #print_r($roles); echo "<br>";
                $mainadmins = $roles['MainAdmin'];
                #print_r($mainadmins); echo "<br>";
                #print_r($newmainadmins); echo "<br>";
                $mainadmins = array_diff($mainadmins, $newmainadmins);
                $mainadmins = array_merge($newmainadmins, $mainadmins);
                #print_r($mainadmins); echo "<br>";
                if (count($mainadmins) > 1) {
                    for ($i = 0; $i < count($mainadmins); $i++) {
                        $entryRoleMain['member'][$i] = $mainadmins[$i];
                    }
                } else {
                    $entryRoleMain['member'] = $mainadmins[0];
                }
                #print_r($entryRoleMain); echo "<br><br>";
                $resultMA = ldap_mod_replace($ds, "cn=MainAdmin,cn=roles," . $domDN, $entryRoleMain);
                if (count($roles['HostAdmin']) != 0) {
                    $hostadmins = $roles['HostAdmin'];
                    #print_r($hostadmins); echo "<br>";
                    #print_r($newhostadmins); echo "<br>";
                    $hostadmins = array_diff($hostadmins, $newhostadmins);
                    $hostadmins = array_merge($newhostadmins, $hostadmins);
                    #print_r($hostadmins); echo "<br>";
                    if (count($hostadmins) > 1) {
                        for ($i = 0; $i < count($hostadmins); $i++) {
                            $entryRoleHost['member'][$i] = $hostadmins[$i];
                        }
                    } else {
                        $entryRoleHost['member'] = $hostadmins[0];
                    }
                    #print_r($entryRoleHost); echo "<br><br>";
                    $resultHA = ldap_mod_replace($ds, "cn=HostAdmin,cn=roles," . $domDN, $entryRoleHost);
                }
                if (count($roles['ZoneAdmin']) != 0) {
                    $zoneadmins = $roles['ZoneAdmin'];
                    #print_r($zoneadmins); echo "<br>";
                    #print_r($newzoneadmins); echo "<br>";
                    $zoneadmins = array_diff($zoneadmins, $newzoneadmins);
                    $zoneadmins = array_merge($newzoneadmins, $zoneadmins);
                    #print_r($zoneadmins); echo "<br>";
                    if (count($zoneadmins) > 1) {
                        for ($i = 0; $i < count($zoneadmins); $i++) {
                            $entryRoleZone['member'][$i] = $zoneadmins[$i];
                        }
                    } else {
                        $entryRoleZone['member'] = $zoneadmins[0];
                    }
                    #print_r($entryRoleZone); echo "<br><br>";
                    $resultZA = ldap_mod_replace($ds, "cn=ZoneAdmin,cn=roles," . $domDN, $entryRoleZone);
                }
                # associatedDomain anpassen in allen AUs von $assocnames (alt)
                $entryAD['associateddomain'] = $assocdom;
                #print_r($entryAD); echo "<br>";
                $resultAD = ldap_mod_replace($ds, $aname, $entryAD);
                #echo "_________________________________________<br>";
            }
            # Falls alter dc-Knoten noch Subdomains, d.h. dc-Teilbäume hat, diese verschieben mit
            # rekursivem Anpassen aller Einträge
            $dcchilds = get_dc_childs($dcDNold, array("dn", "dc"));
            #echo "<br><br>"; print_r($dcchilds); echo "<br>";
            if (count($dcchilds) != 0) {
                foreach ($dcchilds as $dcc) {
                    print_r($dcc['dn']);
                    echo " >> ";
                    print_r("dc=" . $dcc['dc'] . "," . $domDN);
                    echo "<br>";
                    if (move_subtree($dcc['dn'], "dc=" . $dcc['dc'] . "," . $domDN)) {
                        $newdom = $dcc['dc'] . "." . $assocdom;
                        #print_r($newdom); echo "<br><br>";
                        dive_into_dctree_adapt("dc=" . $dcc['dc'] . "," . $domDN, $newdom);
                    }
                }
            }
            # alten dc-Knoten entfernen
            dive_into_tree_del($dcDNold, "");
            # fixme: fehlt noch löschen der INCLUDE-Direktive in der parentdomain
        } else {
            return 0;
        }
    }
    if ($delmodus == "complete") {
        # if (dive_into_tree_del($dcDNold,"")){
        $delentry['objectclass'] = "domainrelatedobject";
        $delentry['associateddomain'] = $oldchilddomain . "." . $domsuffix;
        print_r($delentry);
        echo "<br>";
        # 	$delresult = ldap_mod_del($ds,$childDN,$delentry);
        #    if ($delresult){
        # 		$mesg = "Domain komplett gel&ouml;scht<br>";
        # 	}else{$mesg = "Fehler! ldap_mod_del<br>";}
        # }else{$mesg = "Fehler! dive_into_tree_del<br>";}
    }
    # return $mesg;
}
function move_subtree($oldDN, $newDN)
{
    if (dive_into_tree_cp($oldDN, $newDN)) {
        dive_into_tree_del($oldDN, "");
        echo "Moved subtree<br>";
        return 1;
    } else {
        echo "Moving subtree not possible!!!<br>";
    }
}