summaryrefslogtreecommitdiffstats
path: root/admin/WebConsole
diff options
context:
space:
mode:
authorIrina Gómez <irinagomez@us.es>2019-02-12 10:44:38 +0100
committerIrina Gómez <irinagomez@us.es>2019-02-12 10:44:38 +0100
commit1c74bf58d1ae23135cd50f00613b643d15b58ac9 (patch)
treed6447eb5fd5e33991a5d6acdfd146eef91d976b2 /admin/WebConsole
parente9601e1f70519e9e380e6198e29df2f695ffbd94 (diff)
#802 NetBootAvanzado: Se muestran las plantillas BIOS y UEFI. Se utiliza el script setclientmode para crear los archivos PXE de los equipos
Diffstat (limited to 'admin/WebConsole')
-rw-r--r--admin/WebConsole/gestores/gestor_pxe_grub4dos.php62
-rw-r--r--admin/WebConsole/jscripts/boot_grub4dos.js37
-rw-r--r--admin/WebConsole/principal/boot_grub4dos.php144
-rw-r--r--admin/WebConsole/principal/boot_grub4dos_tabla.php4
4 files changed, 109 insertions, 138 deletions
diff --git a/admin/WebConsole/gestores/gestor_pxe_grub4dos.php b/admin/WebConsole/gestores/gestor_pxe_grub4dos.php
index 4992e1e2..08726cda 100644
--- a/admin/WebConsole/gestores/gestor_pxe_grub4dos.php
+++ b/admin/WebConsole/gestores/gestor_pxe_grub4dos.php
@@ -1,49 +1,31 @@
<?php
-include_once("../includes/ctrlacc.php");
-include_once("../clases/AdoPhp.php");
-include_once("../clases/XmlPhp.php");
-include_once("../clases/MenuContextual.php");
-include_once("../clases/SockHidra.php");
-include_once("../includes/constantes.php");
-include_once("../includes/comunes.php");
-include_once("../includes/CreaComando.php");
-include_once("../includes/tftputils.php");
-include_once("../idiomas/php/".$idioma."/aulas_".$idioma.".php");
-
-$cmd=CreaComando($cadenaconexion);
-if (!$cmd)
- Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
-//________________________________________________________________________________________________________
+// Version 1.1.1 - Se utiliza el script setclientmode para crear los archivos PXE (ticket #802)
+// Autor: Irina Gomez - ETSII Universidad de Sevilla
+// Fecha: 2019/02/12
+include_once("../includes/ctrlacc.php");
-echo "<html>";
-echo "<head>";
-echo "<meta http-equiv='Refresh' content='1;URL=../principal/boot.php?idambito=". $_GET['idaula'] ."&nombreambito=" . $_GET['nombreambito'] . "&litambito=" . $_GET['litambito'] . "'>";
-echo "<title> gestion de equipos </title>";
-echo "<base target='principal'>";
-echo "</head>";
-echo "<body>";
+// Datos para el acceso a mysql
+$strcn=explode(";",$cadenaconexion);
+$file=tempnam("/tmp",".server.cnf.");
$lista = explode(";",$_POST['listOfItems']);
foreach ($lista as $sublista) {
- if (! empty ($sublista)) {
- $elementos = explode("|",$sublista);
- $hostname=$elementos[1];
- $optboot=$elementos[0];
- createBootMode ($cmd, $optboot, $hostname, $idioma);
- }
-}
-echo " </body>";
-echo " </html> ";
+ if (! empty ($sublista)) {
+ // Creo fichero con datos para mysql
+ $gestor=fopen($file, "w");
+ fwrite($gestor, "USUARIO=".$strcn[1]."\nPASSWORD=".$strcn[2]."\n");
+ fwrite($gestor, "datasource=".$strcn[0]."\nCATALOG=".$strcn[3]);
+ fclose($gestor);
+ $elementos = explode("|",$sublista);
+ $hostname=$elementos[1];
+ $optboot=$elementos[0];
-function netmask2cidr($netmask) {
- $cidr = 0;
- foreach (explode('.', $netmask) as $number) {
- for (;$number> 0; $number = ($number <<1) % 256) {
- $cidr++;
- }
- }
- return $cidr;
+ // Llamamos al script setclientmode
+ shell_exec("/opt/opengnsys/bin/setclientmode $optboot $hostname 1 $file");
+ unlink($file);
+ }
}
-
+header("Location: ../principal/boot.php?idambito=". $_GET['idaula'] ."&nombreambito=" . $_GET['nombreambito'] . "&litambito=" . $_GET['litambito']);
+exit();
diff --git a/admin/WebConsole/jscripts/boot_grub4dos.js b/admin/WebConsole/jscripts/boot_grub4dos.js
index 7deffdf4..b4f6f9c3 100644
--- a/admin/WebConsole/jscripts/boot_grub4dos.js
+++ b/admin/WebConsole/jscripts/boot_grub4dos.js
@@ -8,6 +8,8 @@
// Este fichero implementa las funciones javascript del fichero boot_grub4dos.php
// *************************************************************************************************************************************************
//________________________________________________________________________________________________________
+// Se utiliza en los botones in y out de las columnas
+// Permite mover los equipos seleccionados desde una columna a otra
function move(fbox, tbox) {
var arrFbox = new Array();
var arrTbox = new Array();
@@ -50,27 +52,24 @@ no.text = arrTbox[c];
tbox[c] = no;
}
}
-
+// Se utiliza al enviar el formulario
+// Asigna como valor del campo listOfItems un listado
+// con las correspodendencias nombre plantilla - nombre equipo.
+// Version 1.1.1 - Se identifica plantilla y equipo como necesita el script setclienmode (#802)
function allSelect()
{
-var saveString = "";
-// seleccionamos cada uno de los select
-var input = document.getElementsByTagName('select');
-//alert(input.length);
-for(var i=0; i<input.length; i++){
-//if(inputs[i].getAttribute('type')=='button'){
-// your statements
-patron = "L";
-parm = input[i].name;
-//alert(parm);
-parm = parm.replace(patron,'');
-//alert(parm);
-for (j=0;j<input[i].length;j++)
+ var saveString = "";
+ // seleccionamos cada uno de los select
+ var input = document.getElementsByTagName('select');
+
+ for(var i=0; i<input.length; i++){
+
+ label = input[i].parentNode.id;
+
+ for (j=0;j<input[i].length;j++)
{
- //List.options[i].selected = true;
- saveString = saveString + parm + '|' + input[i].options[j].value + ';';
- //alert(saveString);
+ saveString = saveString + label + '|' + input[i].options[j].text + ';';
}
+ }
+ document.forms['myForm'].listOfItems.value = saveString;
}
-document.forms['myForm'].listOfItems.value = saveString;
-} \ No newline at end of file
diff --git a/admin/WebConsole/principal/boot_grub4dos.php b/admin/WebConsole/principal/boot_grub4dos.php
index e8a5a902..2bd04c09 100644
--- a/admin/WebConsole/principal/boot_grub4dos.php
+++ b/admin/WebConsole/principal/boot_grub4dos.php
@@ -1,4 +1,8 @@
<?php
+// Version 1.1.1 - Muestra las plantillas tipo BIOS y UEFI. Se incluyen algunos id para pasar los datos necesarios a serclientmode (#802).
+// Autor: Irina Gomez - ETSII Universidad de Sevilla.
+// Fecha: 2019/02/12
+
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
include_once("../clases/XmlPhp.php");
@@ -20,15 +24,12 @@ $nombreambito="";
$opcion=0;
$modo="";
-
-if (isset($_GET["litambito"])) $litambito=$_GET["litambito"]; // Recoge parametros
-if (isset($_GET["idambito"])) $idambito=$_GET["idambito"];
-if (isset($_GET["nombreambito"])) $nombreambito=$_GET["nombreambito"];
-if (isset($_POST["litambito"])) $litambito=$_POST["litambito"]; // Recoge parametros
-if (isset($_POST["idambito"])) $idambito=$_POST["idambito"];
-if (isset($_POST["nombreambito"])) $nombreambito=$_POST["nombreambito"];
-if (isset($_POST["opcion"])) $opcion=$_POST["opcion"];
-if (isset($_POST["modo"])) $modo=$_POST["modo"];
+if (isset($_REQUEST["litambito"])) $litambito=$_REQUEST["litambito"]; // Recoge parametros
+if (isset($_REQUEST["idambito"])) $idambito=$_REQUEST["idambito"];
+if (isset($_REQUEST["nombreambito"])) $nombreambito=$_REQUEST["nombreambito"];
+if (isset($_REQUEST["opcion"])) $opcion=$_REQUEST["opcion"];
+if (isset($_REQUEST["modo"])) $modo=$_REQUEST["modo"];
+if (empty($_SESSION["widcentro"])) $modo=1;
switch($litambito){
case "aulas":
@@ -38,14 +39,25 @@ switch($litambito){
$seleccion= "and grupoid=" . $idambito . "";
break;
}
+
//#########################################################################
// LEYENDO EL DIRECTORIO
-// /var/lib/tftboot/menu.lst/templates
+// /var/lib/tftboot/menu.lst/templates y /var/lib/tftpboot/grub/templates/
//#########################################################################
-$dirtemplates="/var/lib/tftpboot/menu.lst/templates/";
-// Leer nombres de ficheros y quitar plantilla "pxe".
-chdir($dirtemplates);
-$pn=glob("*");
+// Leer nombres de ficheros plantillas bios
+$dirtemplatesbios="/var/lib/tftpboot/menu.lst/templates/";
+chdir($dirtemplatesbios);
+$pnbios=glob("*");
+
+// Leer nombres de ficheros plantillas uefi
+$dirtemplatesuefi="/var/lib/tftpboot/grub/templates/";
+chdir($dirtemplatesuefi);
+$pnuefi=glob("*");
+
+// Unimos las plantillas y eliminamos repetidos
+$pn=array_unique(array_merge($pnbios,$pnuefi));
+
+# quitar plantilla "pxe".
unset($pn[array_search("pxe", $pn)]);
sort($pn);
chdir(__DIR__);
@@ -74,14 +86,14 @@ while($encontrado==FALSE)
}
?>
<html>
-<TITLE>Administración web de aulas</TITLE>
<head>
+<TITLE>Administración web de aulas</TITLE>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<LINK rel="stylesheet" type="text/css" href="../estilos.css">
<SCRIPT language="javascript" src="../jscripts/propiedades_aulas.js"></SCRIPT>
<SCRIPT language="javascript" src="../jscripts/opciones.js"></SCRIPT>
<SCRIPT language="javascript" src="../jscripts/boot_grub4dos.js"></SCRIPT>
- <SCRIPT language="javascript" src="../idiomas/javascripts/esp/propiedades_aulas_esp.js"></SCRIPT></HEAD>
+ <SCRIPT language="javascript" src="../idiomas/javascripts/esp/propiedades_aulas_esp.js"></SCRIPT>
</head>
<body>
<TABLE align=center border=1 cellPadding=1 cellSpacing=1 class=tabla_datos >
@@ -91,22 +103,14 @@ while($encontrado==FALSE)
<input type="hidden" name="idambito" value="<?php echo $idambito?>">
<input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
<input type="hidden" name="opcion" value="<?php echo $opcion?>">
-<?php
- if (empty($_SESSION["widcentro"])) {
- $modo=1;
- }
-?>
</form>
-
</TD></TR>
<tr>
<?php
-if (! empty($modo))
-{?>
-<td valign="top">
-<?php include_once("./boot_grub4dos_tabla.php");?>
-</td>
-<?php }?>
+// Si el modo no está vacio estamos en la parte de administración
+// Incluyo un a primera columna con las opciones crear, modificar,...
+if (! empty($modo)) include_once("./boot_grub4dos_tabla.php");
+?>
<form name="myForm" method="post" action="../gestores/gestor_pxe_grub4dos.php?idaula=<?php echo $idambito ?>&nombreambito=<?php echo $nombreambito?>&litambito=<?php echo $litambito?>" >
<P align=center class=cabeceras><?php echo $TbMsg[42]; ?><BR>
@@ -122,11 +126,11 @@ if (! empty($modo))
<?php
?>
<!-- primer file, nombre de las equipos por pxe hace falta <td> </td>-->
-<td width="80">
+<td width="80" id='ogLive'>
<!-- <a href="./muestramenu.php?labelmenu=pxe"> OGlive </a><br> pxe <br> -->
<?php
//Leer fichero pxe
-$description=exec("awk 'NR==1 {print $2}' ".$dirtemplates."pxe");//$text=trim($text);
+$description=exec("awk 'NR==1 {print $2}' ".$dirtemplatesbios."pxe");
?>
<br><?php echo $description;?> <br><br>
<select multiple size="28" name="Lpxe" id="Lpxe">
@@ -151,15 +155,16 @@ if (!empty($_SESSION["widcentro"]))
//
//mostrar los datos
-for($i=0; $i<count($pn); $i++)
- {//for
+for($i=0; $i<count($pn); $i++) {
+ $description=exec("awk 'NR==1 {print $2}' ".$dirtemplatesbios.$pn[$i]);
+ // Si la descripción está vacía consultamos las plantillas uefi
+ if ($description == "") $description=exec("awk 'NR==1 {print $2}' ".$dirtemplatesuefi.$pn[$i]);
+
if ($pn[$i]==$desconocido)
{$listadopxe=listadesconocido($cmd,$desconocido,$seleccion);
- if ($existe==""){}else{
-
- $description=exec("awk 'NR==1 {print $2}' ".$dirtemplates.$pn[$i]); //$text=trim($text);
+ if ($existe!==""){
echo "<td></td>";
- echo "<td> <font color=red>";
+ echo "<td id='$description'> <font color=red>";
echo $description;
echo " <br>";
echo "<input type='button' onClick='move(this.form.L" . $pn[$i] . ",this.form.Lpxe)' value='OUT' style='height: 25px; width: 50px' >";
@@ -168,22 +173,15 @@ for($i=0; $i<count($pn); $i++)
echo "<select multiple size='28' name='L" . $pn[$i] . "' >";
$listadopxe="";
$desconocido="00unknown";
- if ($pn[$i]==$desconocido)
- {
- $listadopxe=listaequipos($cmd,$desconocido,$seleccion);
- echo $listadopxe;
- }else{
- $listadopxe=listaequipos($cmd,$pn[$i],$seleccion);
- echo $listadopxe;
- }
- echo "</select>";
- echo "</td>";
- }
+ $listadopxe=listaequipos($cmd,$pn[$i],$seleccion);
+ echo $listadopxe;
+ echo "</select>";
+ echo "</td>";
+ }
- }else{
- $description=exec("awk 'NR==1 {print $2}' ".$dirtemplates.$pn[$i]); //$text=trim($text);
- echo "<td></td>";
- echo "<td> ";
+ } else {
+ echo "<td></td>\n";
+ echo "<td id='$description'> ";
echo $description;
echo " <br>";
echo "<input type='button' onClick='move(this.form.L" . $pn[$i] . ",this.form.Lpxe)' value='OUT' style='height: 25px; width: 50px' >";
@@ -192,25 +190,28 @@ for($i=0; $i<count($pn); $i++)
echo "<select multiple size='28' name='L" . $pn[$i] . "' >";
$listadopxe="";
$desconocido="00unknown";
-///////////////////////////////////////////////////////////////
-if (!empty($_SESSION["widcentro"]))
-{
- if ($pn[$i]==$desconocido)
+ ///////////////////////////////////////////////////////////////
+ if (!empty($_SESSION["widcentro"]))
{
- $listadopxe=listaequipos($cmd,$desconocido,$seleccion);
- echo $listadopxe;
- }else{
- $listadopxe=listaequipos($cmd,$pn[$i],$seleccion);
- echo $listadopxe;
- }
-}
-////////////////////////////////////////////////////////////////
+ $listadopxe=listaequipos($cmd,$pn[$i],$seleccion);
+ echo $listadopxe;
+ }
+ ////////////////////////////////////////////////////////////////
echo "</select>";
echo "</td>";
- }//Primer if
- }//for
+ }//Primer if
+}//for
//##agp
+?>
+</form>
+</tr>
+
+</table>
+
+</body>
+</html>
+<?php
// esta funcion genera los elementos de un select(formulario html) donde aparecen los nombres de los ordenadores, según su menu pxe
function listaequipos($cmd,$menupxe,$seleccion)
{
@@ -245,16 +246,3 @@ $existe= $rs->campos["nombreordenador"];
}
$rs->Cerrar();
}
-
-
-?>
-</form>
-</tr>
-
-
-
-</table>
-
-
-</body>
-</html>
diff --git a/admin/WebConsole/principal/boot_grub4dos_tabla.php b/admin/WebConsole/principal/boot_grub4dos_tabla.php
index 7baae042..a19e4b6d 100644
--- a/admin/WebConsole/principal/boot_grub4dos_tabla.php
+++ b/admin/WebConsole/principal/boot_grub4dos_tabla.php
@@ -1,3 +1,4 @@
+<td valign="top">
<TABLE width="150" align=left border=1 cellPadding=1 cellSpacing=1 class=tabla_datos >
<TR>
<TD width="150" height="45" valign="middle">
@@ -53,4 +54,5 @@
</form>
</TD>
</TR>
-</TABLE> \ No newline at end of file
+</TABLE>
+</td>