##############
# Base image #
##############
FROM httpd:2.4 AS base

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get -y update \
        && apt-get install -y --no-install-recommends \
            gnupg2 \
            ca-certificates \
            wget \
        && apt-get -y clean \
        && rm -rf /var/lib/apt/lists/*


RUN wget --output-document=/usr/share/keyrings/cznic-archive-keyring.gpg https://archive.nic.cz/dists/cznic-archive-keyring.gpg && \
    echo "deb [signed-by=/usr/share/keyrings/cznic-archive-keyring.gpg] http://archive.nic.cz/scratch bookworm main" > /etc/apt/sources.list.d/fred.list


#########################
# Build Application 1/2 #
#########################
FROM base AS modeppd_builder

ARG BUILD_JOBS=1
ENV CMAKE_BUILD_PARALLEL_LEVEL=$BUILD_JOBS

WORKDIR /app

COPY . /app

RUN apt-get -y update                       \
        && apt-get -y install --no-install-recommends \
            ssh-client                      \
            cmake                           \
            git                             \
            pkg-config                      \
            build-essential                 \
            bash-completion                 \
            libssl-dev                      \
            liborbit2-dev                   \
            libaprutil1-dev                 \
            libapr1-dev                     \
            apache2-dev                     \
            libxml2-dev                     \
        && apt-get -y clean                 \
        && rm -rf /var/lib/apt/lists/*

RUN echo "Using $CMAKE_BUILD_PARALLEL_LEVEL job(s) for build" && \
    cmake -B build -S . && cmake --build build

#########################
# Build Application 2/2 #
#########################
FROM base AS modcorba_builder

ARG BUILD_JOBS=1
ENV CMAKE_BUILD_PARALLEL_LEVEL=$BUILD_JOBS

WORKDIR /app

COPY --from=mod_corba . /app

RUN apt-get -y update                       \
        && apt-get -y install --no-install-recommends \
            cmake                           \
            git                             \
            pkg-config                      \
            build-essential                 \
            bash-completion                 \
            liborbit2-dev                   \
            libaprutil1-dev                 \
            libapr1-dev                     \
            doxygen                         \
            apache2-dev                     \
        && apt-get -y clean                 \
        && rm -rf /var/lib/apt/lists/*

RUN echo "Using $CMAKE_BUILD_PARALLEL_LEVEL job(s) for build" && \
    cmake -B build -S . && cmake --build build


###############
# Final image #
###############
FROM base AS final

RUN apt-get -y update                       \
        && apt-get -y install --no-install-recommends \
            liborbit-2-0                     \
        && apt-get -y clean                 \
        && rm -rf /var/lib/apt/lists/*


COPY --from=modeppd_builder /app/build/lib/mod_eppd.so /usr/local/apache2/modules/mod_eppd.so
COPY --from=modcorba_builder /app/build/lib/mod_corba.so /usr/local/apache2/modules/mod_corba.so
COPY --from=modeppd_builder /app/schemas /app/schemas

COPY --from=config ./epp.nic.cz.conf /usr/local/apache2/conf/extra
COPY --from=certs ./server /etc/ssl/nic-certs
COPY --from=certs ./ca /etc/ssl/ca

RUN echo "LoadModule ssl_module modules/mod_ssl.so" >> /usr/local/apache2/conf/httpd.conf
RUN echo "LoadModule corba_module modules/mod_corba.so" >> /usr/local/apache2/conf/httpd.conf
RUN echo "LoadModule eppd_module modules/mod_eppd.so"  >> /usr/local/apache2/conf/httpd.conf
RUN echo "Include conf/extra/epp.nic.cz.conf"  >> /usr/local/apache2/conf/httpd.conf

WORKDIR /var/log/apache2

RUN touch /var/log/apache2/eppd.log

EXPOSE 700
