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
RevLine 
[4a81502]1<?php
[3ec149c]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
[6544149]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
[3ec149c]12// *************************************************************************************************************************************************
13include_once("../includes/ctrlacc.php");
14include_once("../clases/AdoPhp.php");
15include_once("../includes/CreaComando.php");
[8c2a78c]16include_once("../includes/tftputils.php");
[3ec149c]17include_once("../idiomas/php/".$idioma."/incorporaordenadores_".$idioma.".php");
[6459703]18include_once("../idiomas/php/".$idioma."/avisos_".$idioma.".php");
[3ec149c]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="";
[c7021ef]28$reload="";
[3ec149c]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="";
[6544149]40$idrepositorio = idrepoOU($cmd,$idaula);
[3ec149c]41
42if(!empty($contenido)){ // Se ha introducido contenido en lugar de fichero
43        $resul=procesaLineas($cmd,$idaula,$contenido);
[c7021ef]44        // Recargamos el arbol de ordenadores del frame izquierdo.
45        if ($resul==3) $reload='onload="recargar_arbol();"';
[3ec149c]46}
47//___________________________________________________________________________________________________
48?>
49<HTML>
50<HEAD>
[6544149]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        }
[c7021ef]63        function cancelar(){
64                document.location.href="../nada.php";
65        }
66        function recargar_arbol(){
67                parent.frame_arbol.location.reload()
68        }
[6544149]69    </SCRIPT>
[3ec149c]70</HEAD>
[c7021ef]71<BODY <?php echo $reload?>>
[3ec149c]72<FORM action="incorporaordenadores.php" method="post" name="fdatos">
[6544149]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);?>">
[3ec149c]77        <BR>
[043e67d]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>
[3ec149c]80<!------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
[6459703]81<table align="center" class="tabla_datos" border="0" cellpadding="0" cellspacing="1">
[3ec149c]82<!------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
[6459703]83        <tr>
[da05968]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>
[4a81502]87        <tr><th colspan="2">&nbsp;<?php echo $TbMsg["WARN_NAMELENGTH"]?>&nbsp;</th></tr>
[da05968]88        <tr><th colspan="2">&nbsp;<?php echo $TbMsg["WARN_NETBOOT"]?>&nbsp;</th></tr>
[3ec149c]89<!------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
[6459703]90</table>
[3ec149c]91 </FORM>
92<TABLE align=center>
93        <TR>
[c7021ef]94                <TD><IMG src="../images/boton_cancelar.gif" style="cursor:hand"  onclick="cancelar();"></TD>
[3ec149c]95                <TD width=20></TD>
[6544149]96                <TD><IMG src="../images/boton_confirmar.gif" style="cursor:hand"  onclick="confirmar();"></TD>
[3ec149c]97        </TR>
98</TABLE>
[4a81502]99<?php
[3ec149c]100//________________________________________________________________________________________________________
101// Mensaje con el resultado del proceso
[52ff489]102echo '<SCRIPT>';
[3ec149c]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>
[4a81502]112<?php
[3ec149c]113// *************************************************************************************************************************************************
114function procesaLineas($cmd,$idaula,$buffer)
115{
116        $nombre="";
117        $MAC="";
118        $IP="";
119        $sw=false;
[8296e89]120        // Eliminamos comentarios a final de línea
121        $buffer = preg_replace(array("/\#.*\r\n/", "/\#.*\r/", "/\#.*\n/"), "", $buffer."\n");
[3ec149c]122
[cf9731f]123        $equipos = preg_split('/}/',$buffer);
[3ec149c]124
[cf9731f]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            }
[3ec149c]156        }
157        if($sw)
[cf9731f]158            return(3);
[3ec149c]159        else
[cf9731f]160            return(4);
[3ec149c]161}
162//________________________________________________________________________________________________________
163function Inserta($cmd,$idaula,$nombre,$lamac,$laip)
164{
165        global $ordDup;
[8c2a78c]166        global $idioma;
[3ec149c]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);   
[039e025]179        }
[30e0a23]180
[3ec149c]181        $idperfilhard=0;
[58d08a2]182## ADV: modificacion para asignar a los ordenadores, cuando se crean desde "incorpoar ordenadores" el repositorio "default"
[6544149]183        $idrepositorio=idrepoOU($cmd,$idaula);
[3ec149c]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);
[30e0a23]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;
[6544149]200
[3ec149c]201        $resul=$cmd->Ejecutar();
[039e025]202       
[8c2a78c]203        // Crear fichero de arranque PXE con plantilla por defecto.
204        if ($resul) {
[831de70]205                createBootMode ($cmd, "", $nombreordenador, $idioma);
[8c2a78c]206        }
[3ec149c]207        return($resul);
208}
209//________________________________________________________________________________________________________
210//      Recupera los datos de un ordenador
211//              Parametros:
[6544149]212//              - cmd: Un comando ya operativo (con conexión abierta) 
[3ec149c]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}
[6544149]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}
[3ec149c]250?>
Note: See TracBrowser for help on using the repository browser.