$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} </td>\n\t\t\t\t\t\t<td width='30%' class='tab_d'>{$trange} </td>\n\t\t\t\t\t\t<td class='tab_d'> </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ä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ä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äglich"; } # if ($exptime[1] == "X" && $exptime[2] == "X"){$exptime[1] = ""; $exptime[2]= "";}
$macdata = get_node_data($hostDN, array("hwaddress", "hostname")); if ($macdata['hwaddress'] == "") { $nomac = 1; echo "Fü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ü fü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ü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ü fü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ü 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> ü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ö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ö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ü 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äglich"; } # if ($exptime[1] == "X" && $exptime[2] == "X"){$exptime[1] = ""; $exptime[2]= "";} $trange .= $exptime[0] . ", von " . $exptime[1] . ":00 bis " . $exptime[2] . ":59 / ";