diff --git a/debian/ogdhcp.postinst b/debian/ogdhcp.postinst index 498604e..864b4d3 100644 --- a/debian/ogdhcp.postinst +++ b/debian/ogdhcp.postinst @@ -24,6 +24,28 @@ restore_config_if_modified() { } +# Añade el hook lease-cmds a kea-dhcp4.conf solo si no está ya presente +ensure_lease_cmds_hook() { + local config="$1" + local lib="$2" + + [ -f "$config" ] || return 0 + [ -n "$lib" ] || return 0 + + if grep -q "libdhcp_lease_cmds" "$config"; then + echo "El hook lease-cmds ya está presente en $config, no se añade de nuevo." + return 0 + fi + + echo "Añadiendo hook lease-cmds a $config..." + local tmp + tmp=$(mktemp) + jq --arg lib "$lib" \ + '.Dhcp4["hooks-libraries"] = (.Dhcp4["hooks-libraries"] // []) + [{"library": $lib}]' \ + "$config" > "$tmp" && mv "$tmp" "$config" + chown _kea:_kea "$config" +} + KEA_CTRL_AGENT_CONF="/etc/kea/kea-ctrl-agent.conf" PUBLIC_DIR=/opt/opengnsys/ogdhcp/api/public db_get opengnsys/ogdhcp_interfaces @@ -95,13 +117,23 @@ EOF echo "Configurando kea-dhcp4..." IFS=',' read -r -a INTERFACES <<< "$OGDHCP_INTERFACES" KEA_CONFIG="/etc/kea/kea-dhcp4.conf" + + # Detectar la ruta de libdhcp_lease_cmds.so (varía según arquitectura) + LEASE_CMDS_LIB=$(find /usr/lib -name "libdhcp_lease_cmds.so" 2>/dev/null | head -1) + if [ -z "$LEASE_CMDS_LIB" ]; then + echo "Advertencia: no se encontró libdhcp_lease_cmds.so. El hook lease-cmds no estará activo." + else + echo "Librería lease-cmds encontrada en: $LEASE_CMDS_LIB" + fi + if [ -e "$KEA_CONFIG" ]; then dpkg-divert --package ogdhcp --divert "$KEA_CONFIG.dpkg-dist" --rename "$KEA_CONFIG" + # El fichero se genera desde cero, no hay riesgo de duplicación cat > "$KEA_CONFIG" </dev/null | head -1) + ensure_lease_cmds_hook "/etc/kea/kea-dhcp4.conf" "$LEASE_CMDS_LIB" fi echo ">>> Configuración de ogdhcp completada." ;;