.. _app-mrbs: |MRBS| ****** `MRBS `_ es una pequeña aplicación web que facilita la reserva anticipada de aulas. Preliminares ============ No tiene muchas dependencias y la instalación básica de |PHP|:: # apt-get install php{,-mysql} libapache2-mod-php7.0- mysql-{server,client} es más que suficiente. Además, como cualquier otra aplicación web, requiere que se le prepare una base de datos y un usuario para manipularla:: # mysql mysql> CREATE DATABASE mrbs; mysql> GRANT ALL PRIVILEGES ON mrbs.* TO 'mrbs'@'localhost' IDENTIFIED BY 'contraseñadificil'; Configuración en :program:`nginx` ================================= Basta con crear una :download:`configuración de sitio ` con esta pinta: .. literalinclude:: files/site-mrbs :language: nginx Instalación =========== Lo primero es ir a la `página del proyecto `_, descargar la ultima versión\ [#]_ y descomprimirla en un directorio adecuado:: # mkdir -p /srv/www/mrbs # tar -C /srv/www/mrbs --strip-component=2 -axvf mrbs-1.7.1.tar.gz mrbs-1.7.1/web .. note:: Sólo el contenido del subdirectorio :file:`web/` contiene los ficheros de la aplicación. La instalación, a diferencia de otras aplicaciones web, es manual y requiere que la generación de la base de datos y la configuración básica, se haga en la consola. Para lo primero, la propia aplicación trae un guión |SQL| apropiado:: # tar -C /tmp --strip-component=1 -axvf mrbs-1.7.1.tar.gz mrbs-1.7.1/tables.my.sql # mysql mrbs < /tmp/tables.my.sql Por último es necesario editar el fichero :file:`config.inc.php` y descomentar o modificar las siguientes líneas: .. code-block:: php $timezone = "Europe/Madrid"; $dbsys = "mysql"; $db_host = "localhost"; $db_database = "mrbs"; $db_login = "mrbs"; $db_password = "crontraseñadificl"; $db_tbl_prefix = "mrbs_"; Con esto, ya es suficiente para ver cómo queda la aplicación, aunque al visitarla se detectará que no existen usuarios y se forzará a crear al menos un usuario administrador. |MRBS| soporta `varios métodos de autenticación para gestionar usuarios `_ y el predeterminado es "db"\ [#]_, por lo que este administrador y todos los que usuarios que definamos desde la interfaz web se almacenarán en la base de datos *MySQL* que acabamos de crear\ [#]_. .. warning:: Si visita la aplicación para ver el resultado puede crear el usuario administrador, pero no realice ninguna otra acción (como crear áreas y aulas), porque es conveniente haber afinado antes la configuración. Configuración ============= Una configuración mínima pasa por añadir las siguientes líneas al final del fichero de configuración :file:`config.inc.php`: .. code-block:: php # En versiones modernas estas tres líneas posiblemene sean redundantes. unset($periods); unset($auth["user"]); unset($auth["admin"]); require "ies.inc.php"; en que básicamente borramos todos los usuarios predeterminados, eliminamos los periodos de tiempo predefinidos y pedimos que se lea un fichero :file:`ies.inc.php`, que será donde realmente escribamos la configuración. podemos empezarlo con las siiguientes líneas: .. code-block:: php `_ es `gratuita para centros educativos `_ y el centro puedo haber asociado su dominio al servidor de correo de *Google* y hacer que todos sus trabajadores dispongan de una cuenta del dominio autenticable con *Google*. Desgraciadamente, |MRBS| no trae soporte para ello, pero hay disponible `una extensión que sí lo permite `_. La extensión afirma ser usable al menos para la versión **1.6.1**, pero lo cierto es que el tema que trae consigo no funciona\ [#]_ ni con esa versión. En cualquier caso, puede usarse este :download:`arreglo para la extension ` con estas diferencias respecto a la original: * Sirve para la versión **1.7.1**. * Incluye un tema (*google*) que añade al tema predeterminado lo necesario para que funcione esta autenticación. * Añade la función *authGetUserMail* para que puedan implementarse los avisos mediante correo electrónico. * Permite que cualquier usuario declarado en el array *$auth['admin']* sea considerado administrador\ [#]_. * Al desautenticarnos de |MRBS|, también lo hacemos del propio sitio de *Google*. .. rubric:: Instalación #. Acudir a `google `_ para abrir un proyecto y obtener un *ID* que será necesario luego al escribir la configuración. #. Descomprimir :download:`la extensión `. Los ficheros contenidos pueden copiarse dentro de :file:`/srv/www/mrbs`:: # tar -C /srv/www/mrbs --strip-component=1 -axvf mrbs-google.tar.xz #. Borrar el fichero :file:`mrbs/edit_users.php` de la distribución original, ya que deja de tener utilidad. #. Descargar `Google API PHP Client `_ e incluir los ficheros dentro de :file:`srv/www/mrbs/google-api`. En cualquier caso, la referencia a esta |API| se hace dentro del fichero :file:`auth/auth_google.inc`. #. Añadir la configuración necesaria en :file:`ies.inc.php`: .. code-block:: php # # Autenticación # $theme = 'google'; # Este tema soporta la autenticación con google. $auth["type"] = "google"; $auth["session"] = "google"; $google_domain = 'midominio.es'; $google_client_id = 'ID-OBTENIDO-DE-GOOGLE.apps.googleusercontent.com'; $auth["admin"][] = "soy.el.jefe@midominio.es"; # # Configuración de los avisos por mail # $mail_settings['from'] = 'no-reply@midominio.es'; $mail_settings['booker'] = true; # Se envía correos al dueño de la reserva. # Correos al crear o eliminar la reserva. $mail_settings['on_new'] = true; $mail_settings['on_delete'] = true; $mail_settings['admin_lang'] = 'es'; # Configuración del envío. $mail_settings['admin_backend'] = 'smtp'; $smtp_settings['host'] = 'smtp.servidorcorreo.com'; $smtp_settings['port'] = 465; $smtp_settings['auth'] = true; $smtp_settings['secure'] = 'ssl'; $smtp_settings['username'] = 'una_cuenta@servidorcorreo.com'; $smtp_settings['password'] = 'contraseña'; # $mail_settings['debug'] = true; La primera parte de la configuración configura la autenticación en sí, mientras que la segunda habilita el aviso por correo electrónico. En esta segunda es necesario asegurarse de que los correos serán confiables y no acabarán en la bandeja de *spam* de los usuarios. Un modo sencillo de logararlo es utlizar una cuenta de correo que permita el envío por |SMTP|. .. rubric:: Problemas #. Para que la autenticación sea efectiva es necesario que el navegador acepte *cookies* de terceros o al menos *cookies* definidas para nuestro servidor procedentes del dominio *accounts.google.con*. En `Firefox `_ esto es posible por defecto, mientras que en `Chrome `_ se requiere acudir a:: chrome://settings/content/cookies y añadir en "*Permitir*" el dominio *accounts.google.com*. .. rubric:: Notas al pie .. [#] En el momento de la redacción es la versión **1.7.1**. .. [#] Véase el valor de :kbd:`$auth["type"]` en :file:`systemdefaults.inc.php`. .. [#] En versiones antiguas el *backend* predefinido era "user" que permitía definir usuarios y contraseñas directamente en el archivo de configuración. :file:`systemdefaults.inc.php` contenía la definición de algunos usuarios como *administrator*/*secret* o *bob*/*b*. .. [#] La variable *$default_room* define cuál es el aula que se mostrará, pero su valor debe ser igual al identificador que se usa en la base de datos para el aula en cuestión. Tal identificador no aparecen en la página del sitio, pero puede consultarse mirando la propia base de datos o mirando los parámentros de la dirección |URL| cuando se pincha para editar tal aula. También existe una variable *$default_area* que permite definir la sede predeterminada. .. [#] Tal vez la incompatibilidad es en |PHP|. .. [#] El comportamiento predeterminado es que sea administrador el primer usuario que se autentique. .. |MRBS| replace:: :abbr:`MRBS (Meeting Room Booking System)` .. |SQL| replace:: :abbr:`SQL (tructured Query Language)` .. |PHP| replace:: :abbr:`PHP (PHP Hypertext Preprocesor)` .. |API| replace:: :abbr:`API (Application Programming Interface)` .. |URL| replace:: :abbr:`URL (Uniform Resource Locator)`