Configurar un sitio web offline por tareas de mantenimiento con CodeIgniter

Configurar un sitio web offline por tareas de mantenimiento con CodeIgniter

Cuando agregamos alguna nueva funcionalidad a nuestro sitio web o vamos a cambiar ciertos códigos del mismo, sean de los modelos, controladores, vistas o algún otro archivo, necesitamos restringir el acceso a todo el sitio web, es decir, colocarlo en mantenimiento. Esto con la finalidad de ocultar los posibles errores que puedan surgir mientras actualizamos la aplicación ya que dichos errores pueden contener información que ayude a personas mal intencionadas a vulnerar la seguridad del sitio web.

En este artículo veremos como configurar un sitio offline por tareas de mantenimiento con CodeIgniter utilizando para ello hooks.

PASO 1

Habilitar los hooks, para ello modificamos el archivo de configuración de la aplicación, situado en application/config/config.php de la siguiente manera: 

$config['enable_hooks'] = TRUE;

Paso 2

Al final del mismo archivo del paso anterior debemos agregarle dos índices nuevos al arreglo $config como se muestra a continuación:

//$config['is_offline'] configurado a TRUE mostrará el sitio offline
//$config['is_offline'] configurado a FALSE mostrará el sitio online
$config['is_offline'] = FALSE;
//$config['offline_allowed_ips'] = array('xxx.xxx.xxx','xxx.xxx.xxx.xxx);
//Posee un arreglo con las IP's con acceso permitido al sitio
$config['offline_allowed_ips'] = array('127.0.0.1');

Paso 3

Ahora creamos el archivo site_offline.php para el hook y lo ubicamos en el siguiente directorio application/hooks/. En el colocamos el siguiente código:

<?php

class Site_offline
{
    /**
     * Check if the site is offline
     * 
     * @return void
     */
    public function offline()
    {
        include(APPPATH . 'config/config.php');

        // Check offline configuration
        if (isset($config['is_offline']) && $config['is_offline'] === TRUE) {

            // Check the user IP
            if (isset($config['offline_allowed_ips']) && in_array($_SERVER['REMOTE_ADDR'], $config['offline_allowed_ips']) === FALSE) {
                $this->showMessage();
                exit();
            }
        }
    }

    /**
     * Show the maintance message
     * 
     * @return string
     */
    public function showMessage()
    {
        echo '<html><body><h2>Este sitio web se encuentra en mantenimiento</h2></body></html>';
    } 
}

Paso 4

Finalmente creamos el hook que se encargará de modificar el flujo de datos por defecto de CodeIgniter. Esto lo vamos a hacer en el archivo hooks.php ubicado en la ruta application/config/. Allí colocaremos el siguiente código:

$hook['pre_system'][] = array(
    'class' => 'Site_offline',
    'function' => 'offline',
    'filename' => 'site_offline.php',
    'filepath' => 'hooks'
);

El código anterior se ejecutará al principio de la ejecución del sistema por ello es configurado a $hook['pre_system'].

Los índices de configuración cumplen las siguientes funciones:

  • class: Indica la clase que posee el hook.
  • function: Indica el método que debe ejecutarse dentro de la clase.
  • filename: Es el nombre del archivo que contiene el hook.
  • filepath: Es la carpeta donde se encuentra el archivo.

Puedes ver más información acerca de la utilización de hooks en la documentación de CodeIgniter.

Con estos sencillos ejemplos ya podemos cambiar el estado de nuestro sitio web entre online y offline con tan solo cambiar los valores de $config['is_offline] a FALSE Y TRUE respectivamente y especificando la IP o IPs a las cuales brindaremos acceso a la aplicación así se encuentre en mantenimiento..

Espero haya sido de utilidad este artículo y lo compartas en las redes sociales.

Comentarios

Deja tu comentario

http://