예제 #1
0
             $timeranges[$i] = $exptime;
             # Für grafische Wo-Ansicht
             if ($exptime[0] == "X") {
                 $exptime[0] = "täglich";
             }
             # if ($exptime[1] == "X" && $exptime[2] == "X"){$exptime[1] = ""; $exptime[2]= "";}
             $trange .= $exptime[0] . ", von " . $exptime[1] . ":00 bis " . $exptime[2] . ":59";
         }
         $pxehost .= "<tr valign='top'>\n\t\t\t\t\t\t<td width='20%' class='tab_d'>{$pxelink} &nbsp;</td>\n\t\t\t\t\t\t<td width='30%' class='tab_d'>{$trange} &nbsp;</td>\n\t\t\t\t\t\t<td class='tab_d'> &nbsp;</td>\n\t\t\t\t\t</tr>";
     }
 } else {
     $pxehost .= "<tr valign='top'>\n\t\t\t\t\t\t<td class='tab_d' colspan='3'>Keine PXE Config angelegt </td>\n\t\t\t\t\t</tr>";
 }
 # Default PXEs des RBS
 $defpxe = "<tr>\n\t\t\t\t\t<td colspan='3' width='50%' class='tab_h'>\n\t\t\t\t\t\t<b>Default PXE Konfigurationen des gew&auml;hlten Remote Boot Dienstes <code class='font_object'> {RBSNAME} </code></b><br>\n\t\t\t\t\t\t(read-only - d.h. nur vom RBS Betreiber ver&auml;nderbar)\n\t\t\t\t\t</td>\n\t\t\t\t</tr>";
 $defaultpxeconfigs = get_pxeconfigs($rbsDN, array("dn", "cn", "description", "timerange", "filename"));
 #print_r($defaultpxeconfigs); echo "<br>";
 if (count($defaultpxeconfigs) != 0) {
     for ($i = 0; $i < count($defaultpxeconfigs); $i++) {
         if ($defaultpxeconfigs[$i]['filename'] == "default") {
             $defpxelink = "<a href='showpxe.php?dn=" . $defaultpxeconfigs[$i]['dn'] . "&mnr=1&sbmnr=" . $sbmnr . "&mcnr=-1&hostdn=" . $hostDN . "' class='headerlink'>" . $defaultpxeconfigs[$i]['cn'] . "</a>";
             $deftrange = "";
             if (count($defaultpxeconfigs[$i]['timerange']) > 1) {
                 foreach ($defaultpxeconfigs[$i]['timerange'] as $tr) {
                     $exptime = array_merge(explode('_', $tr), array($defaultpxeconfigs[$i]['cn']));
                     $timeranges[$i][] = $exptime;
                     # Für grafische Wo-Ansicht
                     if ($exptime[0] == "X") {
                         $exptime[0] = "t&auml;glich";
                     }
                     # if ($exptime[1] == "X" && $exptime[2] == "X"){$exptime[1] = ""; $exptime[2]= "";}
예제 #2
0
             $macdata = get_node_data($hostDN, array("hwaddress", "hostname"));
             if ($macdata['hwaddress'] == "") {
                 $nomac = 1;
                 echo "F&uuml;r den Gruppen-Rechner <b>" . $macdata['hostname'] . "</b> ist keine MAC Adresse eingetragen <br>\n\t\t\t\t\t\t\t\t\tDas PXE Bootmen&uuml; f&uuml;r die Gruppe wird nicht angelegt. <br>\n\t\t\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t\t\tTragen Sie zuerst bei Rechner <b>" . $macdata['hostname'] . "</b> eine MAC ein!<br><br>";
             }
         }
     }
     if (count($members) == 1) {
         $macdata = get_node_data($members['member'], array("hwaddress"));
         if ($macdata['hwaddress'] == "") {
             $nomac = 1;
             echo "F&uuml;r den Gruppen-Rechner <b>" . $macdata['hostname'] . "</b> ist keine MAC Adresse eingetragen <br>\n\t\t\t\t\t\t\t\tDas PXE Bootmen&uuml; f&uuml;r die Gruppe wird nicht angelegt. <br>\n\t\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t\tTragen Sie zuerst bei Rechner <b>" . $macdata['hostname'] . "</b> eine MAC ein!<br><br>";
         }
     }
 }
 $brothers = get_pxeconfigs($targetDN, array("cn"));
 $brother = 0;
 foreach ($brothers as $item) {
     if ($item['cn'] == $pxecn) {
         $mesg = "Es existiert bereits ein PXE Boot Men&uuml; mit dem eingegebenen Namen!<br>\n\t\t\t\t\t\t\t\tBitte geben Sie einen anderen Namen ein.<br><br>";
         $url = "pxe.php?dn=" . $pxeDN . "&mnr=" . $mnr . "&sbmnr=" . $sbmnr . "&mcnr=" . $mcnr;
         $brother = 1;
         break;
     }
 }
 if ($brother == 0 && $nomac == 0) {
     $exptargetdn = ldap_explode_dn($targetDN, 1);
     $target = $exptargetdn[0];
     $targettype = $exptargetdn[1];
     $newpxeDN = "cn=" . $pxecn . "," . $targetDN;
     print_r($newpxeDN);
function check_timerange_pxe($pxeday, $pxebeg, $pxeend, $nodeDN, $excepttimerange)
{
    global $ds, $suffix, $auDN, $ldapError;
    $brothers = get_pxeconfigs($nodeDN, array("timerange"));
    # keine Überschneidungen pro Spez.Ebene zulassen
    # print_r($brothers); echo "<br><br>";
    if (count($brothers) != 0) {
        $intersect = 0;
        foreach ($brothers as $item) {
            # Fall das Brother mehrere TimeRanges hat
            if (count($item['timerange']) > 1) {
                foreach ($item['timerange'] as $tr) {
                    if ($tr != $excepttimerange) {
                        $exptime = explode('_', $tr);
                        $bpxeday = $exptime[0];
                        $bpxebeg = $exptime[1];
                        $bpxeend = $exptime[2];
                        #echo "pxeday:"; print_r($pxeday); echo "<br>";
                        #echo "bpxeday:"; print_r($bpxeday); echo "<br>";
                        #echo "pxebeg:"; print_r($pxebeg); echo "<br>";
                        #echo "bpxebeg:"; print_r($bpxebeg); echo "<br>";
                        #echo "pxeend:"; print_r($pxeend); echo "<br>";
                        #echo "bpxeend:"; print_r($bpxeend); echo "<br>";
                        if ($pxeday == $bpxeday) {
                            if ($pxebeg > $bpxeend || $pxeend < $bpxebeg) {
                                # keine Überschneidung in der Uhrzeit
                            } else {
                                # Uhrzeit Überschneidung
                                $intersect = 1;
                                $intersecttr = $bpxeday . "_" . $bpxebeg . "_" . $bpxeend;
                                break;
                            }
                        }
                    }
                }
            } elseif (count($item['timerange']) == 1) {
                if ($item['timerange'] != $excepttimerange) {
                    $exptime = explode('_', $item['timerange']);
                    $bpxeday = $exptime[0];
                    $bpxebeg = $exptime[1];
                    $bpxeend = $exptime[2];
                    #echo "pxeday:"; print_r($pxeday); echo "<br>";
                    #echo "bpxeday:"; print_r($bpxeday); echo "<br>";
                    #echo "pxebeg:"; print_r($pxebeg); echo "<br>";
                    #echo "bpxebeg:"; print_r($bpxebeg); echo "<br>";
                    #echo "pxeend:"; print_r($pxeend); echo "<br>";
                    #echo "bmcend:"; print_r($bpxeend); echo "<br>";
                    if ($pxeday == $bpxeday) {
                        if ($pxebeg > $bpxeend || $pxeend < $bpxebeg) {
                            # keine Überschneidung in der Uhrzeit
                        } else {
                            # Uhrzeit Überschneidung
                            $intersect = 1;
                            $intersecttr = $bpxeday . "_" . $bpxebeg . "_" . $bpxeend;
                            break;
                        }
                    }
                }
            }
        }
        #echo "intersect: "; print_r($intersect); echo "<br>";
        if ($intersect == 1) {
            echo "<b>[" . $pxeday . "_" . $pxebeg . "_" . $pxeend . "]</b> &uuml;berschneidet sich mit der \n\t\t\t\t\tbereits existierende <b>Time Range [" . $intersecttr . "]</b> !<br><br>";
            return 0;
        } else {
            return 1;
        }
    } else {
        return 1;
    }
}
function delete_host($hostDN)
{
    global $ds, $suffix, $auDN, $ldapError;
    $hostdata = get_node_data($hostDN, array("hwaddress", "ipaddress"));
    # IP Adresse freigeben
    if ($hostdata['ipaddress'] != "") {
        delete_ip_host($hostDN, $auDN);
    }
    if (dive_into_tree_del($hostDN, "")) {
        # alle DN Objekte in denen Rechner stand ebenfalls löschen
        # Member in Groups
        $groups = get_groups_member($auDN, array("dn", "cn"), $hostDN);
        # echo "Rechner aus den Gruppen entfernen: <br>"; print_r($groups); echo "<br>";
        if (count($groups) != 0) {
            $entrydel['member'] = $hostDN;
            foreach ($groups as $group) {
                echo "Entferne gel&ouml;schten Rechner aus Gruppe <b>" . $group['cn'] . "</b> <br>";
                $resultG = ldap_mod_del($ds, $group['dn'], $entrydel);
                # Filename in Gruppen-PXEs
                $pxes = get_pxeconfigs($group['dn'], array("dn", "cn"));
                if (count($pxes) != 0 && $hostdata['hwaddress'] != "") {
                    foreach ($pxes as $pxe) {
                        $delfilename['filename'] = "01-" . $hostdata['hwaddress'];
                        $resultP = ldap_mod_del($ds, $pxe['dn'], $delfilename);
                        echo "Entferne MAC des gel&ouml;schten Rechners aus Gruppen-PXE <b>" . $pxe['cn'] . "</b> <br>";
                    }
                }
            }
        }
        # DHCP, DNS, RBS Server ... noch todo
        # ...
        return 1;
    } else {
        return 0;
    }
}
# 3. Dateiname und evtl. Pfad des Templates für die Webseite
$webseite = "pxeconfig_default.dwt";
include 'rbs_header.inc.php';
###################################################################################
$mnr = -1;
$sbmnr = -1;
$mcnr = -1;
$mnr = $_GET['mnr'];
$sbmnr = $_GET['sbmnr'];
# Menuleisten erstellen
createMainMenu($rollen, $mainnr);
createRBSMenu($rollen, $mnr, $auDN, $sbmnr);
###################################################################################
$rbsDN = $_GET['rbsdn'];
$template->assign(array("PXEDN" => "", "PXECN" => "Noch kein Default PXE Boot Men&uuml; angelegt", "TRANGES" => "", "RBS" => "", "CN" => ""));
$pxe_array = get_pxeconfigs($rbsDN, array("dn", "cn", "timerange", "rbservicedn"));
# print_r($pxe_array);
$template->define_dynamic("Pxeconf", "Webseite");
for ($i = 0; $i < count($pxe_array); $i++) {
    # Timerange Komponenten
    $trange = "";
    if (count($pxe_array[$i]['timerange']) > 1) {
        foreach ($pxe_array[$i]['timerange'] as $tr) {
            $exptime = array_merge(explode('_', $tr), $pxe_array[$i]['cn']);
            $timeranges[$i][] = $exptime;
            # Für grafische Wo-Ansicht
            if ($exptime[0] == "X") {
                $exptime[0] = "t&auml;glich";
            }
            # if ($exptime[1] == "X" && $exptime[2] == "X"){$exptime[1] = ""; $exptime[2]= "";}
            $trange .= $exptime[0] . ", von " . $exptime[1] . ":00 bis " . $exptime[2] . ":59 /  ";