source: admin/WebConsole/varios/incorporaordenadores.php

lgromero-new-oglive
Last change on this file was c7021ef, checked in by Irina Gómez <irinagomez@…>, 5 years ago

#849 Incorporation of Computers reloads computers tree in left frame.

  • Property mode set to 100644
File size: 9.6 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: incorporaordenadores.php
8// Descripción :
9//              Da de alta en la base de datos nuevos ordenadores desde un fichero de configuración dhcp
10// Version 1.1.0: Se obtiene id del repositorio de la OU. Si no existe se muestra alerta para que confirme el alta.
11// Fecha: 2018-10-24
12// *************************************************************************************************************************************************
13include_once("../includes/ctrlacc.php");
14include_once("../clases/AdoPhp.php");
15include_once("../includes/CreaComando.php");
16include_once("../includes/tftputils.php");
17include_once("../idiomas/php/".$idioma."/incorporaordenadores_".$idioma.".php");
18include_once("../idiomas/php/".$idioma."/avisos_".$idioma.".php");
19//________________________________________________________________________________________________________
20$cmd=CreaComando($cadenaconexion);
21if (!$cmd)
22        Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
23//___________________________________________________________________________________________________
24$swf=0;
25$idaula=0;
26$nombreaula="";
27$contenido="";
28$reload="";
29
30if (isset($_GET["idaula"])) $idaula=$_GET["idaula"];
31if (isset($_GET["nombreaula"])) $nombreaula=$_GET["nombreaula"];
32
33if (isset($_POST["swf"])) $swf=$_POST["swf"]; // Recoge parametros
34if (isset($_POST["contenido"])) $contenido=$_POST["contenido"];
35if (isset($_POST["idaula"])) $idaula=$_POST["idaula"];
36if (isset($_POST["nombreaula"])) $nombreaula=$_POST["nombreaula"];
37
38$resul=0;
39$ordDup="";
40$idrepositorio = idrepoOU($cmd,$idaula);
41
42if(!empty($contenido)){ // Se ha introducido contenido en lugar de fichero
43        $resul=procesaLineas($cmd,$idaula,$contenido);
44        // Recargamos el arbol de ordenadores del frame izquierdo.
45        if ($resul==3) $reload='onload="recargar_arbol();"';
46}
47//___________________________________________________________________________________________________
48?>
49<HTML>
50<HEAD>
51    <TITLE>Administración web de aulas</TITLE>
52    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
53    <LINK rel="stylesheet" type="text/css" href="../estilos.css">
54    <SCRIPT language="javascript" src="../idiomas/javascripts/<?php echo $idioma ?>/avisos_<?php echo $idioma ?>.js"></SCRIPT>
55    <SCRIPT>
56        function confirmar(){
57            if (document.fdatos.idrepositorio.value == '' ){
58                if(confirm(TbMsg["WARN_NOREPO"]) != true)
59                    return(false);
60            }
61            document.fdatos.submit();
62        }
63        function cancelar(){
64                document.location.href="../nada.php";
65        }
66        function recargar_arbol(){
67                parent.frame_arbol.location.reload()
68        }
69    </SCRIPT>
70</HEAD>
71<BODY <?php echo $reload?>>
72<FORM action="incorporaordenadores.php" method="post" name="fdatos">
73        <INPUT type="hidden" name="swf" value="1">
74        <INPUT type="hidden" name="idaula" value="<?php echo $idaula?>">
75        <INPUT type="hidden" name="nombreaula" value="<?php echo $nombreaula?>">
76        <INPUT type="hidden" name="idrepositorio" value="<?php echo idrepoOU($cmd,$idaula);?>">
77        <BR>
78        <P align=center class=cabeceras><?php echo $TbMsg[0]?><BR>
79        <SPAN align=center class=subcabeceras><IMG src="../images/iconos/aula.gif">&nbsp;<?php echo $TbMsg[1].":".$nombreaula ?></SPAN></P>
80<!------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
81<table align="center" class="tabla_datos" border="0" cellpadding="0" cellspacing="1">
82<!------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
83        <tr>
84            <th>&nbsp;<?php echo $TbMsg["MSG_DHCPCODE"]?>&nbsp;<br>
85                &nbsp;<?php echo $TbMsg["MSG_DHCPHOST"]?>&nbsp;</th>
86            <td><textarea class="cajatexto" name="contenido" cols="70" rows="18"></textarea></td></tr>
87        <tr><th colspan="2">&nbsp;<?php echo $TbMsg["WARN_NAMELENGTH"]?>&nbsp;</th></tr>
88        <tr><th colspan="2">&nbsp;<?php echo $TbMsg["WARN_NETBOOT"]?>&nbsp;</th></tr>
89<!------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
90</table>
91 </FORM>
92<TABLE align=center>
93        <TR>
94                <TD><IMG src="../images/boton_cancelar.gif" style="cursor:hand"  onclick="cancelar();"></TD>
95                <TD width=20></TD>
96                <TD><IMG src="../images/boton_confirmar.gif" style="cursor:hand"  onclick="confirmar();"></TD>
97        </TR>
98</TABLE>
99<?php
100//________________________________________________________________________________________________________
101// Mensaje con el resultado del proceso
102echo '<SCRIPT>';
103if (!empty($resul))
104        echo "  alert('".$TbMsg[$resul]."');";
105if (!empty($ordDup))
106        echo "  alert('".$TbMsg[5]."\\n".$ordDup."');";
107echo '</SCRIPT>';
108//________________________________________________________________________________________________________
109?>
110</BODY>
111</HTML>
112<?php
113// *************************************************************************************************************************************************
114function procesaLineas($cmd,$idaula,$buffer)
115{
116        $nombre="";
117        $MAC="";
118        $IP="";
119        $sw=false;
120        // Eliminamos comentarios a final de línea
121        $buffer = preg_replace(array("/\#.*\r\n/", "/\#.*\r/", "/\#.*\n/"), "", $buffer."\n");
122
123        $equipos = preg_split('/}/',$buffer);
124
125        // Recorro todos los equipos
126        foreach ($equipos as $equipo) {
127            $nombre = strstr($equipo, '{', true);
128            $nombre = str_replace('host', '', $nombre);
129            $valores = strstr($equipo, '{');
130            // Eliminamos caracteres inútiles
131            $valores = str_replace(array (' ','{',':'), '',$valores);
132
133            $propiedades = preg_split('/;/',$valores);
134
135            // Recorro todas las propiedades
136            foreach ($propiedades as $propiedad) {
137                if (strpos (" $propiedad " , "fixed-address")) {
138                    $IP = str_replace("fixed-address", '', $propiedad);
139                }
140                if (strpos ( " $propiedad " , "hardwareethernet")) {
141                    $MAC = str_replace("hardwareethernet", '', $propiedad);
142                }
143            }
144
145            // Si tengo los valores necesario incluyo el equipo
146            if(!empty($nombre) && !empty($MAC) && !empty($IP)){
147                if(!Inserta($cmd,$idaula,$nombre,$MAC,$IP)) {
148                        return(4);
149                }
150                $sw=true;
151                $nombre="";
152                $MAC="";
153                $IP="";
154                $resul=true;
155            }
156        }
157        if($sw)
158            return(3);
159        else
160            return(4);
161}
162//________________________________________________________________________________________________________
163function Inserta($cmd,$idaula,$nombre,$lamac,$laip)
164{
165        global $ordDup;
166        global $idioma;
167       
168        $grupoid=0;
169        $nombreordenador=trim($nombre);
170        $ip=trim($laip);
171        $auxmac=trim($lamac);
172        $mac="";
173        for($i=0;$i<strlen($auxmac);$i++)
174                if(substr($auxmac,$i,1)!=":")
175                        $mac.=substr($auxmac,$i,1);
176        if(existeOrdenador($cmd,$nombreordenador,$mac,$ip)){
177                $ordDup.="Nombre=".$nombre.",Mac=".$mac.",Dirección ip=".$ip." \\n";
178                return(true);   
179        }
180
181        $idperfilhard=0;
182## ADV: modificacion para asignar a los ordenadores, cuando se crean desde "incorpoar ordenadores" el repositorio "default"
183        $idrepositorio=idrepoOU($cmd,$idaula);
184        $idconfiguracion=0;
185        $cmd->CreaParametro("@grupoid",$grupoid,1);
186        $cmd->CreaParametro("@idaula",$idaula,1);
187        $cmd->CreaParametro("@nombreordenador",$nombreordenador,0);
188        $cmd->CreaParametro("@ip",$ip,0);
189        $cmd->CreaParametro("@mac",$mac,0);
190        $cmd->CreaParametro("@idperfilhard",$idperfilhard,1);
191        $cmd->CreaParametro("@idrepositorio",$idrepositorio,1);
192        $cmd->CreaParametro("@idconfiguracion",$idconfiguracion,1);
193
194        $cmd->texto="INSERT INTO ordenadores (nombreordenador, ip, mac, idperfilhard,
195                                 idrepositorio, router, mascara, idaula, grupoid)
196                          SELECT @nombreordenador, @ip, @mac, @idperfilhard,
197                                 @idrepositorio, router, netmask, @idaula, @grupoid
198                            FROM aulas
199                           WHERE idaula=".$idaula;
200
201        $resul=$cmd->Ejecutar();
202       
203        // Crear fichero de arranque PXE con plantilla por defecto.
204        if ($resul) {
205                createBootMode ($cmd, "", $nombreordenador, $idioma);
206        }
207        return($resul);
208}
209//________________________________________________________________________________________________________
210//      Recupera los datos de un ordenador
211//              Parametros:
212//              - cmd: Un comando ya operativo (con conexión abierta) 
213//              - ip: Dirección IP
214//________________________________________________________________________________________________________
215function existeOrdenador($cmd,$nombre,$MAC,$IP){
216        $rs=new Recordset;
217        $cmd->texto="SELECT * FROM ordenadores WHERE nombreordenador='".$nombre."' OR mac='".$MAC."' OR ip='".$IP."'";
218        $rs->Comando=&$cmd;
219        if (!$rs->Abrir()) return(false); // Error al abrir recordset
220        $rs->Primero();
221        if (!$rs->EOF){
222                $rs->Cerrar();
223                return(true);
224        }
225        else
226                return(false);
227}
228//________________________________________________________________________________
229//      Primer repositorio asignado a la unidad organizativa
230//              Parametros:
231//              - cmd: Un comando ya operativo (con conexión abierta)
232//              - idaula: identificador del aula
233//              Salida: idrepositorio del primer repositorio de la OU o ''
234//________________________________________________________________________________
235function idrepoOU($cmd,$idaula) {
236        $idrepositorio = '';
237        $rs=new Recordset;
238        $cmd->texto="SELECT idrepositorio FROM repositorios ".
239                    " INNER JOIN centros USING (idcentro) ".
240                    " INNER JOIN aulas USING (idcentro) ".
241                    " WHERE idaula=$idaula ORDER BY idrepositorio LIMIT 1;";
242        $rs->Comando=&$cmd;
243        if ($rs->Abrir()) {
244                $rs->Primero();
245                $idrepositorio = $rs->campos["idrepositorio"];
246        }
247        $rs->Cerrar();
248        return $idrepositorio;
249}
250?>
Note: See TracBrowser for help on using the repository browser.