Files
csf-docker/docker/entrypoint.sh
2025-09-20 19:00:44 +02:00

83 líneas
2.1 KiB
Bash

#!/bin/bash
# Entrypoint para el contenedor CSF
set -e
# Función para manejo de señales
cleanup() {
echo "Recibida señal de terminación..."
# Detener CSF de forma controlada
if [ -x /usr/local/csf/bin/csf ]; then
echo "Deteniendo CSF..."
/usr/local/csf/bin/csf --stop || true
fi
# Detener LFD si está ejecutándose
if pidof lfd > /dev/null; then
echo "Deteniendo LFD..."
killall lfd || true
fi
# Detener rsyslog
if pidof rsyslogd > /dev/null; then
echo "Deteniendo rsyslog..."
killall rsyslogd || true
fi
echo "Limpieza completada"
exit 0
}
# Configurar manejo de señales
trap cleanup SIGTERM SIGINT
# Iniciar rsyslog en background
echo "Iniciando rsyslog..."
rsyslogd &
# Esperar un momento para que rsyslog se inicie
sleep 2
# Verificar capacidades necesarias
if [ ! -w /proc/sys/net/ipv4/ip_forward ]; then
echo "Advertencia: No se pueden modificar configuraciones de red del kernel"
echo "Asegúrese de ejecutar el contenedor con --privileged o las capacidades necesarias"
fi
case "$1" in
csf)
echo "Iniciando CSF en modo contenedor..."
# Ejecutar script de inicio de CSF
/usr/local/bin/csf-start.sh
# Mantener el contenedor ejecutándose
echo "CSF iniciado. Manteniendo contenedor activo..."
# Loop infinito para mantener el contenedor vivo
while true; do
# Verificar cada 30 segundos que CSF sigue ejecutándose
if ! /usr/local/csf/bin/csf --status > /dev/null 2>&1; then
echo "CSF no está ejecutándose. Reintentando inicio..."
/usr/local/bin/csf-start.sh || {
echo "Error: No se pudo reiniciar CSF"
cleanup
exit 1
}
fi
sleep 30
done
;;
bash|sh)
echo "Iniciando shell interactivo..."
exec /bin/bash
;;
*)
echo "Ejecutando comando personalizado: $@"
exec "$@"
;;
esac