83 líneas
2.1 KiB
Bash
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 |