source: admin/WebConsole/gestores/gestor_ordenadores.php @ 4830878

918-git-images-111dconfigure-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-instalacion
Last change on this file since 4830878 was c03f1ab, checked in by Irina Gómez <irinagomez@…>, 3 years ago

#1066 #991 Enable/disable maintenance flag in computer properties form. (equivalent to commit b8bd4c7)

  • Property mode set to 100644
File size: 13.7 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"];
74$maintenance=$_POST["maintenance"]??0;
75if (isset($_POST["ip"])) $ip=$_POST["ip"];
76if (isset($_POST["mac"])) $mac=str_replace(":","",$_POST["mac"]);
77if (isset($_POST["idperfilhard"])) $idperfilhard=$_POST["idperfilhard"];
78if (isset($_POST["idrepositorio"])) $idrepositorio=$_POST["idrepositorio"];
79if (isset($_POST["seleoglive"])) $oglive=$_POST["seleoglive"];
80if (isset($_POST["idmenu"])) $idmenu=$_POST["idmenu"];
81if (isset($_POST["idprocedimiento"])) $idprocedimiento=$_POST["idprocedimiento"];
82
83if (isset($_POST["netiface"])) $netiface=$_POST["netiface"];
84if (isset($_POST["netdriver"])) $netdriver=$_POST["netdriver"];
85######## UHU
86if (isset($_POST["validacion"])) $validacion=$_POST["validacion"];
87if (isset($_POST["paginalogin"])) $paginalogin=$_POST["paginalogin"];
88if (isset($_POST["paginavalidacion"])) $paginavalidacion=$_POST["paginavalidacion"];
89######## Ramón
90if (isset($_POST["arranque"])) $arranque=$_POST["arranque"];
91######## AGP
92if (isset($_POST["coloc"])) $colocar=$_POST["coloc"];
93        if ($colocar=="s"){
94               
95                $cmd=CreaComando($cadenaconexion); // Crea objeto comando
96                $rs=new Recordset;
97                $cmd->texto="SELECT * FROM ordenadores WHERE idordenador=".$idordenador;
98                $rs->Comando=&$cmd;
99                if (!$rs->Abrir()) return(false); // Error al abrir recordset
100                $rs->Primero();
101                if (!$rs->EOF){
102                        $arranque=$rs->campos["arranque"];
103                $rs->Cerrar();
104                }
105        }
106######## AGP
107               
108$tablanodo=""; // Arbol para nodos insertados
109//________________________________________________________________________________________________________
110$cmd=CreaComando($cadenaconexion); // Crea objeto comando
111$resul=false;
112if ($cmd){
113        if ($idaula==0)
114                $idaula=toma_aula($cmd,$grupoid);
115        $resul=Gestiona();
116        $cmd->Conexion->Cerrar();
117}
118if($opcion!=$op_movida){
119        echo '<HTML>';
120        echo '<HEAD>';
121        echo '  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">';
122        echo '<BODY>';
123        echo '<P><SPAN style="visibility:hidden" id="arbol_nodo">'.$tablanodo.'</SPAN></P>';
124        echo '  <SCRIPT language="javascript" src="../jscripts/propiedades_ordenadores.js"></SCRIPT>';
125        echo '<SCRIPT language="javascript">'.chr(13);
126        if ($resul){
127                echo 'var oHTML'.chr(13);
128                echo 'var cTBODY=document.getElementsByTagName("TBODY");'.chr(13);
129                echo 'o=cTBODY.item(1);'.chr(13);
130        }
131}
132//________________________________________________________________________________________________________
133        $literal="";
134        switch($opcion){
135                case $op_alta :
136                        $literal="resultado_insertar_ordenadores";
137                        break;
138                case $op_modificacion:
139                        $literal="resultado_modificar_ordenadores";
140                        break;
141                case $op_eliminacion :
142                        $literal="resultado_eliminar_ordenadores";
143                        break;
144                case $op_movida :
145                        $literal="resultado_cambiar_ordenadores";
146                        break;
147                default:
148                        break;
149        }
150if ($resul){
151        if ($opcion == $op_alta) {
152            if ( $datosduplicados != '') {
153                echo $literal."(0,'".$TbMsg["DUPLICADO"].$datosduplicados." ',".$idordenador.",o.innerHTML);".chr(13);
154            } else {
155                echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idordenador.",o.innerHTML);".chr(13);
156            }
157    } elseif ($opcion == $op_modificacion) {
158            if ( $datosduplicados != '') {
159                echo $literal."(0,'".$TbMsg["DUPLICADO"].$datosduplicados." ','".$nombreordenador."');".chr(13);
160            } else {
161                echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$nombreordenador."');".chr(13);
162            }
163    }
164        else
165                echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$nombreordenador."');".chr(13);
166}
167else
168        echo $literal."(0,'".$cmd->DescripUltimoError()."',".$idordenador.")";
169
170if($opcion!=$op_movida){
171        echo '  </SCRIPT>';
172        echo '</BODY>   ';
173        echo '</HTML>';
174}
175?>
176<script>
177        // Capturar el iframe donde se muestra el arbol de aulas,
178        // Al estar dentro del iframe de contenido, debemos acceder al padre y desde ahi acceder al iframe del arbol para recargarlo
179        var iframe = this.parent.document.getElementsByName("frame_arbol")[0];
180        // recargar iframe
181        iframe.src = iframe.src;
182</script>
183<?php
184/**************************************************************************************************************************************************
185        Busca identificador del aula de un grupo de ordenador .Devuelve el identificador del aula a la que pertenece el grupo
186                Parametros:
187                - cmd:Una comando ya operativo (con conexión abierta) 
188________________________________________________________________________________________________________*/
189function toma_aula($cmd,$idgrupo){
190        $rs=new Recordset;
191        $cmd->texto="SELECT idaula FROM gruposordenadores WHERE idgrupo=".$idgrupo;
192        $rs->Comando=&$cmd;
193        if (!$rs->Abrir()) return(0); // Error al abrir recordset
194        $rs->Primero();
195        if (!$rs->EOF)
196                return($rs->campos["idaula"]);
197        else
198                return(0);
199}
200/*________________________________________________________________________________________________________
201        Inserta, modifica o elimina datos en la tabla ordenadores
202________________________________________________________________________________________________________*/
203function Gestiona(){
204        global $cmd;
205        global $opcion;
206        global $fotoordenador;
207        global $grupoid;
208        global $idordenador;
209        global $nombreordenador;
210        global $numserie;
211        global $maintenance;
212        global $ip;
213        global $mac;
214        global $idaula;
215        global $idperfilhard;
216        global $idrepositorio;
217        global $oglive;
218        global $idmenu;
219        global $idprocedimiento;
220        global $netiface;
221        global $netdriver;
222######################## UHU
223        global $validacion;
224        global $paginalogin;
225        global $paginavalidacion;
226######################## Ramón
227        global $arranque;
228        global $idioma;
229
230        global $op_alta;
231        global $op_modificacion;
232        global $op_eliminacion;
233        global $op_movida;
234        global $tablanodo;
235
236####################### Irina
237        global $datosduplicados;
238
239       
240        $cmd->CreaParametro("@grupoid",$grupoid,1);
241        $cmd->CreaParametro("@idaula",$idaula,1);
242        $cmd->CreaParametro("@idordenador",$idordenador,1);
243        $cmd->CreaParametro("@nombreordenador",$nombreordenador,0);
244        $cmd->CreaParametro("@numserie",$numserie,0);
245        $cmd->CreaParametro("@maintenance",$maintenance,1);
246        $cmd->CreaParametro("@ip",$ip,0);
247        $cmd->CreaParametro("@mac",$mac,0);
248        $cmd->CreaParametro("@idperfilhard",$idperfilhard,1);
249        $cmd->CreaParametro("@idrepositorio",$idrepositorio,1);
250        $cmd->CreaParametro("@oglivedir",$oglive,0);
251        $cmd->CreaParametro("@idmenu",$idmenu,1);
252        $cmd->CreaParametro("@idprocedimiento",$idprocedimiento,1);
253        $cmd->CreaParametro("@netiface",$netiface,0);
254        $cmd->CreaParametro("@netdriver",$netdriver,0);
255        $cmd->CreaParametro("@fotoordenador",$fotoordenador,0);
256######################################################### UHU
257        $cmd->CreaParametro("@validacion",$validacion,0);
258        $cmd->CreaParametro("@paginalogin",$paginalogin,0);
259        $cmd->CreaParametro("@paginavalidacion",$paginavalidacion,0);
260######################################################### UHU
261
262
263        switch($opcion){
264                case $op_alta :
265            $duplicates = checkDuplicates($cmd, $datosduplicados, $idordenador, $nombreordenador, $ip, $mac);
266            // Si no hay datos duplicados insertamos el ordenador;
267            if (!$duplicates) {
268                    $cmd->texto = <<<EOD
269INSERT INTO ordenadores
270        (nombreordenador, numserie, maintenance, ip, mac,
271        idperfilhard, idrepositorio, oglivedir, idmenu, idproautoexec,
272        idaula, grupoid, netiface, netdriver, fotoord,
273        validacion, paginalogin, paginavalidacion)
274VALUES (@nombreordenador, @numserie, @maintenance, @ip, @mac,
275        @idperfilhard, @idrepositorio, @oglivedir, @idmenu, @idprocedimiento,
276        @idaula, @grupoid, @netiface, @netdriver, @fotoordenador,
277        @validacion, @paginalogin, @paginavalidacion);
278EOD;
279             }
280            $resul=$cmd->Ejecutar();
281                        if ($resul){ // Crea una tabla nodo para devolver a la página que llamó ésta
282                            $idordenador=$cmd->Autonumerico();
283                            // Crear fichero TFTP/PXE por defecto para el nuevo ordenador.
284                            createBootMode ($cmd, "", $nombreordenador, $idioma);
285                            // Insertar datos en el árbol de configuración.
286                            $arbolXML=SubarbolXML_ordenadores($idordenador,$nombreordenador);
287                            $baseurlimg="../images/signos"; // Url de las imagenes de signo
288                            $clasedefault="texto_arbol"; // Hoja de estilo (Clase por defecto) del árbol
289                            $arbol=new ArbolVistaXML($arbolXML,0,$baseurlimg,$clasedefault);
290                            $tablanodo=$arbol->CreaArbolVistaXML();
291                        }
292                        break;
293        case $op_modificacion:
294            $duplicates = checkDuplicates($cmd, $datosduplicados, $idordenador, $nombreordenador, $ip, $mac);
295            if (!$duplicates) {
296                    $cmd->texto = <<<EOD
297UPDATE ordenadores
298   SET nombreordenador=@nombreordenador, numserie=@numserie, maintenance=@maintenance,
299       ip=@ip, mac=@mac, idperfilhard=@idperfilhard,
300       idrepositorio=@idrepositorio, oglivedir=@oglivedir, idmenu=@idmenu,
301       idproautoexec=@idprocedimiento, netiface=@netiface, netdriver=@netdriver,
302       fotoord=@fotoordenador,
303       validacion=@validacion, paginalogin=@paginalogin,paginavalidacion=@paginavalidacion
304   WHERE idordenador=@idordenador;
305EOD;
306            }
307                        $resul=$cmd->Ejecutar();
308                        // Actualizar fichero TFTP/PXE a partir de la plantilla asociada.
309                        createBootMode ($cmd, $arranque, $nombreordenador, $idioma);
310                        break;
311                case $op_eliminacion :
312                        $resul=EliminaOrdenadores($cmd,$idordenador,"idordenador");// Eliminación en cascada
313                        // Borrar fichero PXE.
314                        deleteBootFile ($mac);
315                        break;
316                case $op_movida :
317                        $cmd->texto="UPDATE ordenadores SET idaula=@idaula, grupoid=@grupoid WHERE idordenador=@idordenador";
318                        $resul=$cmd->Ejecutar();
319                        // Actualizar fichero TFTP/PXE a partir de la plantilla asociada.
320                        createBootMode ($cmd, $arranque, $nombreordenador, $idioma);
321                        break;
322                default:
323                        break;
324        }
325        return($resul);
326}
327
328function checkDuplicates(&$cmd, &$duplicate_data, $computer_id, $computer_name, $ip, $mac){
329        $cmd->texto="SELECT idordenador,nombreordenador,ip,mac FROM  ordenadores
330                WHERE nombreordenador=@nombreordenador OR ip=@ip OR mac=@mac";
331        $rs = new Recordset;
332        $rs->Comando=&$cmd;
333        if (!$rs->Abrir()) return(0);
334        $rs->Primero();
335        while (!$rs->EOF) {
336                if ($computer_id != $rs->campos["idordenador"]) {
337                        if ( $computer_name == $rs->campos["nombreordenador"])
338                                $duplicate_data ="nombre: $computer_name,";
339                        if ( $ip == $rs->campos["ip"])
340                                $duplicate_data .=" ip: $ip,";
341                        if (strtoupper($mac) == strtoupper($rs->campos["mac"]))
342                                $duplicate_data .=" mac: $mac,";
343           }
344           $rs->Siguiente();
345        }
346        $rs->Cerrar();
347        $duplicate_data = trim($duplicate_data, ',');
348        $ret = !empty($duplicate_data);
349        return($ret);
350}
351
352/*________________________________________________________________________________________________________
353        Crea un arbol XML para el nuevo nodo insertado
354________________________________________________________________________________________________________*/
355function SubarbolXML_ordenadores($idordenador,$nombreordenador){
356                global $LITAMBITO_ORDENADORES;
357                $cadenaXML='<ORDENADOR';
358                // Atributos                   
359                $cadenaXML.=' clickcontextualnodo="menu_contextual(this,' ."'flo_".$LITAMBITO_ORDENADORES."'" .')"';
360                $cadenaXML.=' imagenodo="../images/iconos/ordenador.gif"';
361                $cadenaXML.=' infonodo="'.$nombreordenador.'"';
362                $cadenaXML.=' nodoid='.$LITAMBITO_ORDENADORES.'-'.$idordenador;
363                $cadenaXML.='></ORDENADOR>';
364                return($cadenaXML);
365}
366?>
367
Note: See TracBrowser for help on using the repository browser.