Adds leases hoook to kea config
parent
54eab1342b
commit
ba461ead15
|
|
@ -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"
|
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
|
||||||
|
|
@ -95,13 +117,23 @@ EOF
|
||||||
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"
|
||||||
|
|
||||||
|
# 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
|
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"
|
||||||
|
# El fichero se genera desde cero, no hay riesgo de duplicación
|
||||||
cat > "$KEA_CONFIG" <<EOF
|
cat > "$KEA_CONFIG" <<EOF
|
||||||
{
|
{
|
||||||
"Dhcp4": {
|
"Dhcp4": {
|
||||||
"interfaces-config": {
|
"interfaces-config": {
|
||||||
"interfaces": [ $(
|
"interfaces": [ $(
|
||||||
for interface in "${INTERFACES[@]}"; do
|
for interface in "${INTERFACES[@]}"; do
|
||||||
echo "\"$interface\""
|
echo "\"$interface\""
|
||||||
done | paste -sd "," -
|
done | paste -sd "," -
|
||||||
|
|
@ -128,6 +160,8 @@ EOF
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
# Añadir el hook tras generar el fichero (la función verifica que no esté ya)
|
||||||
|
ensure_lease_cmds_hook "$KEA_CONFIG" "$LEASE_CMDS_LIB"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
|
||||||
|
|
@ -137,6 +171,10 @@ EOF
|
||||||
restore_config_if_modified "/opt/opengnsys/ogdhcp/api/.env"
|
restore_config_if_modified "/opt/opengnsys/ogdhcp/api/.env"
|
||||||
restore_config_if_modified "/etc/nginx/sites-available/ogdhcp.conf"
|
restore_config_if_modified "/etc/nginx/sites-available/ogdhcp.conf"
|
||||||
restore_config_if_modified "/etc/php/$PHP_VERSION/fpm/pool.d/ogdhcp.conf"
|
restore_config_if_modified "/etc/php/$PHP_VERSION/fpm/pool.d/ogdhcp.conf"
|
||||||
|
|
||||||
|
# En upgrade: añadir el hook si se instaló kea-hook-lease-cmds y no estaba configurado
|
||||||
|
LEASE_CMDS_LIB=$(find /usr/lib -name "libdhcp_lease_cmds.so" 2>/dev/null | head -1)
|
||||||
|
ensure_lease_cmds_hook "/etc/kea/kea-dhcp4.conf" "$LEASE_CMDS_LIB"
|
||||||
fi
|
fi
|
||||||
echo ">>> Configuración de ogdhcp completada."
|
echo ">>> Configuración de ogdhcp completada."
|
||||||
;;
|
;;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue