diff options
Diffstat (limited to 'admin/WebConsole/includes')
19 files changed, 378 insertions, 407 deletions
diff --git a/admin/WebConsole/includes/ConfiguracionesParticiones.php b/admin/WebConsole/includes/ConfiguracionesParticiones.php index 816843b5..9cbd6fcf 100644 --- a/admin/WebConsole/includes/ConfiguracionesParticiones.php +++ b/admin/WebConsole/includes/ConfiguracionesParticiones.php @@ -833,5 +833,5 @@ function tomaCache($numpar,$ordenadores,$numdisk = 1) } } } -?> + diff --git a/admin/WebConsole/includes/CreaComando.php b/admin/WebConsole/includes/CreaComando.php index 056ac3ae..156ff225 100644 --- a/admin/WebConsole/includes/CreaComando.php +++ b/admin/WebConsole/includes/CreaComando.php @@ -21,4 +21,4 @@ function CreaComando($cadenaconexion){ $cmd->Conexion=&$cn; return($cmd); } -?> + diff --git a/admin/WebConsole/includes/CreaTablaParametros.php b/admin/WebConsole/includes/CreaTablaParametros.php index 9d5468f4..a395c849 100644 --- a/admin/WebConsole/includes/CreaTablaParametros.php +++ b/admin/WebConsole/includes/CreaTablaParametros.php @@ -1,51 +1,51 @@ -<?php
-// *************************************************************************************************************************************************
-// Aplicación WEB: ogAdmWebCon.
-// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
-// Fecha Creación: 2009-2010
-// Fecha Última modificación: Agosto-2010
-// Nombre del fichero: CreaTablaParametros.php
-// Descripción :
-// Crea una tabla en memoria con especificaciones sobre los parámetros de cada comando
-// Parametros:
-// - cmd: Un comando ya operativo (con conexión abierta)
-// - tabla_parametros: Referencia a la tabla donde se guardarán las especificaciones
-// - cont_parametros: Referencia a la variable que contendrá el número de elementos totales de la tabla
-// *************************************************************************************************************************************************
-function CreaTablaParametros($cmd,$tabla_parametros,$cont_parametros){
- $rs=new Recordset;
- $cmd->texto="SELECT * FROM parametros";
- $rs->Comando=&$cmd;
- if (!$rs->Abrir()) return; // Error al abrir recordset
- $rs->Primero();
- $cont=0;
- while (!$rs->EOF){
-echo "<br>".$rs->campos["nemonico"];
- $auxtabla_parametros="";
- $auxtabla_parametros["nemonico"]=$rs->campos["nemonico"];
- $auxtabla_parametros["descripcion"]=$rs->campos["descripcion"];
- $auxtabla_parametros["nomidentificador"]=$rs->campos["nomidentificador"];
- $auxtabla_parametros["nomtabla"]=$rs->campos["nomtabla"];
- $auxtabla_parametros["nomliteral"]=$rs->campos["nomliteral"];
- $tabla_parametros[$cont][0]=$auxtabla_parametros["nemonico"];
- $tabla_parametros[$cont][1]=$auxtabla_parametros;
- $cont++;
- $rs->Siguiente();
- }
- $auxnemonico="";
- // Ordena según el nemonico
- for ($i=0;$i<$cont-1;$i++){
- for ($j=$i+1;$j<$cont;$j++){
- if($tabla_parametros[$i][0]>$tabla_parametros[$j][0]){
- $auxnemonico=$tabla_parametros[$i][0];
- $tabla_parametros[$i][0]=$tabla_parametros[$j][0];
- $tabla_parametros[$j][0]=$auxnemonico;
- $auxtabla_parametros=$tabla_parametros[$i][1];
- $tabla_parametros[$i][1]=$tabla_parametros[$j][1];
- $tabla_parametros[$j][1]=$auxtabla_parametros;
- }
- }
- }
- $cont_parametros=$cont;
-}
-?>
+<?php +// ************************************************************************************************************************************************* +// Aplicación WEB: ogAdmWebCon. +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: 2009-2010 +// Fecha Última modificación: Agosto-2010 +// Nombre del fichero: CreaTablaParametros.php +// Descripción : +// Crea una tabla en memoria con especificaciones sobre los parámetros de cada comando +// Parametros: +// - cmd: Un comando ya operativo (con conexión abierta) +// - tabla_parametros: Referencia a la tabla donde se guardarán las especificaciones +// - cont_parametros: Referencia a la variable que contendrá el número de elementos totales de la tabla +// ************************************************************************************************************************************************* +function CreaTablaParametros($cmd,$tabla_parametros,$cont_parametros){ + $rs=new Recordset; + $cmd->texto="SELECT * FROM parametros"; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return; // Error al abrir recordset + $rs->Primero(); + $cont=0; + while (!$rs->EOF){ +echo "<br>".$rs->campos["nemonico"]; + $auxtabla_parametros=array(); + $auxtabla_parametros["nemonico"]=$rs->campos["nemonico"]; + $auxtabla_parametros["descripcion"]=$rs->campos["descripcion"]; + $auxtabla_parametros["nomidentificador"]=$rs->campos["nomidentificador"]; + $auxtabla_parametros["nomtabla"]=$rs->campos["nomtabla"]; + $auxtabla_parametros["nomliteral"]=$rs->campos["nomliteral"]; + $tabla_parametros[$cont][0]=$auxtabla_parametros["nemonico"]; + $tabla_parametros[$cont][1]=$auxtabla_parametros; + $cont++; + $rs->Siguiente(); + } + $auxnemonico=""; + // Ordena según el nemonico + for ($i=0;$i<$cont-1;$i++){ + for ($j=$i+1;$j<$cont;$j++){ + if($tabla_parametros[$i][0]>$tabla_parametros[$j][0]){ + $auxnemonico=$tabla_parametros[$i][0]; + $tabla_parametros[$i][0]=$tabla_parametros[$j][0]; + $tabla_parametros[$j][0]=$auxnemonico; + $auxtabla_parametros=$tabla_parametros[$i][1]; + $tabla_parametros[$i][1]=$tabla_parametros[$j][1]; + $tabla_parametros[$j][1]=$auxtabla_parametros; + } + } + } + $cont_parametros=$cont; +} + diff --git a/admin/WebConsole/includes/FicherosPost.php b/admin/WebConsole/includes/FicherosPost.php index 10f38b0e..6791b3fd 100644 --- a/admin/WebConsole/includes/FicherosPost.php +++ b/admin/WebConsole/includes/FicherosPost.php @@ -48,5 +48,5 @@ function TomaPathFisico($UrlPagina,$NombreFichero){ $PathFisicoFichero=$PathFisicoCarpetaPagina."/iconos/".$NombreFichero; return($PathFisicoFichero); } -?> + diff --git a/admin/WebConsole/includes/InvFecha.php b/admin/WebConsole/includes/InvFecha.php index e4de8b83..3a82faff 100644 --- a/admin/WebConsole/includes/InvFecha.php +++ b/admin/WebConsole/includes/InvFecha.php @@ -9,7 +9,7 @@ function InvFecha($fecha){ if ($fecha=="1970-01-01")return(""); $auxexplode=explode(" ",$fecha); - list($anno_p,$mes_p,$dia_p)=explode("[/-]",$auxexplode[0]); + list($anno_p,$mes_p,$dia_p)=explode("-",str_replace("/","-",$auxexplode[0])); $fecha_p=$dia_p.'-'.$mes_p.'-'.$anno_p; return($fecha_p); } @@ -34,4 +34,4 @@ function metefechaDB($fecha){ function HoraValida($hora){ if ($hora=="00:00:00")return(""); } -?> + diff --git a/admin/WebConsole/includes/RecopilaIpesMacs.php b/admin/WebConsole/includes/RecopilaIpesMacs.php index 70a7f8e3..2ded1775 100644 --- a/admin/WebConsole/includes/RecopilaIpesMacs.php +++ b/admin/WebConsole/includes/RecopilaIpesMacs.php @@ -165,5 +165,5 @@ function RecorreOrdenadores($cmd){ } $rs->Cerrar(); } -?> + diff --git a/admin/WebConsole/includes/RedireccionaError.php b/admin/WebConsole/includes/RedireccionaError.php index 420f47a4..ded595ad 100644 --- a/admin/WebConsole/includes/RedireccionaError.php +++ b/admin/WebConsole/includes/RedireccionaError.php @@ -10,4 +10,3 @@ function RedireccionaError($herror){ $wurl="../seguridad/logerror.php?herror=".$urlerror; Header('Location: '.$wurl); } -?>
\ No newline at end of file diff --git a/admin/WebConsole/includes/comunes.php b/admin/WebConsole/includes/comunes.php index b89701ac..7f326fd5 100644 --- a/admin/WebConsole/includes/comunes.php +++ b/admin/WebConsole/includes/comunes.php @@ -5,10 +5,10 @@ // Parámetros: // - trama: La trama // Devuelve: - // Una matriz con las parejas de paramertos "nombre=valor" + // Una matriz con las parejas de parámertos "nombre=valor" //________________________________________________________________________________________ function extrae_parametros($parametros,$chsep,$chval){ - $ParametrosCadena=""; + $ParametrosCadena=array(); $auxP=explode($chsep,$parametros); for ($i=0;$i<sizeof($auxP);$i++){ $dualparam=explode($chval,$auxP[$i]); @@ -121,7 +121,7 @@ $cont=0; while (!$rs->EOF){ $nemo=$rs->campos["nemonico"]; - $auxtabla_parametros=""; + $auxtabla_parametros=array(); $auxtabla_parametros["nemonico"]=$nemo; $auxtabla_parametros["descripcion"]=$rs->campos["descripcion"]; $auxtabla_parametros["nomidentificador"]=$rs->campos["nomidentificador"]; @@ -300,7 +300,7 @@ Devuelve la descripción de un ambito Parametros: - - cmd: Objeto comando (Operativo) + - cmd: Objeto comando (Operativo) - ambito: tipo de ambito - idambito: Identificador del ambito - textambito: Por referencia. Es donde se devuelve la descripción @@ -309,7 +309,7 @@ - Los dos parámetros pasados por referencia ________________________________________________________________________*/ - function tomaDescriAmbito($cmd,$ambito,$idambito,$textambito) + function tomaDescriAmbito($cmd,$ambito,$idambito,&$textambito) { global $AMBITO_CENTROS; global $AMBITO_GRUPOSAULAS; @@ -334,7 +334,7 @@ $textambito=TomaDato($cmd,0,'ordenadores',$idambito,'idordenador','nombreordenador'); break; default: - $textambito; + $textambito=""; } } /*______________________________________________________________________ diff --git a/admin/WebConsole/includes/constantes.php b/admin/WebConsole/includes/constantes.php index d37d8a7b..a46296d7 100644 --- a/admin/WebConsole/includes/constantes.php +++ b/admin/WebConsole/includes/constantes.php @@ -174,6 +174,3 @@ $msk_cache=0x12; $IMAGENES_MONOLITICAS=0x01; $IMAGENES_BASICAS=0x02; $IMAGENES_INCREMENTALES=0x03; - -/* AVISO: no crear salto de línea ni líneas en blanco tras el fin del código PHP. */ -?> diff --git a/admin/WebConsole/includes/ctrlacc.php b/admin/WebConsole/includes/ctrlacc.php index 9e09b9b7..c6988027 100644 --- a/admin/WebConsole/includes/ctrlacc.php +++ b/admin/WebConsole/includes/ctrlacc.php @@ -45,4 +45,4 @@ if ($swacc){ // Error en alguna variable de sesión die("***Error de acceso"); } //=============================================================================================== -?> + diff --git a/admin/WebConsole/includes/cuestionacciones.php b/admin/WebConsole/includes/cuestionacciones.php index 1f027adc..9c79894d 100644 --- a/admin/WebConsole/includes/cuestionacciones.php +++ b/admin/WebConsole/includes/cuestionacciones.php @@ -76,4 +76,4 @@ function CuestionAcciones($cmd,$shidra,$parametros){ } return(true); } - ?> + diff --git a/admin/WebConsole/includes/cuestionaccionescab.php b/admin/WebConsole/includes/cuestionaccionescab.php index d41d0324..0d0647db 100644 --- a/admin/WebConsole/includes/cuestionaccionescab.php +++ b/admin/WebConsole/includes/cuestionaccionescab.php @@ -20,4 +20,4 @@ if (isset($_POST["nwdescritarea"])) $nwdescritarea=$_POST["nwdescritarea"]; if (isset($_POST["sw_mkprocedimiento"])) $sw_mkprocedimiento=$_POST["sw_mkprocedimiento"]; if (isset($_POST["nwidprocedimiento"])) $nwidprocedimiento=$_POST["nwidprocedimiento"]; if (isset($_POST["nwdescriprocedimiento"])) $nwdescriprocedimiento=$_POST["nwdescriprocedimiento"]; -?> + diff --git a/admin/WebConsole/includes/opciones.php b/admin/WebConsole/includes/opciones.php index 4e8c1033..9cc12c8d 100644 --- a/admin/WebConsole/includes/opciones.php +++ b/admin/WebConsole/includes/opciones.php @@ -13,4 +13,3 @@ $op_modificacion=2; $op_eliminacion=3; $op_movida=4; $op_ejecucion=5; -?>
\ No newline at end of file diff --git a/admin/WebConsole/includes/opcionesbotonesop.php b/admin/WebConsole/includes/opcionesbotonesop.php index 85138063..da89b776 100644 --- a/admin/WebConsole/includes/opcionesbotonesop.php +++ b/admin/WebConsole/includes/opcionesbotonesop.php @@ -6,4 +6,4 @@ echo '<TD width=20></TD>'; echo '<TD><A href=#><IMG border=0 src="../images/boton_confirmar.gif" onclick="confirmar('.$opcion.')" ></A></TD>'; echo '</TR>'; echo '</TABLE>'; -?> + diff --git a/admin/WebConsole/includes/opcionesprotocolos.php b/admin/WebConsole/includes/opcionesprotocolos.php index 29a845bd..aaafab5d 100644 --- a/admin/WebConsole/includes/opcionesprotocolos.php +++ b/admin/WebConsole/includes/opcionesprotocolos.php @@ -105,5 +105,5 @@ return($torrentsyntax); -?> + diff --git a/admin/WebConsole/includes/pintaParticiones.php b/admin/WebConsole/includes/pintaParticiones.php index 44c3f10c..3db46818 100644 --- a/admin/WebConsole/includes/pintaParticiones.php +++ b/admin/WebConsole/includes/pintaParticiones.php @@ -34,7 +34,7 @@ function splitConfigurationsByDisk($configuraciones){ // Descripción: // Crea una taba html con las especificaciones de particiones de un ambito ya sea ordenador, // grupo de ordenadores o aula -// Parametros: +// Parámetros: // $configuraciones: Cadena con las configuraciones de particioners del ámbito. El formato // sería una secuencia de cadenas del tipo "clave de configuración" separados por "@" // Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0 @@ -137,13 +137,11 @@ function pintaParticiones($cmd,$configuraciones,$idordenadores,$cc) for ($x=0;$x<count($ima); $x++) { if(substr($ima[$x],-3)==".MB") { if ( $ima[$x] == "0.MB" ){ - echo '<font color=red><strong>'.$TbMsg["CACHE_COMPLETE"].': '.$ima[$x].'</strong></font>'; + echo '<span style="color: red"><strong>'.$TbMsg["CACHE_COMPLETE"].': '.$ima[$x].'</strong></span>'; }else{ echo '<strong>'.$TbMsg["CACHE_FREESPACE"].': '.$ima[$x].'</strong>'; } }elseif (! empty($ima[1])){ - // $dir=is_dir('$ima');echo $dir; - // if ($ima == "directorio"){$dir="si";} // Esto para la informacion de la imagen if (substr($ima[$x],-5)==".diff"){$info="F";}elseif(substr($ima[$x],-4)==".img"){$info="F";}else{$info="D";} // Esto para numerarla @@ -152,7 +150,7 @@ function pintaParticiones($cmd,$configuraciones,$idordenadores,$cc) } elseif(preg_match("/.sum/",$ima[$x]) or preg_match("/.torrent/",$ima[$x]) or preg_match("/.full.sum/",$ima[$x])) { echo '<br /> '.$ima[$x]; }else{ - echo '<br /><font color=blue>('.$info.') </font>'.$numero++.'.-<font color=blue>'.$ima[$x]."</font>"; + echo '<br /><span style="color: blue">('.$info.') </span>'.$numero++.'.-<span style="color: blue">'.$ima[$x]."</span>"; } } } @@ -193,7 +191,7 @@ function pintaParticiones($cmd,$configuraciones,$idordenadores,$cc) if (!empty($aviso)) { echo '<tr><th colspan="'.$columns.'"> * '.$aviso.' </th></tr>'."\n"; } - echo '<tr height="5"><td colspan="'.$columns.'" style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF;"> </td></tr>'; + echo '<tr><td colspan="'.$columns.'" style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF; height: 5px;"> </td></tr>'; } @@ -203,7 +201,7 @@ function pintaParticiones($cmd,$configuraciones,$idordenadores,$cc) // (Esta función es llamada por pintaConfiguraciones que está incluida en ConfiguracionesParticiones.php) // Crea una taba html con las especificaciones de particiones de un ambito ya sea ordenador, // grupo de ordenadores o aula -// Parametros: +// Parámetros: // $configuraciones: Cadena con las configuraciones de particioners del ámbito. El formato // sería una secuencia de cadenas del tipo "clave de configuración" separados por "@" // Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0 @@ -248,40 +246,47 @@ function pintaParticionesRestaurarImagen($cmd,$configuraciones,$idordenadores,$c $auxCfg=explode("@",$diskConfig); // Crea lista de particiones for($i=0;$i<sizeof($auxCfg);$i++){ $auxKey=explode(";",$auxCfg[$i]); // Toma clave de configuracion + // Para particiones EFI desabilitamos el selector + $disabled=''; for($k=0;$k<$conKeys;$k++){ // Busca los literales para las claves de esa partición if($tbKeys[$k]["cfg"]==$auxCfg[$i]){ // Claves encontradas if($tbKeys[$k]["numpar"]!=0){ // No es info. del disco (part. 0) $swcc=$tbKeys[$k]["clonable"]; if($swcc){ + if ($tbKeys[$k]["tipopar"] == 'EFI') $disabled='disabled'; echo '<TR>'.chr(13); echo '<TD align=center> </TD>'; $icp=$cc."_".$tbKeys[$k]["numdisk"]."_".$tbKeys[$k]["numpar"]; // Identificador de la configuración-partición - echo '<TD ><input type=radio idcfg="'.$cc.'" id="'.$icp.'" name="particion" value='.$tbKeys[$k]["numdisk"].";".$tbKeys[$k]["numpar"].'></TD>'.chr(13); + echo '<TD ><input type=radio idcfg="'.$cc.'" id="'.$icp.'" name="particion" value='.$tbKeys[$k]["numdisk"].";".$tbKeys[$k]["numpar"].' '.$disabled.'></TD>'.chr(13); echo '<TD align=center> '.$tbKeys[$k]["numpar"].' </TD>'.chr(13); echo '<TD align=center> '.$tbKeys[$k]["tipopar"].' </TD>'.chr(13); echo '<TD align=center> '.tomaNombresSO($tbKeys[$k]["numpar"],$idordenadores,$tbKeys[$k]["numdisk"]).' </TD>'.chr(13); echo'<TD align=center> '.tomaSistemasFicheros($tbKeys[$k]["numpar"],$idordenadores,false,$tbKeys[$k]["numdisk"]).' </TD>'.chr(13); echo'<TD align=center> '.tomaTamano($tbKeys[$k]["numpar"],$idordenadores,$tbKeys[$k]["numdisk"]).' </TD>'.chr(13); - echo '<TD>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,true,$idambito,$ambito).'</TD>'; - echo '<TD>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,false,$idambito,$ambito).'</TD>'; + if ($tbKeys[$k]["tipopar"] == 'EFI') { + echo "<TD></TD>\n<TD></TD>\n<TD></TD>\n"; + } else { + echo '<TD>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,true,$idambito,$ambito).'</TD>'; + echo '<TD>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,false,$idambito,$ambito).'</TD>'; - //Clonación - $metodos="UNICAST=UNICAST-CACHE".chr(13); - $metodos.="UNICAST-DIRECT=UNICAST-DIRECT".chr(13); - $metodos.="MULTICAST " . mcast_syntax($cmd,$ambito,$idambito) . "=MULTICAST-CACHE".chr(13); - $metodos.="MULTICAST-DIRECT " . mcast_syntax($cmd,$ambito,$idambito) . "=MULTICAST-DIRECT".chr(13); - $metodos.="TORRENT " . torrent_syntax($cmd,$ambito,$idambito) . "=TORRENT-CACHE"; + //Clonación + $metodos="UNICAST=UNICAST-CACHE".chr(13); + $metodos.="UNICAST-DIRECT=UNICAST-DIRECT".chr(13); + $metodos.="MULTICAST " . mcast_syntax($cmd,$ambito,$idambito) . "=MULTICAST-CACHE".chr(13); + $metodos.="MULTICAST-DIRECT " . mcast_syntax($cmd,$ambito,$idambito) . "=MULTICAST-DIRECT".chr(13); + $metodos.="TORRENT " . torrent_syntax($cmd,$ambito,$idambito) . "=TORRENT-CACHE"; - $TBmetodos["UNICAST-CACHE"]=1; - $TBmetodos["UNICAST-DIRECT"]=2; - $TBmetodos["MULTICAST-CACHE"]=3; - $TBmetodos["MULTICAST-DIRECT"]=4; - $TBmetodos["TORRENT-CACHE"]=5; - $idxc=$_SESSION["protclonacion"]; - if ($idxc == "UNICAST") { - $idxc = "UNICAST-DIRECT"; + $TBmetodos["UNICAST-CACHE"]=1; + $TBmetodos["UNICAST-DIRECT"]=2; + $TBmetodos["MULTICAST-CACHE"]=3; + $TBmetodos["MULTICAST-DIRECT"]=4; + $TBmetodos["TORRENT-CACHE"]=5; + $idxc=$_SESSION["protclonacion"]; + if ($idxc == "UNICAST") { + $idxc = "UNICAST-DIRECT"; + } + echo '<TD>'.HTMLCTESELECT($metodos,"protoclonacion_".$icp,"estilodesple","",$TBmetodos[$idxc],100).'</TD>'; } - echo '<TD>'.HTMLCTESELECT($metodos,"protoclonacion_".$icp,"estilodesple","",$TBmetodos[$idxc],100).'</TD>'; echo '</TR>'.chr(13); } } @@ -289,7 +294,7 @@ function pintaParticionesRestaurarImagen($cmd,$configuraciones,$idordenadores,$c } } } - echo '<TR height=5><TD colspan='.$columns.' style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF;"> </TD></TR>'; + echo '<TR><TD colspan='.$columns.' style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF; height:5px;"> </TD></TR>'; } /*________________________________________________________________________________________________________ @@ -298,7 +303,7 @@ function pintaParticionesRestaurarImagen($cmd,$configuraciones,$idordenadores,$c (Esta función es llamada por pintaConfiguraciones que está incluida en ConfiguracionesParticiones.php) Crea una taba html con las especificaciones de particiones de un ambito ya sea ordenador, grupo de ordenadores o aula - Parametros: + Parámetros: $configuraciones: Cadena con las configuraciones de particioners del ámbito. El formato sería una secuencia de cadenas del tipo "clave de configuración" separados por "@" Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0 @@ -342,7 +347,7 @@ function pintaParticionesConfigurar($cmd,$configuraciones,$idordenadores,$cc) $sf=tomaSistemasFicheros($tbKeys[$k]["numpar"],$idordenadores,true); echo '<td>'.HTMLSELECT_sistemasficheros($cmd,$sf).'</td>'; $tm=tomaTamano($tbKeys[$k]["numpar"],$idordenadores); - echo '<td><input type="text" style="width:100" value="'.$tm.'"></td>'; + echo '<td><input type="text" style="width:100px" value="'.$tm.'"></td>'; echo '<td>'.tomaNombresSO($tbKeys[$k]["numpar"],$idordenadores).'</td>'; echo '<td>'.opeFormatear().'</td>'; echo '</tr>'; @@ -361,8 +366,8 @@ function pintaParticionesConfigurar($cmd,$configuraciones,$idordenadores,$cc) // Datos del disco $tm=tomaTamano(0,$idordenadores); echo '<tr id="TRIMG_'.$cc.'" align="center">'. - "\n<td></td>\n<td></td>\n<td".' style="font-size: 1em; padding: 1px 0px; "'.">".$TbMsg["DISK"]."</td>". - "\n<td></td>\n<td".' style="font-size: 1em; padding: 1px 0px; "> '.(isset($tm)?$tm:("<em>".$TbMsg["VARIABLE"]."</em>"))." <input type='hidden' id='hdsize$cc' name='hdsize$cc' style='width:100' value='".$tm."'></td>". + "\n<td></td>\n<td></td>\n<td".' style="font-size: 1em; padding: 1px 0; "'.">".$TbMsg["DISK"]."</td>". + "\n<td></td>\n<td".' style="font-size: 1em; padding: 1px 0; "> '.(isset($tm)?$tm:("<em>".$TbMsg["VARIABLE"]."</em>"))." <input type='hidden' id='hdsize$cc' name='hdsize$cc' style='width:100px' value='".$tm."'></td>". "\n<td></td>\n<td></td>\n</tr>"; echo '<tr><th colspan="'.$colums.'"> '.$TbMsg["WARN_DISKSIZE"].'</th></tr>'; // Mostrar aviso: solo disco 1 con tabla MSDOS. @@ -371,14 +376,14 @@ function pintaParticionesConfigurar($cmd,$configuraciones,$idordenadores,$cc) } // Botones de añadir y confirmar. if (isset($tm)) { - echo '<TR height=30><TD style="BACKGROUND-COLOR: #FFFFFF;" colspan='.$colums.' align=center>'; - echo ' <A href="#add" style="text-decoration:none"> - <IMG id="IMG_'.$icp.'" border=0 src="../images/boton_insertar.gif" - value="'.$k.'" onclick="addParticion(this,'.$cc.')"></A> - - <A href="#add" style="text-decoration:none"> - <IMG border=0 src="../images/boton_aceptar.gif" onclick="Confirmar('.$cc.')"></A></TD> - </TR>'; + echo '<tr><td style="background-color: #FFFFFF; height: 30px;" colspan="'.$colums.'" align="center">'; + echo ' <a href="#add" style="text-decoration:none"> + <img id="IMG_'.$icp.'" border=0 src="../images/boton_insertar.gif" + value="'.$k.'" onclick="addParticion(this,'.$cc.')"></a> + + <a href="#add" style="text-decoration:none"> + <img border=0 src="../images/boton_aceptar.gif" onclick="Confirmar('.$cc.')"></a></td> + </tr>'; } else { echo '<tr><th colspan="'.$colums.'">'.$TbMsg["WARN_DIFFDISKSIZE"].'</th></tr>'."\n"; } @@ -386,24 +391,24 @@ function pintaParticionesConfigurar($cmd,$configuraciones,$idordenadores,$cc) /* // -// Descripcion: -// (Esta funci�n es llamada por pintaConfiguraciones que est� incluida en ConfiguracionesParticiones.php) +// Descripcián: +// (Esta función es llamada por pintaConfiguraciones que está incluida en ConfiguracionesParticiones.php) // Crea una taba html con las especificaciones de particiones de un ambito ya sea ordenador, // grupo de ordenadores o aula -// Parametros: -// $configuraciones: Cadena con las configuraciones de particioners del �mbito. El formato -// ser�a una secuencia de cadenas del tipo "clave de configuraci�n" separados por "@" +// Parámetros: +// $configuraciones: Cadena con las configuraciones de particioners del ámbito. El formato +// sería una secuencia de cadenas del tipo "clave de configuración" separados por "@" // Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0 // Devuelve: -// El c�digo html de la tabla +// El código html de la tabla //________________________________________________________________________________________________________ // // */ function pintaParticionesRestaurarImagenSincronizacion1($cmd,$configuraciones,$idordenadores,$cc,$ambito,$idambito) { - global $tbKeys; // Tabla contenedora de claves de configuraci�n - global $conKeys; // Contador de claves de configuraci�n + global $tbKeys; // Tabla contenedora de claves de configuración + global $conKeys; // Contador de claves de configuración global $TbMsg; global $_SESSION; @@ -445,7 +450,7 @@ function pintaParticionesRestaurarImagenSincronizacion1($cmd,$configuraciones,$i echo '<TR>'.chr(13); echo '<TD align=center> </TD>'; if($swcc){ - $icp=$cc."_".$tbKeys[$k]["numdisk"]."_".$tbKeys[$k]["numpar"]; // Identificador de la configuraci�n-partici�n + $icp=$cc."_".$tbKeys[$k]["numdisk"]."_".$tbKeys[$k]["numpar"]; // Identificador de la configuración-partición echo '<TD align=center><input type=radio idcfg="'.$cc.'" id="'.$icp.'" name="particion" value='.$tbKeys[$k]["numdisk"].";".$tbKeys[$k]["numpar"].'></TD>'.chr(13); echo '<TD align=center> '.$tbKeys[$k]["numpar"].' </TD>'.chr(13); echo '<TD align=center> '.$tbKeys[$k]["tipopar"].' </TD>'.chr(13); @@ -479,169 +484,6 @@ function pintaParticionesRestaurarImagenSincronizacion1($cmd,$configuraciones,$i } } - echo '<TR height=5><TD colspan='.$columns.' style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF;"> </TD></TR>'; + echo '<TR><TD colspan="'.$columns.'" style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF; height: 5px;"> </TD></TR>'; echo '<tr><th colspan="14">'.$TbMsg["WARN_PROTOCOL"].'</th></tr>'; } -/** - * Las funcion pintaParticionesRestaurarImagenSincronizacion1 sustituye a las funciones - * pintaParticionesRestaurarSoftIncremental y pintaParticionesRestaurarImagenBasica - * para volver a usarlas tan sólo hay que ir al fichero comandos/RestaurarImagenBasica o comandos/RestaurarSoftIncremental y cambiar la - * llamada a la función que queramos en el parametro de pintaConfiguraciones. - * Actualmente en ambos ficheros llaman a la función pintaParticionesRestaurarImagenSincronizacion1 ya que pintan - * exactamente lo mismo. - * - -//********************************************************************************************* -// FUNCIONES -//********************************************************************************************* -// -// Descripci�n: -// (Esta funci�n es llamada por pintaConfiguraciones que est� incluida en ConfiguracionesParticiones.php) -// Crea una taba html con las especificaciones de particiones de un ambito ya sea ordenador, -// grupo de ordenadores o aula -// Parametros: -// $configuraciones: Cadena con las configuraciones de particioners del �mbito. El formato -// ser�a una secuencia de cadenas del tipo "clave de configuraci�n" separados por "@" -// Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0 -// Devuelve: -// El c�digo html de la tabla -//________________________________________________________________________________________________________ -// -// -function pintaParticionesRestaurarSoftIncremental($cmd,$configuraciones,$idordenadores,$cc,$ambito,$idambito) -{ - global $tbKeys; // Tabla contenedora de claves de configuraci�n - global $conKeys; // Contador de claves de configuraci�n - global $TbMsg; - global $_SESSION; - - // Separamos las configuraciones segun el disco al que pertenezcan - $diskConfigs = splitConfigurationsByDisk($configuraciones); - - $columns=9; - echo '<TR>'; - echo '<TH align=center> </TH>'; - echo '<th align="center"> '.$TbMsg["DISK"].' </th>'; // Número de disco - echo '<TH align=center> '.$TbMsg["PARTITION"].' </TH>'; - echo '<th align="center"> '.$TbMsg["PARTITION_TYPE"].' </th>'; // Tipo de partición - echo '<th align="center"> '.$TbMsg["INST_SO"].' </th>'; // Sistema Operativo Instalado - echo '<th align="center"> '.$TbMsg["FILESYSTEM_SHORT"].' </th>'; // Sistema de ficheros - echo '<th align="center"> '.$TbMsg["SIZE_KB"].' </th>'; // Tamaño - echo '<TH align=center> '.$TbMsg[10].' </TH>'; - echo '<TH align=center> '.$TbMsg[16].' </TH>'; - echo '</TR>'; - - - // Recorremos todas las configuraciones encontradas para cada disco - - foreach($diskConfigs as $disk => $diskConfig){ - $disk = (int)$disk; - echo'<tr height="16">'.chr(13); - echo '<td colspan="'.$columns.'" style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #D4D0C8;"> '.$TbMsg["DISK"].' '.$disk.'</td>'.chr(13); - - $auxCfg=explode("@",$diskConfig); // Crea lista de particiones - for($i=0;$i<sizeof($auxCfg);$i++){ - $auxKey=explode(";",$auxCfg[$i]); // Toma clave de configuracion - for($k=0;$k<$conKeys;$k++){ // Busca los literales para las claves de esa partici�n - if($tbKeys[$k]["cfg"]==$auxCfg[$i]){ // Claves encontradas - $swcc=$tbKeys[$k]["clonable"]; - echo '<TR>'.chr(13); - echo '<TD align=center> </TD>'; - if($swcc){ - $icp=$cc."_".$tbKeys[$k]["numpar"]; // Identificador de la configuraci�n-partici�n - echo '<TD align=center><input type=radio idcfg="'.$cc.'" id="'.$icp.'" name="particion" value='.$tbKeys[$k]["numpar"].'></TD>'.chr(13); - echo '<TD align=center> '.$tbKeys[$k]["numpar"].' </TD>'.chr(13); - echo '<TD align=center> '.$tbKeys[$k]["tipopar"].' </TD>'.chr(13); - echo '<TD align=center> '.tomaNombresSO($tbKeys[$k]["numpar"],$idordenadores).' </TD>'.chr(13); - echo'<TD align=center> '.tomaSistemasFicheros($tbKeys[$k]["numpar"],$idordenadores).' </TD>'.chr(13); - echo'<TD align=center> '.tomaTamano($tbKeys[$k]["numpar"],$idordenadores).' </TD>'.chr(13); - echo '<TD align=center>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,true,$idordenadores,$ambito).'</TD>'; - $metodos="CACHE=".$TbMsg[13].chr(13); - $metodos.="REPO=".$TbMsg[9]; - echo '<TD align=center>'.HTMLCTESELECT($metodos,"desplemet_".$icp,"estilodesple","",1,100).'</TD>'; - - } - echo '</TR>'.chr(13); - } - } - } - } - echo '<TR height=5><TD colspan='.$columns.' style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF;"> </TD></TR>'; -} - -//********************************************************************************************* -// FUNCIONES -//********************************************************************************************* -// -// Descripci�n: -// (Esta funci�n es llamada por pintaConfiguraciones que est� incluida en ConfiguracionesParticiones.php) -// Crea una taba html con las especificaciones de particiones de un ambito ya sea ordenador, -// grupo de ordenadores o aula -// Parametros: -// $configuraciones: Cadena con las configuraciones de particioners del �mbito. El formato -// ser�a una secuencia de cadenas del tipo "clave de configuraci�n" separados por "@" -// Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0 -// Devuelve: -// El c�digo html de la tabla -//________________________________________________________________________________________________________ -// -// -function pintaParticionesRestaurarImagenBasica($cmd,$configuraciones,$idordenadores,$cc,$ambito,$idambito) -{ - global $tbKeys; // Tabla contenedora de claves de configuraci�n - global $conKeys; // Contador de claves de configuraci�n - global $TbMsg; - global $_SESSION; - - // Separamos las configuraciones segun el disco al que pertenezcan - $diskConfigs = splitConfigurationsByDisk($configuraciones); - - $columns=9; - echo '<TR>'; - echo '<TH align=center> </TH>'; - echo '<th align="center"> '.$TbMsg["DISK"].' </th>'; // Número de disco - echo '<TH align=center> '.$TbMsg["PARTITION"].' </TH>'; - echo '<th align="center"> '.$TbMsg["PARTITION_TYPE"].' </th>'; // Tipo de partición - echo '<th align="center"> '.$TbMsg["INST_SO"].' </th>'; // Sistema Operativo Instalado - echo '<th align="center"> '.$TbMsg["FILESYSTEM_SHORT"].' </th>'; // Sistema de ficheros - echo '<th align="center"> '.$TbMsg["SIZE_KB"].' </th>'; // Tamaño - echo '<TH align=center> '.$TbMsg[10].' </TH>'; - echo '<TH align=center> '.$TbMsg[16].' </TH>'; - echo '</TR>'; - - // Recorremos todas las configuraciones encontradas para cada disco - - foreach($diskConfigs as $disk => $diskConfig){ - $disk = (int)$disk; - echo'<tr height="16">'.chr(13); - echo '<td colspan="'.$columns.'" style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #D4D0C8;"> '.$TbMsg["DISK"].' '.$disk.'</td>'.chr(13); - - $auxCfg=explode("@",$diskConfig); // Crea lista de particiones - for($i=0;$i<sizeof($auxCfg);$i++){ - $auxKey=explode(";",$auxCfg[$i]); // Toma clave de configuracion - for($k=0;$k<$conKeys;$k++){ // Busca los literales para las claves de esa partici�n - if($tbKeys[$k]["cfg"]==$auxCfg[$i]){ // Claves encontradas - $swcc=$tbKeys[$k]["clonable"]; - if($swcc){ - echo '<TR>'.chr(13); - echo '<TD align=center> </TD>'; - $icp=$cc."_".$tbKeys[$k]["numpar"]; // Identificador de la configuraci�n-partici�n - echo '<TD align=center><input type=radio idcfg="'.$cc.'" id="'.$icp.'" name="particion" value='.$tbKeys[$k]["numpar"].'></TD>'.chr(13); - echo '<TD align=center> '.$tbKeys[$k]["numpar"].' </TD>'.chr(13); - echo '<TD align=center> '.$tbKeys[$k]["tipopar"].' </TD>'.chr(13); - echo '<TD align=center> '.tomaNombresSO($tbKeys[$k]["numpar"],$idordenadores).' </TD>'.chr(13); - echo'<TD align=center> '.tomaSistemasFicheros($tbKeys[$k]["numpar"],$idordenadores).' </TD>'.chr(13); - echo'<TD align=center> '.tomaTamano($tbKeys[$k]["numpar"],$idordenadores).' </TD>'.chr(13); - echo '<TD align=center>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,true,$idordenadores,$ambito).'</TD>'; - $metodos="CACHE=".$TbMsg[13].chr(13); - $metodos.="REPO=".$TbMsg[9]; - echo '<TD align=center>'.HTMLCTESELECT($metodos,"desplemet_".$icp,"estilodesple","",1,100).'</TD>'; - } - } - } - } - } - echo '<TR height=5><TD colspan='.$columns.' style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF;"> </TD></TR>'; -} -**/ - diff --git a/admin/WebConsole/includes/pintaTablaConfiguraciones.php b/admin/WebConsole/includes/pintaTablaConfiguraciones.php index ecf69574..5a0b72ae 100644 --- a/admin/WebConsole/includes/pintaTablaConfiguraciones.php +++ b/admin/WebConsole/includes/pintaTablaConfiguraciones.php @@ -38,10 +38,10 @@ function tablaConfiguracionesIniciarSesion($cmd,$idambito,$ambito){ // CONSULTA BD: grupo de equipos con iguales sistemas operativos: idordenadores,configuracion $cmd->texto=""; // agrupamos equipos con igual conf de disco. - $cmd->texto="select GROUP_CONCAT(pcconf.idordenador SEPARATOR ',') AS idordenadores, pcconf.configuraciones FROM ("; + $cmd->texto="SELECT GROUP_CONCAT(pcconf.idordenador SEPARATOR ',') AS idordenadores, pcconf.configuraciones FROM ("; // partconf agrupa la configuracion de todas las part: idordenador | configuracionTodasPart - $cmd->texto.=" select partconf.idordenador , GROUP_CONCAT(partconf.configuracion ORDER BY partconf.configuracion ASC SEPARATOR '@' ) AS configuraciones FROM ("; + $cmd->texto.=" SELECT partconf.idordenador, GROUP_CONCAT(partconf.configuracion ORDER BY partconf.configuracion ASC SEPARATOR '@') AS configuraciones FROM ("; // particion conf: idordenador, numdisk, configuracion (numdisk;numpar;idnombreso) $cmd->texto.="SELECT ordenadores_particiones.idordenador,ordenadores_particiones.numdisk, CONCAT_WS(';',ordenadores_particiones.numdisk, ordenadores_particiones.numpar, ordenadores_particiones.idnombreso) AS configuracion FROM ordenadores_particiones "; @@ -138,9 +138,7 @@ function tablaConfiguracionesInventarioSoftware($cmd,$idordenador){ WHERE ordenadores.idordenador=".$idordenador." AND nombresos.nombreso!='DATA' ORDER BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar"; - - $rs->Comando=&$cmd; - $rs=new Recordset; + $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset diff --git a/admin/WebConsole/includes/restfunctions.php b/admin/WebConsole/includes/restfunctions.php index 3f91f7f5..14cace17 100644 --- a/admin/WebConsole/includes/restfunctions.php +++ b/admin/WebConsole/includes/restfunctions.php @@ -1,5 +1,212 @@ <?php - + +define('OG_REST_URL', 'http://127.0.0.1:8888/'); + +define('GET', 1); +define('POST', 2); +define('CUSTOM', 3); + +define('OG_REST_CMD_CLIENTS', 'clients'); +define('OG_REST_CMD_WOL', 'wol'); +define('OG_REST_CMD_SESSION', 'session'); +define('OG_REST_CMD_RUN', 'shell/run'); +define('OG_REST_CMD_OUTPUT', 'shell/output'); +define('OG_REST_CMD_POWEROFF', 'poweroff'); +define('OG_REST_CMD_REBOOT', 'reboot'); +define('OG_REST_CMD_STOP', 'stop'); +define('OG_REST_CMD_REFRESH', 'refresh'); +define('OG_REST_CMD_HARDWARE', 'hardware'); +define('OG_REST_CMD_SOFTWARE', 'software'); + +define('OG_REST_PARAM_CLIENTS', 'clients'); +define('OG_REST_PARAM_ADDR', 'addr'); +define('OG_REST_PARAM_MAC', 'mac'); +define('OG_REST_PARAM_DISK', 'disk'); +define('OG_REST_PARAM_PART', 'partition'); +define('OG_REST_PARAM_RUN', 'run'); +define('OG_REST_PARAM_TYPE', 'type'); +define('OG_REST_PARAM_STATE', 'state'); + +$conf_file = parse_ini_file(__DIR__ . '/../../etc/ogAdmRepo.cfg'); +define('OG_REST_API_TOKEN', 'Authorization: ' . $conf_file['ApiToken']); + +function common_request($command, $type, $data = null) { + + $json = json_encode($data); + + $service_url = OG_REST_URL.$command; + + $curl = curl_init($service_url); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl, CURLOPT_HTTPHEADER, array( + OG_REST_API_TOKEN, + )); + + switch ($type) { + default: + case GET: + break; + case POST: + curl_setopt($curl, CURLOPT_POST, true); + curl_setopt($curl, CURLOPT_POSTFIELDS, $json); + } + + $curl_response = curl_exec($curl); + $info = curl_getinfo($curl); + + if ($curl_response === false || $info['http_code'] != 200) { + syslog(LOG_ERR, 'error occured during curl exec. Additioanl info: ' . print_r($info, TRUE)); + return 0; + } + + curl_close($curl); + + syslog(LOG_INFO, 'response '.$command.' ok!'); + + return json_decode($curl_response, true); +} + + +function shell($case, $string_ips, $command) { + + $ips = explode(';',$string_ips); + + switch ($case) { + case 1: + $data = array(OG_REST_PARAM_CLIENTS => $ips, + OG_REST_PARAM_RUN => $command); + $command = OG_REST_CMD_RUN; + break; + default: + case 2: + $data = array(OG_REST_PARAM_CLIENTS => $ips); + $command = OG_REST_CMD_OUTPUT; + } + + $result = common_request($command, POST, + $data)[OG_REST_PARAM_CLIENTS][0]['output']; + + return (is_null($result) ? '1' : $result); +} + +function clients($case, $ips) { + + switch ($case) { + case 1: + $type = POST; + $data = array(OG_REST_PARAM_CLIENTS => $ips); + break; + case 2: + $type = GET; + $data = null; + break; + } + + $result = common_request(OG_REST_CMD_CLIENTS, $type, $data); + + $trama_notificacion = ""; + if (isset($result[OG_REST_PARAM_CLIENTS])) { + foreach ($result[OG_REST_PARAM_CLIENTS] as $client) { + $trama_notificacion .= $client[OG_REST_PARAM_ADDR].'/'. + $client[OG_REST_PARAM_STATE].';'; + } + } + + return $trama_notificacion; +} + +function wol($type_wol, $macs, $ips) { + + switch ($type_wol) { + default: + case 1: + $wol = 'broadcast'; + break; + case 2: + $wol = 'unicast'; + } + + $clients = array(); + + for($i=0; $i<count($macs); $i++) { + $clients[] = array(OG_REST_PARAM_ADDR => $ips[$i], + OG_REST_PARAM_MAC => $macs[$i]); + } + + $data = array(OG_REST_PARAM_TYPE => $wol, + OG_REST_PARAM_CLIENTS => $clients); + + common_request(OG_REST_CMD_WOL, POST, $data); +} + +function session($string_ips, $params) { + + preg_match_all('!\d{1}!', $params, $matches); + + $ips = explode(';',$string_ips); + $disk = $matches[0][0]; + $part = $matches[0][1]; + + $data = array(OG_REST_PARAM_CLIENTS => $ips, + OG_REST_PARAM_DISK => $disk, OG_REST_PARAM_PART => $part); + + common_request(OG_REST_CMD_SESSION, POST, $data); +} + +function poweroff($string_ips) { + + $ips = explode(';',$string_ips); + + $data = array(OG_REST_PARAM_CLIENTS => $ips); + + common_request(OG_REST_CMD_POWEROFF, POST, $data); +} + +function reboot($string_ips) { + + $ips = explode(';',$string_ips); + + $data = array(OG_REST_PARAM_CLIENTS => $ips); + + common_request(OG_REST_CMD_REBOOT, POST, $data); +} + +function stop($string_ips) { + + $ips = explode(';',$string_ips); + + $data = array(OG_REST_PARAM_CLIENTS => $ips); + + common_request(OG_REST_CMD_STOP, POST, $data); +} + +function refresh($string_ips) { + + $ips = explode(';',$string_ips); + + $data = array(OG_REST_PARAM_CLIENTS => $ips); + + common_request(OG_REST_CMD_REFRESH, POST, $data); +} + +function hardware($string_ips) { + + $ips = explode(';',$string_ips); + + $data = array(OG_REST_PARAM_CLIENTS => $ips); + + common_request(OG_REST_CMD_HARDWARE, POST, $data); +} + +function software($string_ips) { + + $ips = explode(';',$string_ips); + + $data = array(OG_REST_PARAM_CLIENTS => $ips); + + common_request(OG_REST_CMD_SOFTWARE, POST, $data); +} + /* * @function multiRequest. * @param URLs array (may include header and POST data), cURL options array. @@ -69,4 +276,4 @@ function multiRequest($data, $options=array(CURLOPT_SSL_VERIFYHOST => false, CUR return $result; } -?> + diff --git a/admin/WebConsole/includes/tftputils.php b/admin/WebConsole/includes/tftputils.php index 5cf2da88..aca054a5 100644 --- a/admin/WebConsole/includes/tftputils.php +++ b/admin/WebConsole/includes/tftputils.php @@ -12,12 +12,13 @@ include_once("../includes/ctrlacc.php"); include_once("../clases/AdoPhp.php"); // Directorio de ficheros PXE. -define("PXEDIR", "/opt/opengnsys/tftpboot/menu.lst"); +define("PXEDIRBIOS", "/opt/opengnsys/tftpboot/menu.lst"); +define("PXEDIRUEFI", "/opt/opengnsys/tftpboot/grub"); /** * @brief Sustituye espacio por "_" y quita acentos y tildes. - * @param cadena Cadena a modificar. + * @param string Cadena a modificar. * @return string Cadena modificada. * @versión 1.0.5 - Primera versión, adaptada de NetBoot Avanzado. * @author @@ -47,13 +48,13 @@ function clientKernelVersion () { /** - * createBootMode ($cmd, $bootopt, $hostid, $lang) + * createBootMode ($cmd, $bootopt, $hostname, $lang) * @brief Crea un fichero PXE para el ordenador basado en la plantilla indicada y usando * los datos almacenados en la BD. - * @param {Object} cmd Objeto de conexión a la base de datos. - * @param {String} bootopt Plantilla de arranque PXE. - * @param {Number} hostid Id. del ordenador. - * @param {String} lang Idioma de arranque. + * @param Object cmd Objeto de conexión a la base de datos. + * @param String bootopt Plantilla de arranque PXE. + * @param String hostname Nombre del ordenador. + * @param String lang Idioma de arranque. * @version 1.0.5 - Primera versión, adaptada de NetBoot Avanzado (Antonio J. Doblas Viso - Universidad de Málaga) * @author Ramón Gómez - ETSII Universidad de Sevilla * @date 2013-04-25 @@ -63,68 +64,23 @@ function clientKernelVersion () { * @version 1.1.0 - La segunda fase de carga del ogLive se define en el SERVER para evitar erores de sincronismo entre versiones (ticket #787). * @author Antonio J. Doblas Viso - Universidad de Malaga * @date 2017-06-01 - * @version 1.1.0 - Se incluye el nombre del perfil hardware y se elimina el winboot (ticket #828). + * @version 1.1.0 - Se incluye el nombre del perfil hardware y se elimina el winboot (ticket #828). * @author Antonio J. Doblas Viso - Universidad de Malaga * @date 2018-01-21 + * @version 1.1.1 - Se utiliza setclientmode. Gestiona plantilla bios y uefi (ticket #802 #888) + * @author Irina Gómez - ETSII Universidad de Sevilla + * @date 2019-03-14 */ -function createBootMode ($cmd, $bootopt, $hostid, $lang) { +function createBootMode ($cmd, $bootopt, $hostname, $lang) { + global $cadenaconexion; + + // Datos para el acceso a mysql + $strcn=explode(";",$cadenaconexion); + $acceso="USUARIO=".$strcn[1]." PASSWORD=".$strcn[2]." CATALOG=".$strcn[3]; // Plantilla con las opciones por defecto. if (empty ($bootopt)) $bootopt = "00unknown"; - // Actualizar opción de arranque para el equipo. - $cmd->CreaParametro("@arranque",$bootopt,0); - $cmd->CreaParametro("@idordenador",$hostid,1); - $cmd->texto="UPDATE ordenadores SET arranque=@arranque WHERE idordenador=@idordenador"; - $cmd->Ejecutar(); - - // Obtener información de la base de datos. - $cmd->texto="SELECT ordenadores.nombreordenador AS hostname, ordenadores.ip AS ip, - ordenadores.mac AS mac, ordenadores.netiface AS netiface, - ordenadores.oglivedir AS oglivedir, - aulas.netmask AS netmask, aulas.router AS router, - aulas.ntp AS ntp, aulas.dns AS dns, aulas.proxy AS proxy, - aulas.nombreaula AS grupo, IFNULL(repositorios.ip, '') AS iprepo, - (SELECT ipserveradm FROM entornos LIMIT 1) AS ipserveradm, - menus.resolucion AS vga, perfileshard.descripcion AS hardprofile, - centros.directorio, entidades.ogunit - FROM ordenadores - JOIN aulas USING (idaula) - JOIN centros USING (idcentro) - JOIN entidades USING (identidad) - LEFT JOIN repositorios USING (idrepositorio) - LEFT JOIN menus USING (idmenu) - LEFT JOIN perfileshard USING (idperfilhard) - WHERE ordenadores.idordenador='$hostid'"; - - $rs=new Recordset; - $rs->Comando=&$cmd; - if (!$rs->Abrir()) return; - $rs->Primero(); - $hostname=$rs->campos["hostname"]; - $ip=$rs->campos["ip"]; - $mac=$rs->campos["mac"]; - $netiface=$rs->campos["netiface"]; - $netmask=$rs->campos["netmask"]; - $router=$rs->campos["router"]; - $ntp=$rs->campos["ntp"]; - $dns=$rs->campos["dns"]; - $proxy=$rs->campos["proxy"]; - $group=cleanString($rs->campos["grupo"]); - $repo=$rs->campos["iprepo"]; - $server=$rs->campos["ipserveradm"]; - $vga=$rs->campos["vga"]; - $hardprofile=cleanString($rs->campos["hardprofile"]); - $oglivedir=$rs->campos["oglivedir"]; - $ogunit=$rs->campos["ogunit"]; - if ($ogunit == 0 or $rs->campos["directorio"] == null) { - $directorio="" ; - } else { - $directorio=$rs->campos["directorio"]; - } - - $rs->Cerrar(); - // Componer código de idioma para el parámetro de arranque. switch ($lang) { case "eng": @@ -138,49 +94,18 @@ function createBootMode ($cmd, $bootopt, $hostid, $lang) { break; } - // Componer parámetros del kernel. - $infohost=" LANG=$lang". - " ip=$ip:$server:$router:$netmask:$hostname:$netiface:none" . - " group=$group" . - " ogrepo=$repo" . - " oglive=$server" . - " oglog=$server" . - " ogshare=$server"; - // Añadir parámetros opcionales. - if (! empty ($ntp)) { $infohost.=" ogntp=$ntp"; } - if (! empty ($dns)) { $infohost.=" ogdns=$dns"; } - if (! empty ($proxy)) { $infohost.=" ogproxy=$proxy"; } - if (! empty ($hardprofile)) { $infohost.=" hardprofile=$hardprofile"; } - // Comprobar si se usa el parámetro "vga" (número de 3 cifras) o "video" (cadena). - if (! empty ($vga)) { - // UHU - Se sustituye la función is_int por is_numeric, ya que al ser un string no funciona bien con is_int - if (is_numeric($vga) && strlen($vga) == 3) { - $infohost.=" vga=$vga"; - } else { - $infohost.=" video=$vga"; - } - } - if (! empty ($directorio)) { $infohost.=" ogunit=$directorio"; } - - $mac = substr($mac,0,2) . ":" . substr($mac,2,2) . ":" . substr($mac,4,2) . ":" . substr($mac,6,2) . ":" . substr($mac,8,2) . ":" . substr($mac,10,2); - $macfile = PXEDIR . "/01-" . str_replace(":", "-", strtoupper($mac)); - - // Crear fichero de arranque a partir de la plantilla y los datos del cliente. - // UHU - si el parametro vga no existe, no se quita. - if (! empty ($vga)) { - exec("sed -e 's|vga=...||g; s|INFOHOST|$infohost|g; s|set ISODIR=.*|set ISODIR=$oglivedir|g' " . PXEDIR . "/templates/$bootopt > $macfile"); - } - else{ - exec("sed -e 's|INFOHOST|$infohost|g; s|set ISODIR=.*|set ISODIR=$oglivedir|g; s|set ISODIR=.*|set ISODIR=$oglivedir|g' " . PXEDIR . "/templates/$bootopt > $macfile"); - } - chmod($macfile, 0777); + // Descripción plantilla PXE + $description=exec("awk 'NR==1 {print $2}' ".PXEDIRBIOS."/templates/".$bootopt); + if ($description === "") $description=exec("awk 'NR==1 {print $2}' ".PXEDIRUEFI."/templates/".$bootopt); + // Llamamos al script setclientmode + shell_exec("export LANG=$lang $acceso; /opt/opengnsys/bin/setclientmode $description $hostname PERM"); } /** * deleteBootFile ($mac) * @brief Borra el fichero PXE del ordenador con la dirección MAC correspondiente. - * @param {String} mac Dirección MAC del ordenador (sin caracteres ":"). + * @param String mac Dirección MAC del ordenador (sin caracteres ":"). * @versión 1.0.5 - Primera versión, adaptada de NetBoot Avanzado. * @authors Ramón Gómez - ETSII Universidad de Sevilla * @date 2013-04-25 @@ -189,19 +114,20 @@ function deleteBootFile ($mac) { // Obtener nombre de fichero a partir de dirección MAC. $mac = strtoupper($mac); - $macfile = PXEDIR . "/01-" . substr($mac, 0, 2) . "-" . substr($mac, 2, 2) . "-" . substr($mac, 4, 2) . "-" . substr($mac, 6, 2) . "-" . substr($mac, 8, 2) . "-" . substr($mac, 10, 2); + $macfile = "/01-" . substr($mac, 0, 2) . "-" . substr($mac, 2, 2) . "-" . substr($mac, 4, 2) . "-" . substr($mac, 6, 2) . "-" . substr($mac, 8, 2) . "-" . substr($mac, 10, 2); // Eliminar el fichero. - @unlink($macfile); + @unlink(PXEDIRBIOS.$macfile); + @unlink(PXEDIRUEFI.$macfile); } /** * updateBootMode ($cmd, $idfield, $idvalue, $lang) * @brief Ejecuta la función para componer fichero PXE para todos los clientes que cumplan * con un determinado criterio de búsqueda basado en clave ejena. - * @param {Object} cmd Objeto de conexión con la base de datos. - * @param {String} idfield Campo identificador de la clave ajena para buscar ordenadores. - * @param {Number} idvalue Valor a buscar en el ídentificador de la clave ajena. - * @param {String} lang Idioma de arranque. + * @param Object cmd Objeto de conexión con la base de datos. + * @param String idfield Campo identificador de la clave ajena para buscar ordenadores. + * @param Integer idvalue Valor a buscar en el ídentificador de la clave ajena. + * @param String lang Idioma de arranque. * @versión 1.0.5 - Primera versión, adaptada de NetBoot Avanzado. * @authors Ramón Gómez - ETSII Universidad de Sevilla * @date 2013-04-25 @@ -216,7 +142,7 @@ function updateBootMode ($cmd, $idfield, $idvalue, $lang) { $idvalue = mysqli_real_escape_string ($cmd->Conexion->controlador, $idvalue); // Obtener los ordenadores asociados al aula y sus plantillas de arranque. - $cmd->texto = "SELECT idordenador AS hostid, arranque AS bootopt + $cmd->texto = "SELECT nombreordenador AS hostname, arranque AS bootopt FROM ordenadores WHERE $idfield=$idvalue"; $rs = new Recordset; @@ -224,11 +150,12 @@ function updateBootMode ($cmd, $idfield, $idvalue, $lang) { if ($rs->Abrir()) { $rs->Primero(); while (! $rs->EOF) { - $hostid=$rs->campos["hostid"]; - if (! empty ($hostid)) { + $hostname=$rs->campos["hostname"]; + if (! empty ($hostname)) { $bootopt=$rs->campos["bootopt"]; + // Volver a crear el fichero de arranque. - createBootMode ($cmd, $bootopt, $hostid, $lang); + createBootMode ($cmd, $bootopt, $hostname, $lang); } $rs->Siguiente(); } @@ -239,9 +166,9 @@ function updateBootMode ($cmd, $idfield, $idvalue, $lang) { /** * updateBootRepo ($cmd, $repoid) * @brief Actualiza la IP del repositorio en los ficheros PXE de todos sus equipos asociados. - * @param {Object} cmd Objeto de conexión con la base de datos - * @param {Integer} repoid Campo identificador del repositorio - * @return {Integer} 0, sin errores; -1, error acceso a BD; >0, ficheros no modificados + * @param Object cmd Objeto de conexión con la base de datos + * @param Integer repoid Campo identificador del repositorio + * @return Integer 0, sin errores; -1, error acceso a BD; >0, ficheros no modificados * @versión 1.1.0 - Primera versión. * @authors Ramón Gómez - ETSII Universidad de Sevilla * @date 2018-01-19 @@ -261,13 +188,15 @@ function updateBootRepo ($cmd, $repoid) { $mac = $rs->campos["mac"]; $repo = $rs->campos["iprepo"]; // Obtener nombre de fichero PXE a partir de la MAC del ordenador cliente. - $macfile = PXEDIR . "/01-" . substr($mac, 0, 2) . "-" . substr($mac, 2, 2) . "-" . substr($mac, 4, 2) . "-" . substr($mac, 6, 2) . "-" . substr($mac, 8, 2) . "-" . substr($mac, 10, 2); + $macfile = "/01-" . substr($mac, 0, 2) . "-" . substr($mac, 2, 2) . "-" . substr($mac, 4, 2) . "-" . substr($mac, 6, 2) . "-" . substr($mac, 8, 2) . "-" . substr($mac, 10, 2); // Actualizar parámetro "ogrepo" en el fichero PXE. - if ($pxecode = @file_get_contents($macfile)) { + foreach (array (PXEDIRBIOS,PXEDIRUEFI) as $bootdir) { + if ($pxecode = @file_get_contents($bootdir.$macfile)) { $pxecode = preg_replace("/ogrepo=[^ ]*/", "ogrepo=$repo", $pxecode); - if (! @file_put_contents($macfile, $pxecode)) { - $erros++; + if (! @file_put_contents($bootdir.$macfile, $pxecode)) { + $errors++; } + } } $rs->Siguiente(); } |