# Dockerfile para Cisco MAC Monitor con compatibilidad SSH legacy
# ===============================================================
FROM rockylinux:8

# Metadatos
LABEL maintainer="Equipo de Monitorización de Red"
LABEL description="Monitor de direcciones MAC para dispositivo Cisco con soporte SSH legacy"
LABEL version="2.0-ssh-compat"

# Variables de entorno
ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1
ENV LANG=en_US.UTF-8
ENV LC_ALL=en_US.UTF-8

# Actualizar sistema e instalar dependencias base
RUN dnf update -y && \
    dnf install -y \
        python3 \
        python3-pip \
        python3-devel \
        openssh-clients \
        gcc \
        openssl-devel \
        libffi-devel \
        krb5-devel && \
    dnf clean all

# Crear usuario no privilegiado
RUN useradd -m -u 1000 -s /bin/bash monitor

# Instalar dependencias Python con versiones específicas para compatibilidad
RUN pip3 install --no-cache-dir --upgrade pip && \
    pip3 install --no-cache-dir \
        'paramiko>=2.12.0,<4.0' \
        'PyYAML>=5.0,<7.0' \
        'cryptography>=3.4.8,<42.0'

# Cambiar al usuario no privilegiado
USER monitor
WORKDIR /app

# Copiar scripts principales
COPY --chown=monitor:monitor cisco_mac_monitor.py /app/
COPY --chown=monitor:monitor test_compatibility.py /app/

# Permisos de ejecución
USER root
RUN chmod +x /app/cisco_mac_monitor.py /app/test_compatibility.py
USER monitor

# Healthcheck mejorado que verifica la configuración SSH
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
    CMD python3 /app/test_compatibility.py > /dev/null && \
        python3 /app/cisco_mac_monitor.py --help > /dev/null || exit 1

# Entry point
ENTRYPOINT ["python3", "/app/cisco_mac_monitor.py"]