update post install

pull/9/head
Nicolas Arenas 2025-06-20 13:30:59 +02:00
parent bbde1dc3c1
commit 024569f3a5
2 changed files with 113 additions and 56 deletions

129
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,67 @@ 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;')
case "$1" in case "$1" in
configure) configure)
echo "Configurando ogdhcp..." if [ $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 # Configuración de AppArmor
APPARMOR_LOCAL_PROFILE="/etc/apparmor.d/local/usr.sbin.kea-dhcp4" APPARMOR_LOCAL_PROFILE="/etc/apparmor.d/local/usr.sbin.kea-dhcp4"
echo "Añadiendo permisos personalizados a AppArmor para kea-dhcp4..." echo "Añadiendo permisos personalizados a AppArmor para kea-dhcp4..."
mkdir -p "$(dirname "$APPARMOR_LOCAL_PROFILE")" mkdir -p "$(dirname "$APPARMOR_LOCAL_PROFILE")"
cat > "$APPARMOR_LOCAL_PROFILE" <<EOF 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": {
@ -102,7 +124,17 @@ EOF
} }
} }
EOF EOF
else ; then
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/
fi fi
echo "Configuración de kea-dhcp4 completada."
;; ;;
abort-upgrade|abort-remove|abort-deconfigure) abort-upgrade|abort-remove|abort-deconfigure)
@ -115,6 +147,7 @@ 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

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