FROM python:3.11-slim

ENV PYTHONPATH=/opt/fail2ban
ENV PATH=/opt/fail2ban/bin:$PATH
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -y --no-install-recommends \
    bash ca-certificates tzdata iptables ipset procps sed grep coreutils findutils inotify-tools \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /opt/fail2ban

COPY fail2ban-upstream /opt/fail2ban
COPY rootfs/ /

RUN mkdir -p /etc/fail2ban/action.d /etc/fail2ban/filter.d /etc/fail2ban/jail.d /var/run/fail2ban /data/db \
    && cp -a /opt/fail2ban/config/action.d/. /etc/fail2ban/action.d/ \
    && cp -a /opt/fail2ban/config/filter.d/. /etc/fail2ban/filter.d/ \
    && cp -a /opt/fail2ban/config/jail.conf /etc/fail2ban/jail.conf \
    && cp -a /opt/fail2ban/config/fail2ban.conf /etc/fail2ban/fail2ban.conf \
    && cp -a /opt/fail2ban/config/paths-common.conf /etc/fail2ban/paths-common.conf \
    && cp -a /opt/fail2ban/config/paths-debian.conf /etc/fail2ban/paths-debian.conf \
    && chmod +x /usr/local/bin/entrypoint.sh \
        /usr/local/bin/apply-admin-policies.sh \
        /usr/local/bin/apply-admin-policies.py

ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
