source: admin/WebConsole/varios/incorporaordenadores.php @ fec3e4f

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-instalacion
Last change on this file since fec3e4f was 52ff489, checked in by Irina Gómez <irinagomez@…>, 6 years ago

#849 Fix 'Incorpore computer': shows a message when new computer are duplicates

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