[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 | // ************************************************************************************************************************************************* |
---|
| 13 | include_once("../includes/ctrlacc.php"); |
---|
| 14 | include_once("../clases/AdoPhp.php"); |
---|
| 15 | include_once("../includes/CreaComando.php"); |
---|
[8c2a78c] | 16 | include_once("../includes/tftputils.php"); |
---|
[3ec149c] | 17 | include_once("../idiomas/php/".$idioma."/incorporaordenadores_".$idioma.".php"); |
---|
[6459703] | 18 | include_once("../idiomas/php/".$idioma."/avisos_".$idioma.".php"); |
---|
[3ec149c] | 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=""; |
---|
[c7021ef] | 28 | $reload=""; |
---|
[3ec149c] | 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=""; |
---|
[6544149] | 40 | $idrepositorio = idrepoOU($cmd,$idaula); |
---|
[3ec149c] | 41 | |
---|
| 42 | if(!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"> <?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> <?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> |
---|
[4a81502] | 87 | <tr><th colspan="2"> <?php echo $TbMsg["WARN_NAMELENGTH"]?> </th></tr> |
---|
[da05968] | 88 | <tr><th colspan="2"> <?php echo $TbMsg["WARN_NETBOOT"]?> </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] | 102 | echo '<SCRIPT>'; |
---|
[3ec149c] | 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> |
---|
[4a81502] | 112 | <?php |
---|
[3ec149c] | 113 | // ************************************************************************************************************************************************* |
---|
| 114 | function 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 | //________________________________________________________________________________________________________ |
---|
| 163 | function 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 | //________________________________________________________________________________________________________ |
---|
| 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 | } |
---|
[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 | //________________________________________________________________________________ |
---|
| 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 | } |
---|
[3ec149c] | 250 | ?> |
---|