diff options
Diffstat (limited to 'ldap-site-mngmt/webinterface/computers/pxe_change.php')
-rw-r--r-- | ldap-site-mngmt/webinterface/computers/pxe_change.php | 437 |
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ändert<br><br>"; + $pxeDN = $newpxeDN; + }else{ + $mesg = "Fehler beim ä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ü komplett löschen<br><br>"; + echo "Wollen Sie das PXE Boot Menü <b>".$oldpxecn."</b> wirklich lö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öschen' class='small_loginform_button'><br><br> + </form> + <form action='".$url."' method='post'> + Falls, nein:<br><br> + <input type='Submit' name='apply' value='zurü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ändert<br><br>"; + }else{ + $mesg = "Fehler beim ä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ü, das sich mit der eingegebenen Time Range + ü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ä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 "Ändern: "; print_r($entrymodtr); echo "<br>"; + if($result = ldap_mod_replace($ds,$pxeDN,$entrymodtr)){ + $mesg = "TimeRanges erfolgreich geändert<br><br>"; + }else{ + $mesg = "Fehler beim ä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öschen: "; print_r($entrydeltr); echo "<br>"; + if($result = ldap_mod_del($ds,$pxeDN,$entrydeltr)){ + $mesg = "TimeRanges erfolgreich gelöscht<br><br>"; + }else{ + $mesg = "Fehler beim löschen der TimeRanges!<br><br>"; + } +}elseif(count($deltr) != 0 && $modtr == 1){ + echo "Nur Ändern (gleichzeitig Löschen und Ä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ätzliche TimeRange erfolgreich eingetragen<br><br>"; + }else{ + $mesg = "Fehler beim eintragen der zusätzlichen TimeRange!<br><br>"; + } + }else{ + $mesg = "Es existiert bereits ein PXE Boot Menü, das sich mit der eingegebenen Time Range + ü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ü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 "Ändern: "; print_r($filemod); echo "<br>"; + if(ldap_mod_replace($ds,$pxeDN,$filemod)){ + $mesg = "PXE Dateiname(n) erfolgreich geändert<br><br>"; + }else{ + $mesg = "Fehler beim ändern des(r) PXE Dateinamens!<br><br>"; + } + $modfi = 0; +} +# dann löschen +if ($delfi == 1){ + echo "Löschen: "; print_r($filedel); echo "<br>"; + if(ldap_mod_del($ds,$pxeDN,$filedel)){ + $mesg = "PXE Dateiname(n) erfolgreich gelöscht<br><br>"; + }else{ + $mesg = "Fehler beim löschen des PXE Dateinamens !<br><br>"; + } + $delfi = 0; +} + +} + +# PXE Dateiname neu anlegen +if ($newfilename == ""){ +} +if ($newfilename != ""){ + echo "PXE Dateiname hinzufü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 "ä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ö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ü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 |