<?php
/**
 * Script de instalación de la base de la base de datos
 *
 * Este script crea las tablas necesarias en la base de datos e introduce los
 * siguientes valores necesarios para el funcionamiento de la aplicación:
 *
 * - Un usuario con derechos de administración. Por simplicidad
 * 		se utilizan los mismos nombre de usuario y contraseña usados
 * 		para la base de datos. Estos valores podran ser editados
 * 		posteriormente desde la pagina web.
 *
 * - Los ids de las redes junto a su configuración por defecto.
 *
 * Tanto el usuario empleado para la conexión (y especificado en el archivo
 * "configuracion.php" como la base de datos deben haber sido creadas
 * previamente desde MySQL usando los siguientes comandos:
 *
 * >CREATE DATABASE redes;
 * >GRANT ALL ON redes.* TO 'user'@'localhost' IDENTIFIED BY 'password';
 *
 * @author Jesús Algeciras <jes.algeciras@gmail.com>
 * @version 2010-10-24
 *
 */

require_once('func_comunes.php');

try {
	/**
	 * Funcion que retorna el último id introducido en un campo
	 * AUTO_INCREMENT de la tabla.
	 * @return int
	 */
	function lastID () {
		$database = Database::conectar();
		$respuesta = $database->query('SELECT LAST_INSERT_ID() AS id');
		$datos = $respuesta->fetch_assoc();
		$respuesta->free();
		return $datos['id'];
	}

	$database = Database::conectar();
	$database->autocommit(FALSE);

	
	// En caso de reinstalación se vacia primero la base de datos
	$sql = 'DROP TABLE IF EXISTS acceso,reserva,turno,red,conmutador,pc,configuracion,usuario';
	$database->query($sql);

	
	// Creación de las tablas
	$sql = 'CREATE TABLE usuario (
			idusuario		tinyint UNSIGNED NOT NULL UNIQUE AUTO_INCREMENT,
			usuario		 	varchar(10) NOT NULL UNIQUE,
			contrasena		varchar(10) NOT NULL,
			administrador	boolean NOT NULL DEFAULT 0,

			PRIMARY KEY (idusuario),
			UNIQUE INDEX (usuario,contrasena) 
			)ENGINE=InnoDB;';
	$database->query($sql);

	$sql = 'CREATE TABLE configuracion (
			idconfiguracion	smallint UNSIGNED NOT NULL UNIQUE AUTO_INCREMENT,
			usuario			tinyint UNSIGNED NOT NULL,
			nombre			varchar(20),
			modificado		datetime NOT NULL,

			PRIMARY KEY (idconfiguracion),
			FOREIGN KEY (usuario) REFERENCES usuario (idusuario) ON DELETE CASCADE ON UPDATE CASCADE
			)ENGINE=InnoDB;';
	$database->query($sql);

	$sql = 'CREATE TABLE pc (
			idconfiguracion	smallint UNSIGNED NOT NULL,
			idpc			tinyint UNSIGNED NOT NULL,
			ip	 			int UNSIGNED,
			mascara	 		int UNSIGNED,
			puerta	 		int UNSIGNED,
			dns1	 		int UNSIGNED,
			dns2	 		int UNSIGNED,

			PRIMARY KEY (idconfiguracion,idpc),
			FOREIGN KEY (idconfiguracion) REFERENCES configuracion (idconfiguracion) ON DELETE CASCADE ON UPDATE CASCADE
			)ENGINE=InnoDB;';
	$database->query($sql);

	$sql = 'CREATE TABLE conmutador (
			idconfiguracion	smallint UNSIGNED NOT NULL,
			idconmutador	tinyint UNSIGNED NOT NULL,
			archivo			varchar(255),

			PRIMARY KEY (idconfiguracion,idconmutador),
			FOREIGN KEY (idconfiguracion) REFERENCES configuracion (idconfiguracion) ON DELETE CASCADE ON UPDATE CASCADE
			)ENGINE=InnoDB;';
	$database->query($sql);

	$sql = 'CREATE TABLE red (
			idred		tinyint UNSIGNED NOT NULL UNIQUE,
			default_config	smallint UNSIGNED,
			en_uso		boolean NOT NULL DEFAULT 0,
			ult_acceso	datetime,
			ult_usuario	tinyint UNSIGNED,

			PRIMARY KEY (idred),
			FOREIGN KEY (default_config) REFERENCES configuracion (idconfiguracion) ON DELETE SET NULL ON UPDATE CASCADE,
			FOREIGN KEY (ult_usuario) REFERENCES usuario (idusuario) ON DELETE SET NULL ON UPDATE CASCADE
			)ENGINE=InnoDB;';
	$database->query($sql);

	$sql = 'CREATE TABLE turno (
			idturno 	tinyint UNSIGNED NOT NULL UNIQUE AUTO_INCREMENT,
			dia	 		tinyint UNSIGNED NOT NULL,
			inicio	 	time NOT NULL,
			fin 		time NOT NULL,

			PRIMARY KEY (idturno)
			)ENGINE=InnoDB;';
	$database->query($sql);

	$sql = 'CREATE TABLE reserva (
			idusuario	tinyint UNSIGNED NOT NULL UNIQUE,
			idred		tinyint UNSIGNED NOT NULL,
			idturno		tinyint UNSIGNED NOT NULL,

			PRIMARY KEY (idusuario),
			FOREIGN KEY (idusuario) REFERENCES usuario (idusuario) ON DELETE CASCADE ON UPDATE CASCADE,
			FOREIGN KEY (idred) REFERENCES red (idred) ON DELETE CASCADE ON UPDATE CASCADE,
			FOREIGN KEY (idturno) REFERENCES turno (idturno) ON DELETE CASCADE ON UPDATE CASCADE,
			UNIQUE INDEX (idred,idturno)
			)ENGINE=InnoDB;';
	$database->query($sql);

	$sql = 'CREATE TABLE acceso (
			idacceso	varchar(10) NOT NULL UNIQUE,
			inicio		datetime NOT NULL,
			fin 		datetime NOT NULL,

			PRIMARY KEY (idacceso)
			)ENGINE=InnoDB;';
	$database->query($sql);


	// Almacenamiento de los valores requeridos por la aplicación
	$sql = 'INSERT INTO usuario (usuario,contrasena,administrador) 
				VALUES ("'.DB_USER.'","'.DB_PASS.'",1)';
	$database->query($sql);
	$idusuario = lastID();


	// Configuración de las subredes
	foreach ($defult_config as $idred => $red) {
		// Creo la configuración
		$sql = 'INSERT INTO configuracion (usuario,nombre,modificado) 
					VALUES ('.$idusuario.',"default_red_'.$idred.'","'.date('Y-m-d H:i:s').'")';
		$database->query($sql);
		$idconfig = lastID();

		// Guardo la configuración de PCs y Conmtadores
		foreach ($defult_config[$idred]['pc'] as $pc => $config) {
			$sql = 'INSERT INTO pc (idconfiguracion,idpc,ip,mascara,puerta,dns1,dns2) 
						VALUES ('.$idconfig.','.$pc.',INET_ATON("'.$config['ip'].'"),INET_ATON("'.$config['mascara'].'"),
						INET_ATON("'.$config['puerta'].'"),INET_ATON("'.$config['dns1'].'"),INET_ATON("'.$config['dns2'].'"))';
			$database->query($sql);
		}
		foreach ($defult_config[$idred]['conmutador'] as $conmutador => $config) {
			$sql = 'INSERT INTO conmutador (idconfiguracion,idconmutador,archivo)
						VALUES ('.$idconfig.','.$conmutador.',"'.$config['archivo'].'")';
			$database->query($sql);
		}
		// Añado la red y sus valores a la base de datos
		$sql = 'INSERT INTO red (idred,default_config,en_uso) VALUES('.$idred.','.$idconfig.',0)';
		$database->query($sql);
	}

	$database->commit();
	$database->autocommit(TRUE);
}
catch (Exception $excepcion) {
	echo (string) $excepcion;
	exit();
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">
	<head>
            <title>e-REdING. Biblioteca de la Escuela Superior de Ingenieros de Sevilla.</title>

                <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="description" content="Buscador de proyectos ETSI" />
<meta name="author" content="Daniel Callejo"/>
<meta name="author" content="Federico L&oacute;pez"/>
<meta name="author" content="Juli&aacute;n P&eacute;rez"/>
<meta name="author" content="Jos&eacute; Mar&iacute;a Vidal Vidal"/>
<base href="/bibing/proyectos/" /><link rel="shortcut icon" href="./favicon.ico" />
<link rel="stylesheet" href="./publico/css/estructura.css" type="text/css" />
<link rel="stylesheet" href="./publico/css/bootstrap.css" type="text/css" media="screen"/>
<link rel="stylesheet" href="./publico/css/enlaces-capas.css" type="text/css"  />
<link rel="stylesheet" href="./publico/css/pestanas.css" type="text/css"  /> 
<link rel="stylesheet" href="./publico/css/formularios.css" type="text/css" />
<link rel="stylesheet" href="./publico/css/lightbox.css" type="text/css"  />
<link rel="stylesheet" href="./publico/css/autocompleter.css" type="text/css"  />
<link rel="stylesheet" href="./publico/css/resultados.css" type="text/css"  />
<link rel="stylesheet" href="./publico/css/milista.css" type="text/css"  />
<link rel="stylesheet" href="./publico/css/explorador.css" type="text/css"  />
<link rel="stylesheet" href="./publico/css/ultimos.css" type="text/css"  />
<link rel="stylesheet" href="./publico/css/contactar.css" type="text/css"  />
<!-- <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" /> -->
<script src="./publico/javascript/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="./publico/javascript/bootstrap.js" type="text/javascript"></script>

<script src="./publico/javascript/mootools-1.2.4-core.js" type="text/javascript"></script>
<script src="./publico/javascript/mootools-1-1.2.4.2-more.js" type="text/javascript"></script>
<script src="./publico/javascript/targetbl.js" type="text/javascript"></script>
<script src="./publico/javascript/mensajes.js" type="text/javascript"></script>
<script src="./publico/javascript/form.js" type="text/javascript"></script>
<script src="./publico/javascript/autocompleter/Observer.js" type="text/javascript"></script>
<script src="./publico/javascript/autocompleter/Autocompleter.js" type="text/javascript"></script>
<script src="./publico/javascript/autocompleter/Autocompleter.Request.js" type="text/javascript"></script>
<script src="./publico/javascript/domready.js" type="text/javascript"></script>

<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-8T1TSNC1QY"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-8T1TSNC1QY');
</script>



<script type="text/javascript">
function seleccionar_todo(){
   for (i=0;i<document.formulario_marcados.elements.length;i++)
      if(document.formulario_marcados.elements[i].type == "checkbox")
         document.formulario_marcados.elements[i].checked=1
}
function deseleccionar_todo(){
   for (i=0;i<document.formulario_marcados.elements.length;i++)
      if(document.formulario_marcados.elements[i].type == "checkbox")
         document.formulario_marcados.elements[i].checked=0
} 
</script>
	</head>
    <body style="min-width: 960px; background-color: #e2e2e2; height: 100%">	
		<a name="arriba"></a>
<div>
<div id="header">
    <table id="Tabla_01" height="105" border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td>
            <img src="./publico/imagenes/cabecera/banner_new2_01.jpg" width="3" height="105" alt="">
        </td>
        <td>
            <img src="./publico/imagenes/cabecera/banner_new2_02.jpg" width="100" height="105" alt="">
        </td>
        <td width="100%" align="right"  style="min-width: 613px; background-repeat: no-repeat; background-position: top right; font-size: medium; font-weight: bold; color: white;">
            <table width="100%" height="105" border="0">
                <tr>
                    <td style=" vertical-align: top; width: 547px">
                        <!-- <a style="text-decoration: none" href="./"><img src="./publico/imagenes/cabecera/banner_new2_03.jpg"alt=""></a> -->
                        <a style="text-decoration: none" href="/bibing/proyectos/"><img src="./publico/imagenes/cabecera/banner_new2_03.jpg"alt=""></a>
                     </td>
                     <td  background="./publico/imagenes/cabecera/banner_new2_04.jpg" style="background-repeat: no-repeat; background-color: #c6d4e8;"><br><br><br>
                         &nbsp;
                        </td>
                    </tr>
             </table>
        </td>
    </tr>
    <tr style="border-top: 1px solid #ffffff;">
        <td colspan="3" id="menu_sup" style="font-size: small; text-align: right; background-color: #9c1f2f; vertical-align: bottom">
             
					<a href="/bibing/proyectos/" class="enlace " style=" color: #ffffff">Inicio&nbsp;&nbsp;|</a>
					<a href="/bibing/proyectos/acerca/" style=" color: #ffffff" class="enlace ">&nbsp;&nbsp;Acerca de&nbsp;&nbsp;|</a>
					
					<a href="/bibing/proyectos/contactar/" style=" color: #ffffff" class="enlace ">&nbsp;&nbsp;Contactar&nbsp;&nbsp;</a>
			 <!--       <a href="/bibing/proyectos/ayuda/" style=" color: #ffffff" class="enlace  ">&nbsp;&nbsp;Ayuda&nbsp;&nbsp;|</a> -->
					<!-- <form id="idioma" class=""  method="post" action="">
					<div class="inline" style="color: white">
					<input type="submit" class="tipo_letra " style=" color: #ffffff"name="idioma" value="Castellanossss" />&nbsp;&nbsp;
					</div>	
					</form> -->
			        </td>

    </tr>
    </table>
</div>
<br><br>
<div class="colmask rightmenu">
<div class="panel panel-default" style="margin:20px">
            <div class="panel-heading"><h4>DESARROLLO DE UN ENTORNO DE PRÁCTICAS PARA REDES MULTISERVICIO</h4><h5 style="color:grey"><span class="glyphicon glyphicon-user""></span> : <b>MARTÍN REDONDO, ALBERTO JESÚS</b><br><span class="glyphicon glyphicon-book""></span>  :<b> Ingenier&iacute;a Telecomunicación</b></h5></div><div class="panel-body"><div class="contenido_proyecto"><div class="titulo2_explorador">Contenido del proyecto:</div><div class="ruta"><a href="use/abreproy/12106">Directorio ra&iacute;z</a>&nbsp;&nbsp;>&nbsp;&nbsp;<a href="use/abreproy/12106/direccion/ARCHIVOS%252F">ARCHIVOS</a>&nbsp;&nbsp;>&nbsp;&nbsp;<a href="use/abreproy/12106/direccion/ARCHIVOS%252Fredes%252F">redes</a>&nbsp;&nbsp;>&nbsp;&nbsp;<a href="use/abreproy/12106/direccion/ARCHIVOS%252Fredes%252Fadmin%252F">admin</a>&nbsp;&nbsp;>&nbsp;&nbsp;<a href="use/abreproy/12106/direccion/ARCHIVOS%252Fredes%252Fadmin%252Finstala_db.php%252F">instala_db.php</a></div><div class="listing"></div></div></div></div>
</div>
</div>

        
	</body>
 
 
<!-- Inicio Google Analytics -->
<!--
	<script type="text/javascript">
		var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
		document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
	</script>
	
	<script type="text/javascript">
		try {
		var pageTracker = _gat._getTracker("UA-7789620-1");
		pageTracker._trackPageview();
	} 
		catch(err) {}
	</script>
-->
<!-- Fin Google Analytics -->

</html>

