diff --git a/debian/ogdhcp.postinst b/debian/ogdhcp.postinst index 10311c9..498604e 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,71 @@ 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;') +if [ -z "$PHP_VERSION" ]; then + echo "Error: No se pudo determinar la versión de PHP." + exit 1 +fi + + 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 [ -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..." + 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" <>> 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 ;; *) @@ -115,15 +153,16 @@ EOF esac + chown opengnsys:www-data /opt/opengnsys/ chown -R opengnsys:www-data /opt/opengnsys/ogdhcp 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 diff --git a/debian/ogdhcp.preinst b/debian/ogdhcp.preinst index 0761132..a161bc0 100755 --- a/debian/ogdhcp.preinst +++ b/debian/ogdhcp.preinst @@ -2,14 +2,38 @@ set -e -# Asegurarse de que el usuario exista +backup_file_if_exists() { + local original="$1" + local backup="$1.bak" + + if [ -e "$original" ]; then + echo " - Guardando backup de $original en $backup" + cp -a "$original" "$backup" + fi +} + USER="opengnsys" HOME_DIR="/opt/opengnsys" -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 + +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