diff options
Diffstat (limited to 'ldap-site-mngmt/webinterface/rbs/pxe_copy.php')
-rw-r--r-- | ldap-site-mngmt/webinterface/rbs/pxe_copy.php | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/ldap-site-mngmt/webinterface/rbs/pxe_copy.php b/ldap-site-mngmt/webinterface/rbs/pxe_copy.php new file mode 100644 index 00000000..92e6ba0b --- /dev/null +++ b/ldap-site-mngmt/webinterface/rbs/pxe_copy.php @@ -0,0 +1,189 @@ +<?php +include('../standard_header.inc.php'); + +$pxeDN = $_POST['pxedn']; +$pxecn = "PXE_".$_POST['pxecncp']; +$oldpxecn = "PXE_".$_POST['oldpxecncp']; + +$deltr = $_POST['deltr']; + +$oldpxeday = $_POST['oldpxedaycp']; $oldpxeday = htmlentities($oldpxeday); +$oldpxebeg = $_POST['oldpxebegcp']; $oldpxebeg = htmlentities($oldpxebeg); +$oldpxeend = $_POST['oldpxeendcp']; $oldpxeend = htmlentities($oldpxeend); + +$nodeDN = $_POST['nodedn']; +$mnr = $_POST['mnr']; +$sbmnr = $_POST['sbmnr']; +$mcnr = $_POST['mcnr']; + +$copytargets = $_POST['copytargets']; +#print_r($copytargets); echo "<br>"; +$n = array_keys($copytargets,'none'); +#print_r($n); echo "<br>"; +for ($i=0; $i<count($n); $i++){ + $match = array_search('none',$copytargets); + array_splice($copytargets, $match, 1); +} +#print_r($copytargets); echo "<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>"; + +if ( $pxecn != ""){ + + # Formulareingaben anpassen + $exppxe = explode(" ",$pxecn); + foreach ($exppxe as $word){$expuc[] = ucfirst($word);} + $pxecn = implode(" ",$expuc); + $pxecn = preg_replace ( '/\s+([0-9A-Z])/', '$1', $pxecn); + + $nomac = 0; + + if (count($copytargets) != 0){ + foreach ($copytargets as $targetDN){ + + $exptargetdn = ldap_explode_dn($targetDN, 1); + $targetcn = $exptargetdn[0]; + $targettype = $exptargetdn[1]; + + # falls Target keine MAC hat dann kann keine PXE angelegt werden + if ($targettype == "computers"){ + $macdata = get_node_data($targetDN, array("hwaddress")); + if ($macdata['hwaddress'] == ""){ + $nomac = 1; + echo "Für den Ziel-Rechner ist keine MAC Adresse eingetragen <br> + Das PXE Bootmenü wird nicht angelegt. <br> + <br> + Tragen Sie zuerst eine MAC ein!<br><br>"; + } + } + if ($targettype == "groups"){ + $members = get_node_data($targetDN, array("member")); + if (count($members) > 1){ + foreach ($members['member'] as $hostDN){ + $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> + Das PXE Bootmenü für die Gruppe wird nicht angelegt. <br> + <br> + Tragen 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> + Das PXE Bootmenü für die Gruppe wird nicht angelegt. <br> + <br> + Tragen 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> + Bitte 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]; + + $oldpxetimerange = $oldpxeday."_".$oldpxebeg."_".$oldpxeend; + $newpxeDN = "cn=".$pxecn.",".$targetDN; + print_r($newpxeDN); echo "<br>"; + + if (dive_into_tree_cp($pxeDN,$newpxeDN)){ + + $delfileuri = 0; + # Filename anpassen + if ($targettype == "rbs"){ + $entrymod ['filename'] = "default"; + } + if ($targettype == "computers"){ + $macdata = get_node_data($targetDN, array("hwaddress")); + $entrymod ['filename'] = "01-".$macdata['hwaddress']; + $delfileuri = 1; + #$entrymod ['fileuri'] = "01-".$macdata['hwaddress'].".tgz"; + } + if ($targettype == "groups"){ + $members = get_node_data($targetDN, array("member")); + if (count($members) != 0){ + foreach ($members['member'] as $hostDN){ + $macdata = get_node_data($hostDN, array("hwaddress")); + $entrymod ['filename'][] = "01-".$macdata['hwaddress']; + $delfileuri = 1; + #$entrymod ['fileuri'] = $target.".tgz"; + } + } + } + if(ldap_mod_replace($ds,$newpxeDN,$entrymod)){ + if($deltr == 1){ + # Timeranges und FileURI im neuen Objekt löschen + $entrydel ['timerange'] = array(); + if ($delfileuri == 1){ + $entrydel ['fileuri'] = array(); + } + if ( ldap_mod_del($ds,$newpxeDN,$entrydel) ){ + $mesg .= "<br>PXE Boot Menü erfolgreich nach ".$target[1]." kopiert<br>"; + } + else{ + ldap_delete($ds,$newpxeDN); + $mesg .= "<br>Fehler beim kopieren des PXE Boot Menüs nach <b>".$target[1]."</b><br>"; + } + } + } + else{ + ldap_delete($ds,$newpxeDN); + $mesg .= "<br>Fehler beim kopieren des PXE Boot Menüs nach <b>".$target[1]."</b><br>"; + } + } + else{ + $mesg .= "<br>Fehler beim kopieren des PXE Boot Menüs nach <b>".$target[1]."</b><br>"; + } + } + } + } + else{ + $mesg .= "<br>Sie haben kein Ziel angegeben!<br>"; + } +} + +elseif ( $pxecn == ""){ + + $mesg = "Sie haben den Namen des neuen PXE Boot Menüs nicht angegeben. Dieser ist aber ein notwendiges Attribut.<br> + Bitte geben Sie ihn an.<br><br>"; + $url = "pxe.php?dn=".$pxeDN."&mnr=".$mnr."&sbmnr=".$sbmnr."&mcnr=".$mcnr; +} + + + +$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 |