From 024569f3a51d6695521c68ab67d06ec1ef177210 Mon Sep 17 00:00:00 2001 From: Nicolas Arenas Date: Fri, 20 Jun 2025 13:30:59 +0200 Subject: [PATCH 1/2] update post install --- debian/ogdhcp.postinst | 131 ++++++++++++++++++++++++++--------------- debian/ogdhcp.preinst | 38 +++++++++--- 2 files changed, 113 insertions(+), 56 deletions(-) diff --git a/debian/ogdhcp.postinst b/debian/ogdhcp.postinst index 10311c9..9c6b8df 100644 --- a/debian/ogdhcp.postinst +++ b/debian/ogdhcp.postinst @@ -4,6 +4,26 @@ set -e . /usr/share/debconf/confmodule + +restore_config_if_modified() { + local new="$1" + local backup="$1.bak.upgrade_package" + + if [ -f "$backup" ]; then + if ! cmp -s "$new" "$backup"; then + echo ">>> Archivo modificado por el usuario detectado en $new" + echo " - Guardando archivo nuevo como ${new}.new" + mv -f "$new" "${new}.new" + echo " - Restaurando archivo anterior desde backup" + mv -f "$backup" "$new" + else + echo ">>> El archivo $new no ha cambiado desde la última versión, eliminando backup" + rm -f "$backup" + fi + fi +} + + KEA_CTRL_AGENT_CONF="/etc/kea/kea-ctrl-agent.conf" PUBLIC_DIR=/opt/opengnsys/ogdhcp/api/public db_get opengnsys/ogdhcp_interfaces @@ -13,65 +33,67 @@ OGDHCP_IP="$RET" db_get opengnsys/ogdhcp_ogbootIP OGBOOT_IP="$RET" +# Get PHP version +PHP_VERSION=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;') + case "$1" in configure) - echo "Configurando ogdhcp..." - - # Configuración de kea-ctrl-agent - echo "Eliminando autenticación de kea-ctrl-agent..." - if [ -e "$KEA_CTRL_AGENT_CONF" ]; then - dpkg-divert --package ogdhcp --divert "$KEA_CTRL_AGENT_CONF.dpkg-dist" --rename "$KEA_CTRL_AGENT_CONF" - cp -a "$KEA_CTRL_AGENT_CONF.dpkg-dist" "$KEA_CTRL_AGENT_CONF" - if grep -q '^[^#]*"authentication": {' "$KEA_CTRL_AGENT_CONF"; then - sed -i '/"authentication": {/,/^[[:space:]]*},/ { - s/^\([[:space:]]*\)\([^#]\)/\1#\2/ - }' "$KEA_CTRL_AGENT_CONF" + if [ $2 == "" ]; then + echo ">>> Configuración de ogdhcp, realizando instalacion nueva" + # Configuración de kea-ctrl-agent + echo "Eliminando autenticación de kea-ctrl-agent..." + if [ -e "$KEA_CTRL_AGENT_CONF" ]; then + dpkg-divert --package ogdhcp --divert "$KEA_CTRL_AGENT_CONF.dpkg-dist" --rename "$KEA_CTRL_AGENT_CONF" + cp -a "$KEA_CTRL_AGENT_CONF.dpkg-dist" "$KEA_CTRL_AGENT_CONF" + if grep -q '^[^#]*"authentication": {' "$KEA_CTRL_AGENT_CONF"; then + sed -i '/"authentication": {/,/^[[:space:]]*},/ { + s/^\([[:space:]]*\)\([^#]\)/\1#\2/ + }' "$KEA_CTRL_AGENT_CONF" + fi fi - fi - # Configuración de AppArmor - APPARMOR_LOCAL_PROFILE="/etc/apparmor.d/local/usr.sbin.kea-dhcp4" - echo "Añadiendo permisos personalizados a AppArmor para kea-dhcp4..." - mkdir -p "$(dirname "$APPARMOR_LOCAL_PROFILE")" - cat > "$APPARMOR_LOCAL_PROFILE" < "$APPARMOR_LOCAL_PROFILE" < "$KEA_CONFIG" < "$KEA_CONFIG" </dev/null; then - echo "El usuario $USER ya existe." -else - echo "Creando el usuario $USER con home en $HOME_DIR." - useradd -m -d "$HOME_DIR" -s /bin/bash "$USER" -fi + +case $1 in + install) + if id "$USER" &>/dev/null; then + echo "El usuario $USER ya existe." + else + echo "Creando el usuario $USER con home en $HOME_DIR." + useradd -m -d "$HOME_DIR" -s /bin/bash "$USER" + fi + ;; + upgrade) + echo ">>> Actualización de ogdhcp" echo ">>> Backup de archivos de configuración reales en /opt/opengnsys" + backup_file_if_exists "/etc/kea/kea-dhcp4.conf" + backup_file_if_exists "/etc/kea/kea-ctrl-agent.conf" + backup_file_if_exists "/opt/opengnsys/ogdhcp/api/.env" + ;; + *) + echo "Modo no reconocido: $1" + exit 1 + ;; +esac exit 0 -- 2.40.1 From 1585b7a7069e49db1f9c78ce792ab68ad3fe0dc1 Mon Sep 17 00:00:00 2001 From: Nicolas Arenas Date: Fri, 20 Jun 2025 15:12:22 +0200 Subject: [PATCH 2/2] refs #2270 , backup kea and config files --- debian/ogdhcp.postinst | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/debian/ogdhcp.postinst b/debian/ogdhcp.postinst index 9c6b8df..498604e 100644 --- a/debian/ogdhcp.postinst +++ b/debian/ogdhcp.postinst @@ -35,10 +35,15 @@ OGBOOT_IP="$RET" # Get PHP version PHP_VERSION=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;') +if [ -z "$PHP_VERSION" ]; then + echo "Error: No se pudo determinar la versión de PHP." + exit 1 +fi + case "$1" in configure) - if [ $2 == "" ]; then + if [ -z "$2" ]; then echo ">>> Configuración de ogdhcp, realizando instalacion nueva" # Configuración de kea-ctrl-agent echo "Eliminando autenticación de kea-ctrl-agent..." @@ -51,7 +56,6 @@ case "$1" in }' "$KEA_CTRL_AGENT_CONF" fi fi - # Configuración de AppArmor APPARMOR_LOCAL_PROFILE="/etc/apparmor.d/local/usr.sbin.kea-dhcp4" echo "Añadiendo permisos personalizados a AppArmor para kea-dhcp4..." @@ -124,20 +128,22 @@ EOF } } EOF - else ; then + fi + else echo "Actualizando configuración de kea-dhcp4..." restore_config_if_modified "/etc/kea/kea-dhcp4.conf" restore_config_if_modified "/etc/kea/kea-ctrl-agent.conf" restore_config_if_modified "/opt/opengnsys/ogdhcp/api/.env" restore_config_if_modified "/etc/nginx/sites-available/ogdhcp.conf" - restore_config_if_modified "/etc/php/$PHP_VERSION/fpm/pool.d/ + restore_config_if_modified "/etc/php/$PHP_VERSION/fpm/pool.d/ogdhcp.conf" fi - - echo "Configuración de kea-dhcp4 completada." + echo ">>> Configuración de ogdhcp completada." ;; - abort-upgrade|abort-remove|abort-deconfigure) + echo ">>> Abortando la configuración de ogdhcp" + echo "No se realizaron cambios en la configuración." + exit 0 ;; *) @@ -154,9 +160,9 @@ chown -R _kea:_kea /etc/kea # Reiniciar servicios systemctl daemon-reload -systemctl restart nginx -systemctl restart kea-dhcp4-server -systemctl restart kea-ctrl-agent -systemctl restart php$PHP_VERSION-fpm +systemctl restart nginx || echo "Error al reiniciar nginx" +systemctl restart kea-dhcp4-server || echo "Error al reiniciar kea-dhcp4-server" +systemctl restart kea-ctrl-agent || echo "Error al reiniciar kea-ctrl-agent" +systemctl restart php$PHP_VERSION-fpm || echo "Error al reiniciar php$PHP_VERSION-fpm" exit 0 -- 2.40.1