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 | // ************************************************************************************************************************************************* |
---|
13 | include_once("../includes/ctrlacc.php"); |
---|
14 | include_once("../clases/AdoPhp.php"); |
---|
15 | include_once("../includes/CreaComando.php"); |
---|
16 | include_once("../includes/tftputils.php"); |
---|
17 | include_once("../idiomas/php/".$idioma."/incorporaordenadores_".$idioma.".php"); |
---|
18 | include_once("../idiomas/php/".$idioma."/avisos_".$idioma.".php"); |
---|
19 | //________________________________________________________________________________________________________ |
---|
20 | $cmd=CreaComando($cadenaconexion); |
---|
21 | if (!$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 | |
---|
30 | if (isset($_GET["idaula"])) $idaula=$_GET["idaula"]; |
---|
31 | if (isset($_GET["nombreaula"])) $nombreaula=$_GET["nombreaula"]; |
---|
32 | |
---|
33 | if (isset($_POST["swf"])) $swf=$_POST["swf"]; // Recoge parametros |
---|
34 | if (isset($_POST["contenido"])) $contenido=$_POST["contenido"]; |
---|
35 | if (isset($_POST["idaula"])) $idaula=$_POST["idaula"]; |
---|
36 | if (isset($_POST["nombreaula"])) $nombreaula=$_POST["nombreaula"]; |
---|
37 | |
---|
38 | $resul=0; |
---|
39 | $ordDup=""; |
---|
40 | $idrepositorio = idrepoOU($cmd,$idaula); |
---|
41 | |
---|
42 | if(!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"> <?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> <?php echo $TbMsg["MSG_DHCPCODE"]?> <br> |
---|
85 | <?php echo $TbMsg["MSG_DHCPHOST"]?> </th> |
---|
86 | <td><textarea class="cajatexto" name="contenido" cols="70" rows="18"></textarea></td></tr> |
---|
87 | <tr><th colspan="2"> <?php echo $TbMsg["WARN_NAMELENGTH"]?> </th></tr> |
---|
88 | <tr><th colspan="2"> <?php echo $TbMsg["WARN_NETBOOT"]?> </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 |
---|
102 | echo '<SCRIPT>'; |
---|
103 | if (!empty($resul)) |
---|
104 | echo " alert('".$TbMsg[$resul]."');"; |
---|
105 | if (!empty($ordDup)) |
---|
106 | echo " alert('".$TbMsg[5]."\\n".$ordDup."');"; |
---|
107 | echo '</SCRIPT>'; |
---|
108 | //________________________________________________________________________________________________________ |
---|
109 | ?> |
---|
110 | </BODY> |
---|
111 | </HTML> |
---|
112 | <?php |
---|
113 | // ************************************************************************************************************************************************* |
---|
114 | function 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 | //________________________________________________________________________________________________________ |
---|
163 | function 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 | //________________________________________________________________________________________________________ |
---|
215 | function 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 | //________________________________________________________________________________ |
---|
235 | function 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 | ?> |
---|