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