source: admin/WebConsole/gestores/gestor_ordenadores.php @ 97b6579

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since 97b6579 was b50031b, checked in by Ramón M. Gómez <ramongomez@…>, 7 years ago

#872: Labs tree will be collapsed after modifying computer properties; updating closed tickets list.

  • Property mode set to 100644
File size: 13.3 KB
Line 
1<?php
2// *************************************************************************************************************************************************
3// Aplicación WEB: ogAdmWebCon
4// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
5// Fecha Creación: Año 2009-2010
6// Fecha Última modificación: Agosto-2010
7// Nombre del fichero: gestor_ordenadores.php
8// Descripción :
9//              Gestiona el mantenimiento de la tabla de ordenadores
10// Versión 1.1.0: Al insertar ordenador se comprueba que no existen duplicados nombre, ip y mac
11// Autor: Irina Gómez  - ETSII, Universidad de Sevilla
12// Fecha: 2016-03-04
13// *************************************************************************************************************************************************
14include_once("../includes/ctrlacc.php");
15include_once("../clases/AdoPhp.php");
16include_once("../clases/XmlPhp.php");
17include_once("../clases/ArbolVistaXML.php");
18include_once("../includes/CreaComando.php");
19include_once("../includes/constantes.php");
20include_once("./relaciones/ordenadores_eliminacion.php");
21include_once("../includes/tftputils.php");
22include_once("../includes/opciones.php");
23include_once("../idiomas/php/".$idioma."/gestor_ordenadores_".$idioma.".php");
24
25//________________________________________________________________________________________________________
26$opcion=0; // Inicializa parametros
27
28$fotoordenador="";
29$grupoid=0;
30$idaula=0;
31$idordenador=0;
32$nombreordenador="";
33$numserie="";
34$ip="";
35$mac="";
36$idperfilhard=0;
37$idrepositorio=0;
38### AGP
39$oglive="ogLive";
40$idmenu=0;
41$idprocedimiento=0;
42$idimagen=0;
43$colocar="";
44#### ADV
45$netiface="";
46$netdriver="";
47### UHU
48$validacion="";
49$paginalogin="";
50$paginavalidacion="";
51### Ramón
52$arranque="";
53### Irina
54$datosduplicados="";
55
56//##agp
57if (isset($_FILES['archivo'])) {
58        if($_FILES['archivo']['type']=="image/gif" || $_FILES['archivo']['type']=="image/jpeg" || $_FILES['archivo']['type']=="image/jpg" || $_FILES['archivo']['type']=="image/png" || $_FILES['archivo']['type']=="image/JPG") {
59                $uploaddir ="../images/fotos/";
60                $uploadfile = $uploaddir.$_FILES['archivo']['name'];
61                move_uploaded_file($_FILES['archivo']['tmp_name'], $uploadfile);
62                #copy($_FILES['archivo']['tmp_name'], $uploadfile);
63        }
64}
65//##agp
66if (isset($_POST["fotoordenador"])) $fotoordenador=$_POST["fotoordenador"];
67if (isset($_POST["opcion"])) $opcion=$_POST["opcion"]; // Recoge parametros
68if (isset($_POST["grupoid"])) $grupoid=$_POST["grupoid"];
69if (isset($_POST["idaula"])) $idaula=$_POST["idaula"];
70if (isset($_POST["idordenador"])) $idordenador=$_POST["idordenador"];
71if (isset($_POST["identificador"])) $idordenador=$_POST["identificador"];
72if (isset($_POST["nombreordenador"])) $nombreordenador=$_POST["nombreordenador"];
73if (isset($_POST["numserie"])) $numserie=$_POST["numserie"];
74if (isset($_POST["ip"])) $ip=$_POST["ip"];
75if (isset($_POST["mac"])) $mac=str_replace(":","",$_POST["mac"]);
76if (isset($_POST["idperfilhard"])) $idperfilhard=$_POST["idperfilhard"];
77if (isset($_POST["idrepositorio"])) $idrepositorio=$_POST["idrepositorio"];
78if (isset($_POST["seleoglive"])) $oglive=$_POST["seleoglive"];
79if (isset($_POST["idmenu"])) $idmenu=$_POST["idmenu"];
80if (isset($_POST["idprocedimiento"])) $idprocedimiento=$_POST["idprocedimiento"];
81
82if (isset($_POST["netiface"])) $netiface=$_POST["netiface"];
83if (isset($_POST["netdriver"])) $netdriver=$_POST["netdriver"];
84######## UHU
85if (isset($_POST["validacion"])) $validacion=$_POST["validacion"];
86if (isset($_POST["paginalogin"])) $paginalogin=$_POST["paginalogin"];
87if (isset($_POST["paginavalidacion"])) $paginavalidacion=$_POST["paginavalidacion"];
88######## Ramón
89if (isset($_POST["arranque"])) $arranque=$_POST["arranque"];
90######## AGP
91if (isset($_POST["coloc"])) $colocar=$_POST["coloc"];
92        if ($colocar=="s"){
93               
94                $cmd=CreaComando($cadenaconexion); // Crea objeto comando
95                $rs=new Recordset;
96                $cmd->texto="SELECT * FROM ordenadores WHERE idordenador=".$idordenador;
97                $rs->Comando=&$cmd;
98                if (!$rs->Abrir()) return(false); // Error al abrir recordset
99                $rs->Primero();
100                if (!$rs->EOF){
101                        $arranque=$rs->campos["arranque"];
102                $rs->Cerrar();
103                }
104        }
105######## AGP
106               
107$tablanodo=""; // Arbol para nodos insertados
108//________________________________________________________________________________________________________
109$cmd=CreaComando($cadenaconexion); // Crea objeto comando
110$resul=false;
111if ($cmd){
112        if ($idaula==0)
113                $idaula=toma_aula($cmd,$grupoid);
114        $resul=Gestiona();
115        $cmd->Conexion->Cerrar();
116}
117if($opcion!=$op_movida){
118        echo '<HTML>';
119        echo '<HEAD>';
120        echo '  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">';
121        echo '<BODY>';
122        echo '<P><SPAN style="visibility:hidden" id="arbol_nodo">'.$tablanodo.'</SPAN></P>';
123        echo '  <SCRIPT language="javascript" src="../jscripts/propiedades_ordenadores.js"></SCRIPT>';
124        echo '<SCRIPT language="javascript">'.chr(13);
125        if ($resul){
126                echo 'var oHTML'.chr(13);
127                echo 'var cTBODY=document.getElementsByTagName("TBODY");'.chr(13);
128                echo 'o=cTBODY.item(1);'.chr(13);
129        }
130}
131//________________________________________________________________________________________________________
132        $literal="";
133        switch($opcion){
134                case $op_alta :
135                        $literal="resultado_insertar_ordenadores";
136                        break;
137                case $op_modificacion:
138                        $literal="resultado_modificar_ordenadores";
139                        break;
140                case $op_eliminacion :
141                        $literal="resultado_eliminar_ordenadores";
142                        break;
143                case $op_movida :
144                        $literal="resultado_cambiar_ordenadores";
145                        break;
146                default:
147                        break;
148        }
149if ($resul){
150        if ($opcion==$op_alta ) {
151            if ( $datosduplicados != '') {
152                echo $literal."(0,'".$TbMsg["DUPLICADO"].$datosduplicados." ',".$idordenador.",o.innerHTML);".chr(13);
153            } else { 
154                echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idordenador.",o.innerHTML);".chr(13);
155            }
156        }
157        else
158                echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$nombreordenador."');".chr(13);
159}
160else
161        echo $literal."(0,'".$cmd->DescripUltimoError()."',".$idordenador.")";
162
163if($opcion!=$op_movida){
164        echo '  </SCRIPT>';
165        echo '</BODY>   ';
166        echo '</HTML>';
167}
168?>
169<script>
170        // Capturar el iframe donde se muestra el arbol de aulas,
171        // Al estar dentro del iframe de contenido, debemos acceder al padre y desde ahi acceder al iframe del arbol para recargarlo
172        var iframe = this.parent.document.getElementsByName("frame_arbol")[0];
173        // recargar iframe
174        iframe.src = iframe.src;
175</script>
176<?php
177/**************************************************************************************************************************************************
178        Busca identificador del aula de un grupo de ordenador .Devuelve el identificador del aula a la que pertenece el grupo
179                Parametros:
180                - cmd:Una comando ya operativo (con conexión abierta) 
181________________________________________________________________________________________________________*/
182function toma_aula($cmd,$idgrupo){
183        $rs=new Recordset;
184        $cmd->texto="SELECT idaula FROM gruposordenadores WHERE idgrupo=".$idgrupo;
185        $rs->Comando=&$cmd;
186        if (!$rs->Abrir()) return(0); // Error al abrir recordset
187        $rs->Primero();
188        if (!$rs->EOF)
189                return($rs->campos["idaula"]);
190        else
191                return(0);
192}
193/*________________________________________________________________________________________________________
194        Inserta, modifica o elimina datos en la tabla ordenadores
195________________________________________________________________________________________________________*/
196function Gestiona(){
197        global $cmd;
198        global $opcion;
199        global $fotoordenador;
200        global $grupoid;
201        global $idordenador;
202        global $nombreordenador;
203        global $numserie;
204        global $ip;
205        global $mac;
206        global $idaula;
207        global $idperfilhard;
208        global $idrepositorio;
209        global $oglive;
210        global $idmenu;
211        global $idprocedimiento;
212        global $netiface;
213        global $netdriver;
214######################## UHU
215        global $validacion;
216        global $paginalogin;
217        global $paginavalidacion;
218######################## Ramón
219        global $arranque;
220        global $idioma;
221
222        global $op_alta;
223        global $op_modificacion;
224        global $op_eliminacion;
225        global $op_movida;
226        global $tablanodo;
227
228####################### Irina
229        global $datosduplicados;
230
231       
232        $cmd->CreaParametro("@grupoid",$grupoid,1);
233        $cmd->CreaParametro("@idaula",$idaula,1);
234        $cmd->CreaParametro("@idordenador",$idordenador,1);
235        $cmd->CreaParametro("@nombreordenador",$nombreordenador,0);
236        $cmd->CreaParametro("@numserie",$numserie,0);
237        $cmd->CreaParametro("@ip",$ip,0);
238        $cmd->CreaParametro("@mac",$mac,0);
239        $cmd->CreaParametro("@idperfilhard",$idperfilhard,1);
240        $cmd->CreaParametro("@idrepositorio",$idrepositorio,1);
241        $cmd->CreaParametro("@oglivedir",$oglive,0);
242        $cmd->CreaParametro("@idmenu",$idmenu,1);
243        $cmd->CreaParametro("@idprocedimiento",$idprocedimiento,1);
244        $cmd->CreaParametro("@netiface",$netiface,0);
245        $cmd->CreaParametro("@netdriver",$netdriver,0);
246        $cmd->CreaParametro("@fotoordenador",$fotoordenador,0);
247######################################################### UHU
248        $cmd->CreaParametro("@validacion",$validacion,0);
249        $cmd->CreaParametro("@paginalogin",$paginalogin,0);
250        $cmd->CreaParametro("@paginavalidacion",$paginavalidacion,0);
251######################################################### UHU
252
253
254        switch($opcion){
255                case $op_alta :
256                        // Comprueba que no existan duplicados
257                        $ipduplicada='no';
258                        $nombreduplicado='no';
259                        $macduplicada='no';
260                        $cmd->texto="SELECT nombreordenador,ip,mac FROM  ordenadores
261                                WHERE nombreordenador=@nombreordenador OR ip=@ip OR mac=@mac";
262                        $rs=new Recordset;
263                        $rs->Comando=&$cmd;
264                        if (!$rs->Abrir()) return(0); // Error al abrir recordset
265                        $rs->Primero();
266                        while (!$rs->EOF){
267                           if ( $nombreordenador == $rs->campos["nombreordenador"]) $datosduplicados ="nombre: $nombreordenador,";
268                           if ( $ip == $rs->campos["ip"]) $datosduplicados .=" ip: $ip,";
269                           if ( $mac == $rs->campos["mac"]) $datosduplicados .=" mac: $mac,";
270                           $rs->Siguiente();
271                        }
272                        $rs->Cerrar();
273                        // quitamos última coma
274                        $datosduplicados = trim($datosduplicados, ',');
275
276                        // Si no hay datos duplicados insertamos el ordenador;
277                        if ( $datosduplicados == "" ) {
278                             //Insertar fotoord con Values @fotoordenador
279                             $cmd->texto="INSERT INTO ordenadores(nombreordenador,numserie,ip,mac,idperfilhard,idrepositorio,oglivedir,
280                             idmenu,idproautoexec,idaula,grupoid,netiface,netdriver,fotoord,validacion,paginalogin,paginavalidacion) VALUES (@nombreordenador,@numserie,@ip,@mac,@idperfilhard,@idrepositorio,@oglivedir,
281                             @idmenu,@idprocedimiento,@idaula,@grupoid,@netiface,@netdriver,@fotoordenador,@validacion,@paginalogin,@paginavalidacion)";
282                        }
283                        $resul=$cmd->Ejecutar();
284                        if ($resul){ // Crea una tabla nodo para devolver a la página que llamó ésta
285                            $idordenador=$cmd->Autonumerico();
286                            // Crear fichero TFTP/PXE por defecto para el nuevo ordenador.
287                            createBootMode ($cmd, "", $idordenador, $idioma);
288                            // Insertar datos en el árbol de configuración.
289                            $arbolXML=SubarbolXML_ordenadores($idordenador,$nombreordenador);
290                            $baseurlimg="../images/signos"; // Url de las imagenes de signo
291                            $clasedefault="texto_arbol"; // Hoja de estilo (Clase por defecto) del árbol
292                            $arbol=new ArbolVistaXML($arbolXML,0,$baseurlimg,$clasedefault);
293                            $tablanodo=$arbol->CreaArbolVistaXML();
294                        }
295                        break;
296                case $op_modificacion:
297                        $cmd->texto="UPDATE ordenadores SET nombreordenador=@nombreordenador,numserie=@numserie,ip=@ip,mac=@mac,idperfilhard=@idperfilhard,
298                        idrepositorio=@idrepositorio,oglivedir=@oglivedir,idmenu=@idmenu,idproautoexec=@idprocedimiento,netiface=@netiface,netdriver=@netdriver,fotoord=@fotoordenador,validacion=@validacion,paginalogin=@paginalogin,paginavalidacion=@paginavalidacion
299                        WHERE idordenador=@idordenador";
300                        $resul=$cmd->Ejecutar();
301                        // Actualizar fichero TFTP/PXE a partir de la plantilla asociada.
302                        createBootMode ($cmd, $arranque, $idordenador, $idioma);
303                        break;
304                case $op_eliminacion :
305                        $resul=EliminaOrdenadores($cmd,$idordenador,"idordenador");// Eliminación en cascada
306                        // Borrar fichero PXE.
307                        deleteBootFile ($mac);
308                        break;
309                case $op_movida :
310                        $cmd->texto="UPDATE ordenadores SET idaula=@idaula, grupoid=@grupoid WHERE idordenador=@idordenador";
311                        $resul=$cmd->Ejecutar();
312                        // Actualizar fichero TFTP/PXE a partir de la plantilla asociada.
313                        createBootMode ($cmd, $arranque, $idordenador, $idioma);
314                        break;
315                default:
316                        break;
317        }
318        return($resul);
319}
320/*________________________________________________________________________________________________________
321        Crea un arbol XML para el nuevo nodo insertado
322________________________________________________________________________________________________________*/
323function SubarbolXML_ordenadores($idordenador,$nombreordenador){
324                global $LITAMBITO_ORDENADORES;
325                $cadenaXML='<ORDENADOR';
326                // Atributos                   
327                $cadenaXML.=' clickcontextualnodo="menu_contextual(this,' ."'flo_".$LITAMBITO_ORDENADORES."'" .')"';
328                $cadenaXML.=' imagenodo="../images/iconos/ordenador.gif"';
329                $cadenaXML.=' infonodo="'.$nombreordenador.'"';
330                $cadenaXML.=' nodoid='.$LITAMBITO_ORDENADORES.'-'.$idordenador;
331                $cadenaXML.='></ORDENADOR>';
332                return($cadenaXML);
333}
334?>
335
Note: See TracBrowser for help on using the repository browser.