update_packages #9

Merged
narenas merged 2 commits from update_packages into main 2025-06-20 15:15:18 +02:00
2 changed files with 124 additions and 61 deletions

147
debian/ogdhcp.postinst vendored
View File

@ -4,6 +4,26 @@ set -e
. /usr/share/debconf/confmodule . /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" KEA_CTRL_AGENT_CONF="/etc/kea/kea-ctrl-agent.conf"
PUBLIC_DIR=/opt/opengnsys/ogdhcp/api/public PUBLIC_DIR=/opt/opengnsys/ogdhcp/api/public
db_get opengnsys/ogdhcp_interfaces db_get opengnsys/ogdhcp_interfaces
@ -13,65 +33,71 @@ OGDHCP_IP="$RET"
db_get opengnsys/ogdhcp_ogbootIP db_get opengnsys/ogdhcp_ogbootIP
OGBOOT_IP="$RET" 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 case "$1" in
configure) configure)
echo "Configurando ogdhcp..." if [ -z "$2" ]; then
echo ">>> Configuración de ogdhcp, realizando instalacion nueva"
# Configuración de kea-ctrl-agent # Configuración de kea-ctrl-agent
echo "Eliminando autenticación de kea-ctrl-agent..." echo "Eliminando autenticación de kea-ctrl-agent..."
if [ -e "$KEA_CTRL_AGENT_CONF" ]; then if [ -e "$KEA_CTRL_AGENT_CONF" ]; then
dpkg-divert --package ogdhcp --divert "$KEA_CTRL_AGENT_CONF.dpkg-dist" --rename "$KEA_CTRL_AGENT_CONF" 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" cp -a "$KEA_CTRL_AGENT_CONF.dpkg-dist" "$KEA_CTRL_AGENT_CONF"
if grep -q '^[^#]*"authentication": {' "$KEA_CTRL_AGENT_CONF"; then if grep -q '^[^#]*"authentication": {' "$KEA_CTRL_AGENT_CONF"; then
sed -i '/"authentication": {/,/^[[:space:]]*},/ { sed -i '/"authentication": {/,/^[[:space:]]*},/ {
s/^\([[:space:]]*\)\([^#]\)/\1#\2/ s/^\([[:space:]]*\)\([^#]\)/\1#\2/
}' "$KEA_CTRL_AGENT_CONF" }' "$KEA_CTRL_AGENT_CONF"
fi
fi fi
fi # Configuración de AppArmor
APPARMOR_LOCAL_PROFILE="/etc/apparmor.d/local/usr.sbin.kea-dhcp4"
# Configuración de AppArmor echo "Añadiendo permisos personalizados a AppArmor para kea-dhcp4..."
APPARMOR_LOCAL_PROFILE="/etc/apparmor.d/local/usr.sbin.kea-dhcp4" mkdir -p "$(dirname "$APPARMOR_LOCAL_PROFILE")"
echo "Añadiendo permisos personalizados a AppArmor para kea-dhcp4..." cat > "$APPARMOR_LOCAL_PROFILE" <<EOF
mkdir -p "$(dirname "$APPARMOR_LOCAL_PROFILE")"
cat > "$APPARMOR_LOCAL_PROFILE" <<EOF
/etc/kea/ rw, /etc/kea/ rw,
/etc/kea/** rw, /etc/kea/** rw,
EOF EOF
echo "Recargando perfiles de AppArmor..." echo "Recargando perfiles de AppArmor..."
apparmor_parser -r /etc/apparmor.d/usr.sbin.kea-dhcp4 apparmor_parser -r /etc/apparmor.d/usr.sbin.kea-dhcp4
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "El perfil de AppArmor se recargó correctamente." echo "El perfil de AppArmor se recargó correctamente."
else else
echo "Error al recargar el perfil de AppArmor." echo "Error al recargar el perfil de AppArmor."
fi fi
# Configuración de nginx # Configuración de nginx
echo "Configurando nginx..." echo "Configurando nginx..."
PHP_VERSION=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;') if [ ! -f /etc/nginx/sites-available/ogdhcp.conf ]; then
if [ ! -f /etc/nginx/sites-available/ogdhcp.conf ]; then cp /opt/opengnsys/ogdhcp/etc/nginxServer.conf.tmpl /etc/nginx/sites-available/ogdhcp.conf
cp /opt/opengnsys/ogdhcp/etc/nginxServer.conf.tmpl /etc/nginx/sites-available/ogdhcp.conf sed -i "s|__PHPVERSION__|$PHP_VERSION|g" /etc/nginx/sites-available/ogdhcp.conf
sed -i "s|__PHPVERSION__|$PHP_VERSION|g" /etc/nginx/sites-available/ogdhcp.conf sed -i "s|__SERVERIP__|$OGDHCP_IP|g" /etc/nginx/sites-available/ogdhcp.conf
sed -i "s|__SERVERIP__|$OGDHCP_IP|g" /etc/nginx/sites-available/ogdhcp.conf sed -i "s|__PUBLICDIR__|$PUBLIC_DIR|g" /etc/nginx/sites-available/ogdhcp.conf
sed -i "s|__PUBLICDIR__|$PUBLIC_DIR|g" /etc/nginx/sites-available/ogdhcp.conf ln -s /etc/nginx/sites-available/ogdhcp.conf /etc/nginx/sites-enabled/ogdhcp.conf
ln -s /etc/nginx/sites-available/ogdhcp.conf /etc/nginx/sites-enabled/ogdhcp.conf else
else echo "El archivo /etc/nginx/sites-available/ogdhcp.conf ya existe."
echo "El archivo /etc/nginx/sites-available/ogdhcp.conf ya existe." fi
fi
# Configuración de php-fpm # Configuración de php-fpm
echo "Configurando php-fpm..." echo "Configurando php-fpm..."
if [ ! -f /etc/php/$PHP_VERSION/fpm/pool.d/ogdhcp.conf ]; then if [ ! -f /etc/php/$PHP_VERSION/fpm/pool.d/ogdhcp.conf ]; then
cp /opt/opengnsys/ogdhcp/etc/php/fpm/ogdhcp-fpm.conf /etc/php/$PHP_VERSION/fpm/pool.d/ogdhcp.conf cp /opt/opengnsys/ogdhcp/etc/php/fpm/ogdhcp-fpm.conf /etc/php/$PHP_VERSION/fpm/pool.d/ogdhcp.conf
fi fi
# Configuración de kea-dhcp4 # Configuración de kea-dhcp4
echo "Configurando kea-dhcp4..." echo "Configurando kea-dhcp4..."
IFS=',' read -r -a INTERFACES <<< "$OGDHCP_INTERFACES" IFS=',' read -r -a INTERFACES <<< "$OGDHCP_INTERFACES"
KEA_CONFIG="/etc/kea/kea-dhcp4.conf" KEA_CONFIG="/etc/kea/kea-dhcp4.conf"
if [ -e "$KEA_CONFIG" ]; then if [ -e "$KEA_CONFIG" ]; then
dpkg-divert --package ogdhcp --divert "$KEA_CONFIG.dpkg-dist" --rename "$KEA_CONFIG" dpkg-divert --package ogdhcp --divert "$KEA_CONFIG.dpkg-dist" --rename "$KEA_CONFIG"
cat > "$KEA_CONFIG" <<EOF cat > "$KEA_CONFIG" <<EOF
{ {
"Dhcp4": { "Dhcp4": {
"interfaces-config": { "interfaces-config": {
@ -103,9 +129,21 @@ EOF
} }
EOF EOF
fi 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/ogdhcp.conf"
fi
echo ">>> Configuración de ogdhcp completada."
;; ;;
abort-upgrade|abort-remove|abort-deconfigure) 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 esac
chown opengnsys:www-data /opt/opengnsys/ chown opengnsys:www-data /opt/opengnsys/
chown -R opengnsys:www-data /opt/opengnsys/ogdhcp chown -R opengnsys:www-data /opt/opengnsys/ogdhcp
chown -R _kea:_kea /etc/kea chown -R _kea:_kea /etc/kea
# Reiniciar servicios # Reiniciar servicios
systemctl daemon-reload systemctl daemon-reload
systemctl restart nginx systemctl restart nginx || echo "Error al reiniciar nginx"
systemctl restart kea-dhcp4-server systemctl restart kea-dhcp4-server || echo "Error al reiniciar kea-dhcp4-server"
systemctl restart kea-ctrl-agent systemctl restart kea-ctrl-agent || echo "Error al reiniciar kea-ctrl-agent"
systemctl restart php$PHP_VERSION-fpm systemctl restart php$PHP_VERSION-fpm || echo "Error al reiniciar php$PHP_VERSION-fpm"
exit 0 exit 0

38
debian/ogdhcp.preinst vendored
View File

@ -2,14 +2,38 @@
set -e 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" USER="opengnsys"
HOME_DIR="/opt/opengnsys" HOME_DIR="/opt/opengnsys"
if id "$USER" &>/dev/null; then
echo "El usuario $USER ya existe." case $1 in
else install)
echo "Creando el usuario $USER con home en $HOME_DIR." if id "$USER" &>/dev/null; then
useradd -m -d "$HOME_DIR" -s /bin/bash "$USER" echo "El usuario $USER ya existe."
fi 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 exit 0