Capítulo 7. Creando un módulo simple

Tabla de contenidos

7.1. Estudio del servicio y evaluación de características
7.2. Crear un nuevo módulo a partir de la plantilla de módulo.
7.3. Definir e implementar la API
7.4. Creando CGIs y plantillas
7.5. Mostrando el módulo en el menú y la página Resumen
7.6. Generando los ficheros de configuración y controlando el demonio.
7.7. Estableciendo reglas a medida al firewall
7.8. Finalizando

Una vez que hemos visto como funciona eBox internamente vamos a aplicar todo lo visto hasta ahora en esta guía de desarrollo creando un módulo desde cero. Lo primero que debemos hacer es elegir el servicio queremos integrar en eBox. Para esta pequeña guía vamos a elegir el servicio de sincronización horaria ya que es uno de los módulos mas sencillos que existen dentro de eBox. Gracias a este servicio vamos a permitir a eBox:

  • Sincronizar su fecha y hora mediante un servidor NTP externo.

  • Permitir que un cliente pueda sincronizar su fecha y hora contra ella.

Los pasos que vamos a seguir para la creación del módulo son:

  • Estudio del servicio y evaluación de sus características.

  • Crear un nuevo módulo a partir de la plantilla de módulo.

  • Definir e implementar la API.

  • Crear los CGIs y plantillas mason.

  • Mostrar el módulo en el menú eBox y la página Resumen.

  • Generar los ficheros de configuración y controlar el demonio.

  • Establecer reglas a medida en el firewall.

7.1. Estudio del servicio y evaluación de características

Para desarrollar este módulo vamos a elegir los paquetes debian ntp-server para poder ofrecer sincronización horaria y ntpdate para poder realizar peticiones de sincronización a servidores externos.

Tras la elección del software a utilizar debemos realizar un estudio exhaustivo del demonio implicado, sus ficheros de configuración y de todos los parámetros configurables en ellos. Con toda esta información seremos capaces de elegir el grado de control que vamos a ofrecer al futuro usuario del módulo, tratando siempre de mantener un equilibrio entre facilidad de uso y flexibilidad en la configuración del servicio.

Para el servicio que vamos a desarrollar tan solo necesitamos configurar ciertos parámetros del fichero /etc/ntp.conf, que contiene la configuración del demonio de ntp. De todos los posibles parámetros configurables en él, a nosotros nos van a interesar controlar tan solo dos.

  • Por un lado la lista de servidores ntp a los que vamos a poder sincronizarnos en caso que permitamos sincronización horaria externa. Esto lo podemos realizar añadiendo la siguiente linea tipo tantas veces como sea necesario al fichero de configuración:

      server ip_servidor_ntp 
    				
  • Por otro lado la posibilidad de actuar como servidor de sincronización horaria a los clientes de nuestra red. Esto se realiza añadiendo un atributo server, visto antes, con una dirección ip como sigue:

      server 127.127.1.0  

El servicio de ntp tiene mas parámetros configurables, pero hemos creido conveniente dejarlos con un valor por defecto transparente para el usuario y centrarnos únicamente en aquello que, de manera general, puede necesitar un futuro usuario de nuestro módulo.

También vamos a ofrecer la posibilidad de que el usuario pueda modificar tanto la fecha y hora del sistema como su zona horaria, en caso de no tenga la posibilidad de sincronizarse con servidores NTP externos.

La modificación de la fecha y hora del sistema se puede realizar facilmente mediante el comando /bin/date.

La modificación de la zona horaria también es sencilla. El enlace simbólico /etc/localtime apunta a un fichero cuyo nombre es el país de la zona a la que pertenecemos. Todas zonas horarias posibles se encuentran a partir del directorio /usr/share/zoneinfo/, cada país se encuentra dentro de su continente por lo que si nuestra zona horaria es Madrid/Europa, el fichero donde /etc/localtime ha de apuntar se encuentra en /usr/share/zoneinfo/Europe/Madrid. Como podemos deducir la operación de cambio de zona horaria se reduce a rehacer el enlace simbólico de /etc/localtime.