summaryrefslogtreecommitdiffstats
path: root/ldap-site-mngmt/webinterface/computers/pxe_change.php
diff options
context:
space:
mode:
Diffstat (limited to 'ldap-site-mngmt/webinterface/computers/pxe_change.php')
-rw-r--r--ldap-site-mngmt/webinterface/computers/pxe_change.php437
1 files changed, 437 insertions, 0 deletions
diff --git a/ldap-site-mngmt/webinterface/computers/pxe_change.php b/ldap-site-mngmt/webinterface/computers/pxe_change.php
new file mode 100644
index 00000000..b3fcd4fa
--- /dev/null
+++ b/ldap-site-mngmt/webinterface/computers/pxe_change.php
@@ -0,0 +1,437 @@
+<?php
+include('../standard_header.inc.php');
+
+$pxecn = "PXE_".$_POST['pxecn'];
+
+$pxeday = $_POST['pxeday'];
+$pxebeg = $_POST['pxebeg'];
+$pxeend = $_POST['pxeend'];
+foreach (array_keys($pxeday) as $key){
+ $pxeday[$key] = htmlentities($pxeday[$key]);
+}
+foreach (array_keys($pxebeg) as $key){
+ $pxebeg[$key] = htmlentities($pxebeg[$key]);
+}
+foreach (array_keys($pxeend) as $key){
+ $pxeend[$key] = htmlentities($pxeend[$key]);
+}
+
+$deltr = $_POST['deltr'];
+
+$newpxeday = $_POST['newpxeday']; $newpxeday = htmlentities($newpxeday);
+$newpxebeg = $_POST['newpxebeg']; $newpxebeg = htmlentities($newpxebeg);
+$newpxeend = $_POST['newpxeend']; $newpxeend = htmlentities($newpxeend);
+
+$oldpxeday = $_POST['oldpxeday'];
+$oldpxebeg = $_POST['oldpxebeg'];
+$oldpxeend = $_POST['oldpxeend'];
+
+$pxeDN = $_POST['pxedn'];
+$oldpxecn = "PXE_".$_POST['oldpxecn'];
+
+$rbs = $_POST['rbs'];
+$filename = $_POST['filename'];
+if (count($filename) != 0){
+ foreach (array_keys($filename) as $key){
+ $file[$key] = htmlentities($filename[$key]);
+ }
+}
+$oldfilename = $_POST['oldfilename'];
+if (count($oldfilename) != 0){
+ foreach (array_keys($oldfilename) as $key){
+ $oldfile[$key] = htmlentities($oldfilename[$key]);
+ }
+}
+$newfilename = $_POST['newfilename']; $newfilename = htmlentities($newfilename);
+
+
+$nodeDN = $_POST['nodedn'];
+$mnr = $_POST['mnr'];
+$sbmnr = $_POST['sbmnr'];
+$mcnr = $_POST['mcnr'];
+
+# sonstige Attribute
+$attribs = $_POST['attribs'];
+if (count($attribs) != 0){
+ foreach (array_keys($attribs) as $key){
+ $atts[$key] = htmlentities($attribs[$key]);
+ }
+}
+#print_r($atts); echo "<br><br>";
+$oldattribs = $_POST['oldattribs'];
+if (count($oldattribs) != 0){
+ foreach (array_keys($oldattribs) as $key){
+ $oldatts[$key] = htmlentities($oldattribs[$key]);
+ }
+}
+#print_r($oldatts); echo "<br><br>";
+
+
+$seconds = 2;
+$url = "pxe.php?dn=".$pxeDN."&mnr=".$mnr."&sbmnr=".$sbmnr."&mcnr=".$mcnr;
+
+echo "
+<html>
+<head>
+ <title>Computers Management</title>
+ <link rel='stylesheet' href='../styles.css' type='text/css'>
+</head>
+<body>
+<table border='0' cellpadding='30' cellspacing='0'>
+<tr><td>";
+
+##############################################
+# PXE CN (DN)
+
+if ( $oldpxecn == $pxecn ){
+ # $mesg = "keine Aenderung<br>";
+}
+
+if ( $oldpxecn != "" && $pxecn != "" && $oldpxecn != $pxecn ){
+ echo "PXE Name aendern<br>";
+ # hier noch Syntaxcheck
+ # Formulareingaben anpassen
+ $exppxe = explode(" ",$pxecn);
+ foreach ($exppxe as $word){$expuc[] = ucfirst($word);}
+ $pxecn = implode(" ",$expuc);
+ $pxecn = preg_replace ( '/\s+([0-9A-Z])/', '$1', $pxecn);
+
+
+ $newpxeDN = "cn=".$pxecn.",".$nodeDN;
+ print_r($newpxeDN); echo "<br><br>";
+
+ if(modify_pxe_dn($pxeDN, $newpxeDN)){
+ $mesg = "PXE Name erfolgreich ge&auml;ndert<br><br>";
+ $pxeDN = $newpxeDN;
+ }else{
+ $mesg = "Fehler beim &auml;ndern des PXE Namen!<br><br>";
+ }
+
+
+ # newsubmenu holen...
+ $url = "pxe.php?dn=".$newpxeDN."&mnr=".$mnr."&sbmnr=".$sbmnr."&mcnr=".$mcnr;
+}
+
+if ( $oldpxecn != "" && $pxecn == "" ){
+ echo "PXE Name loeschen!<br>
+ Dieses ist Teil des DN, Sie werden das PXE Boot Men&uuml; komplett l&ouml;schen<br><br>";
+ echo "Wollen Sie das PXE Boot Men&uuml; <b>".$oldpxecn."</b> wirklich l&ouml;schen?<br><br>
+ <form action='pxe_delete.php' method='post'>
+ Falls ja:<br><br>
+ <input type='hidden' name='dn' value='".$pxeDN."'>
+ <input type='hidden' name='name' value='".$oldpxecn."'>
+ <input type='Submit' name='apply' value='l&ouml;schen' class='small_loginform_button'><br><br>
+ </form>
+ <form action='".$url."' method='post'>
+ Falls, nein:<br><br>
+ <input type='Submit' name='apply' value='zur&uuml;ck' class='small_loginform_button'>
+ </form>";
+ $seconds = 600;
+}
+
+##########################################
+# Remote Boot Dienst
+
+if ($rbs != "none"){
+ $exp = explode(',',$rbs);
+ $exprbscn = explode('=',$exp[0]);
+ $rbscn = $exprbscn[1];
+ $exprbsau = explode('=',$exp[2]);
+ $rbsau = $exprbsau[1];
+
+ $entryrbs ['rbservicedn'] = $rbs;
+ if ($result = ldap_mod_replace($ds,$pxeDN,$entryrbs)){
+ $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>";
+ }
+}
+
+
+##########################################
+# bereits vorhandene TimeRange(s) bearbeiten
+
+$entrymodtr = array();
+$modtr = 0;
+# TimeRanges zusammensetzen
+# $t = 0; # Laufvariable für $entrymodtr, da nicht jede Timerange ok sein muss
+for ($i=0; $i<count($pxeday); $i++){
+
+$oldpxetimerange = $oldpxeday[$i]."_".$oldpxebeg[$i]."_".$oldpxeend[$i];
+
+if ( ($pxebeg[$i] <= $pxeend[$i]) && ( ($pxeday[$i] != $oldpxeday[$i] && $pxeday[$i] != "") || ($pxebeg[$i] != $oldpxebeg[$i] && $pxebeg[$i] != "") || ($pxeend[$i] != $oldpxeend[$i] && $pxeend[$i] != "")) ){
+
+
+ # TimeRange Syntax checken
+ $syntax = new Syntaxcheck;
+ if ($syntax->check_timerange_syntax($pxeday[$i],$pxebeg[$i],$pxeend[$i])){
+
+ # in Grossbuchstaben
+ if (preg_match("/([a-z]+)/",$pxeday[$i])){$pxeday[$i] = strtoupper($pxeday[$i]);}
+ if (preg_match("/([a-z]+)/",$pxebeg[$i])){$pxebeg[$i] = strtoupper($pxebeg[$i]);}
+ if (preg_match("/([a-z]+)/",$pxeend[$i])){$pxeend[$i] = strtoupper($pxeend[$i]);}
+
+ # führende Nullen weg
+ $pxebeg[$i] = preg_replace ( '/0([0-9])/', '$1', $pxebeg[$i]);
+ $pxeend[$i] = preg_replace ( '/0([0-9])/', '$1', $pxeend[$i]);
+
+ # TimeRange auf Überschneidung mit vorhandenen checken außer mit eigener alter TR da diese
+ # ja geändert werden soll
+ if(check_timerange_pxe($pxeday[$i],$pxebeg[$i],$pxeend[$i],$nodeDN,$oldpxetimerange)){
+
+ $pxetimerange = $pxeday[$i]."_".$pxebeg[$i]."_".$pxeend[$i];
+ $entrymodtr ['timerange'][$i] = $pxetimerange;
+ $modtr = 1;
+
+ }
+ else{
+ $mesg = "Es existiert bereits ein PXE Boot Men&uuml;, das sich mit der eingegebenen Time Range
+ &uuml;berschneidet!<br>
+ Bitte geben Sie eine andere Time Range ein.<br><br>";
+ $entrymodtr ['timerange'][$i] = $oldpxetimerange;
+ }
+ }
+ else{
+ $mesg = "Falsche Syntax in der Timerange-Eingabe!<br>
+ Bitte geben Sie die erneut Time Range ein.<br><br>";
+ $entrymodtr ['timerange'][$i] = $oldpxetimerange;
+ }
+
+}
+
+
+elseif ( $pxeday[$i] == "" || $pxebeg[$i] == "" || $pxeend[$i] == "" || $pxebeg[$i] > $pxeend[$i]){
+
+ $mesg = "Sie haben die Time Range <b>Nr.".$i."</b> nicht vollst&auml;ndig angegeben. Diese ist aber ein notwendiges Attribut.<br>
+ Diese Time Range wird nicht bearbeitet.<br><br>";
+ $entrymodtr ['timerange'][$i] = $oldpxetimerange;
+}
+
+else{$entrymodtr ['timerange'][$i] = $oldpxetimerange;}
+} # Ende for-Schleife für jede Timerange
+# jetzt noch alle gesammelten Änderungen Durchführen ...
+if ($modtr == 1){
+ # erst ändern
+ echo "&Auml;ndern: "; print_r($entrymodtr); echo "<br>";
+ if($result = ldap_mod_replace($ds,$pxeDN,$entrymodtr)){
+ $mesg = "TimeRanges erfolgreich ge&auml;ndert<br><br>";
+ }else{
+ $mesg = "Fehler beim &auml;ndern der TimeRanges!<br><br>";
+ }
+}
+
+
+if ( count($deltr) != 0 && $modtr == 0 ){
+ # Time Range löschen
+ $j = 0;
+ foreach ($deltr as $delrange){
+ $entrydeltr ['timerange'][$j] = $delrange;
+ $j++;
+ }
+ # dann löschen
+ echo "L&ouml;schen: "; print_r($entrydeltr); echo "<br>";
+ if($result = ldap_mod_del($ds,$pxeDN,$entrydeltr)){
+ $mesg = "TimeRanges erfolgreich gel&ouml;scht<br><br>";
+ }else{
+ $mesg = "Fehler beim l&ouml;schen der TimeRanges!<br><br>";
+ }
+}elseif(count($deltr) != 0 && $modtr == 1){
+ echo "Nur &Auml;ndern (gleichzeitig L&ouml;schen und &Auml;ndern geht nicht)";
+}
+
+#####################################
+# TimeRange hinzufügen
+
+if ( $newpxeday != "" && $newpxebeg != "" && $newpxeend != "" && $newpxebeg <= $newpxeend ){
+
+ # TimeRange Syntax checken
+ $syntax = new Syntaxcheck;
+ if ($syntax->check_timerange_syntax($newpxeday,$newpxebeg,$newpxeend)){
+
+ # in Grossbuchstaben
+ if (preg_match("/([a-z]+)/",$newpxeday)){$newpxeday = strtoupper($newpxeday);}
+ if (preg_match("/([a-z]+)/",$newpxebeg)){$newpxebeg = strtoupper($newpxebeg);}
+ if (preg_match("/([a-z]+)/",$newpxeend)){$newpxeend = strtoupper($newpxeend);}
+
+ # führende Nullen weg
+ $newpxebeg = preg_replace ( '/0([0-9])/', '$1', $newpxebeg);
+ $newpxeend = preg_replace ( '/0([0-9])/', '$1', $newpxeend);
+
+ # TimeRange auf Überschneidung mit vorhandenen checken
+ if(check_timerange_pxe($newpxeday,$newpxebeg,$newpxeend,$nodeDN,"")){
+
+ $newpxetimerange = $newpxeday."_".$newpxebeg."_".$newpxeend;
+ $entrytr ['timerange'] = $newpxetimerange;
+ if($result = ldap_mod_add($ds,$pxeDN,$entrytr)){
+ $mesg = "Zus&auml;tzliche TimeRange erfolgreich eingetragen<br><br>";
+ }else{
+ $mesg = "Fehler beim eintragen der zus&auml;tzlichen TimeRange!<br><br>";
+ }
+ }else{
+ $mesg = "Es existiert bereits ein PXE Boot Men&uuml;, das sich mit der eingegebenen Time Range
+ &uuml;berschneidet!<br>
+ Bitte geben Sie eine andere Time Range ein.<br><br>";
+ }
+ }else{
+ $mesg = "Falsche Syntax in der Timerange-Eingabe!<br>
+ Bitte geben Sie die erneut Time Range ein.<br><br>";
+ }
+}
+
+
+
+#####################################
+# PXE Filename(s)
+
+$filemod = array();
+$modfi = 0;
+$filedel = array();
+$delfi = 0;
+$j = 0;
+
+if (count($file) != 0){
+
+for ($i=0; $i<count($file); $i++){
+
+ if ( $oldfile[$i] == $file[$i] ){
+ $filemod ['filename'][$i] = $oldfile[$i];
+ # $mesg = "keine Aenderung<br>";
+ }
+
+ if ( $oldfile[$i] != "" && $file[$i] != "" && $oldfile[$i] != $file[$i] ){
+ echo "PXE Dateinamen aendern<br>
+ Vorsicht dies kann eine nicht verwendbare PXE Datei zur Folge haben!<br><br>";
+ # hier noch Syntaxcheck
+ $filemod ['filename'][$i] = $file[$i];
+ $modfi = 1;
+ }
+
+ if ( $oldfile[$i] != "" && $file[$i] == "" ){
+ echo "PXE Dateinamen loeschen!<br>
+ Achtung: aus ihren PXE Daten wird keine PXE Datei mehr generiert.<br>
+ Sie sind solange nicht mehr f&uuml;r den PXE Bootvorgang verwendbar bis Sie einen neuen Dateinamen anlegen!<br><br>";
+ $filemod ['filename'][$i] = $oldfile[$i];
+ $filedel ['filename'][$j] = $oldfile[$i];
+ $j++;
+ $delfi = 1;
+ $seconds = 4;
+ }
+}
+#erst ändern
+if ($modfi == 1){
+ echo "&Auml;ndern: "; print_r($filemod); echo "<br>";
+ if(ldap_mod_replace($ds,$pxeDN,$filemod)){
+ $mesg = "PXE Dateiname(n) erfolgreich ge&auml;ndert<br><br>";
+ }else{
+ $mesg = "Fehler beim &auml;ndern des(r) PXE Dateinamens!<br><br>";
+ }
+ $modfi = 0;
+}
+# dann löschen
+if ($delfi == 1){
+ echo "L&ouml;schen: "; print_r($filedel); echo "<br>";
+ if(ldap_mod_del($ds,$pxeDN,$filedel)){
+ $mesg = "PXE Dateiname(n) erfolgreich gel&ouml;scht<br><br>";
+ }else{
+ $mesg = "Fehler beim l&ouml;schen des PXE Dateinamens !<br><br>";
+ }
+ $delfi = 0;
+}
+
+}
+
+# PXE Dateiname neu anlegen
+if ($newfilename == ""){
+}
+if ($newfilename != ""){
+ echo "PXE Dateiname hinzuf&uuml;gen";
+ $fileadd ['filename'] = $newfilename;
+ if(ldap_mod_add($ds,$pxeDN,$fileadd)){
+ $mesg = "PXE Dateiname <b>".$newfilename."</b> erfolgreich angelegt<br><br>";
+ }else{
+ $mesg = "Fehler beim anlegen des PXE Dateinamens ".$newfilename." !<br><br>";
+ }
+}
+
+
+
+##################################################################
+# Restliche Attribute
+
+$entryadd = array();
+$entrymod = array();
+$entrydel = array();
+
+foreach (array_keys($atts) as $key){
+
+ if ( $oldatts[$key] == $atts[$key] ){
+
+ }
+ if ( $oldatts[$key] == "" && $atts[$key] != "" ){
+ # hier noch Syntaxcheck
+ $entryadd[$key] = $atts[$key];
+ }
+ if ( $oldatts[$key] != "" && $atts[$key] != "" && $oldatts[$key] != $atts[$key] ){
+ # hier noch Syntaxcheck
+ $entrymod[$key] = $atts[$key];
+ }
+ if ( $oldatts[$key] != "" && $atts[$key] == "" ){
+ # hier noch Syntaxcheck
+ $entrydel[$key] = $oldatts[$key];
+ }
+}
+
+#print_r($entryadd); echo "<br>";
+#print_r($entrymod); echo "<br>";
+#print_r($entrydel); echo "<br>";
+
+
+if (count($entryadd) != 0 ){
+ #print_r($entryadd); echo "<br>";
+ #echo "neu anlegen<br>";
+ foreach (array_keys($entryadd) as $key){
+ $addatts .= "<b>".$key."</b>,";
+ }
+ if(ldap_mod_add($ds,$pxeDN,$entryadd)){
+ $mesg = "Attribute ".$addatts." erfolgreich eingetragen<br><br>";
+ }else{
+ $mesg = "Fehler beim eintragen der Attribute ".$addatts."<br><br>";
+ }
+}
+
+if (count($entrymod) != 0 ){
+ #print_r($entrymod); echo "<br>";
+ #echo "&auml;ndern<br>";
+ foreach (array_keys($entrymod) as $key){
+ $modatts .= "<b>".$key."</b>,";
+ }
+ if(ldap_mod_replace($ds,$pxeDN,$entrymod)){
+ $mesg = "Attribute ".$modatts." erfolgreich geaendert<br><br>";
+ }else{
+ $mesg = "Fehler beim aendern der Attribute ".$modatts."<br><br>";
+ }
+}
+
+if (count($entrydel) != 0 ){
+ #print_r($entrydel); echo "<br>";
+ #echo "l&ouml;schen<br>";
+ foreach (array_keys($entrydel) as $key){
+ $delatts .= "<b>".$key."</b>,";
+ }
+ if(ldap_mod_del($ds,$pxeDN,$entrydel)){
+ $mesg = "Attribute ".$delatts." erfolgreich geloescht<br><br>";
+ }else{
+ $mesg = "Fehler beim loeschen der Attribute ".$delatts."<br><br>";
+ }
+}
+
+
+
+
+$mesg .= "<br>Sie werden automatisch auf die vorherige Seite zur&uuml;ckgeleitet. <br>
+ Falls nicht, klicken Sie hier <a href=".$url." style='publink'>back</a>";
+redirect($seconds, $url, $mesg, $addSessionId = TRUE);
+
+echo "</td></tr></table></body>
+</html>";
+?> \ No newline at end of file