FROM code.pztrn.name/containers/mirror/alpine:3.24.1 AS build

ENV PERL_MM_USE_DEFAULT=1
RUN apk add --no-cache \
    bison \
    build-base \
    bzip2 \
    curl \
    flex \
    gawk \
    gd-dev \
    gnupg \
    libgd \
    krb5-dev \
    openssl \
    openssl-dev \
    perl \
    perl-dev \
    perl-utils \
    python3 \
    python3-dev \
    s6-overlay \
    s6-overlay-syslogd \
    shadow \
    sqlite-dev \
    ssmtp \
    tar \
    zlib-dev && \
    cpan -T GD MIME::Parser && \
    rm -rf /root/.cpan

# Build everything in one command and cleanup sources so container will eat less space.
RUN mkdir /src && cd /src && \
    # libcanlock
    curl -sL https://micha.freeshell.org/libcanlock/src/libcanlock-3.3.3.tar.bz2 | tar xj && cd libcanlock-3.3.3 && ./configure && make && make install && \
    # inn2
    cd /src && curl -sL https://github.com/InterNetNews/inn/releases/download/2.7.4/inn-2.7.4.tar.gz | tar xz && cd inn-2.7.4 && \
    ./configure --prefix=/inn2 --with-zlib --with-openssl --with-sqlite --with-krb5 --with-perl --with-python --with-canlock && \
    make && \
    sed -i 's/#domain:/domain: news.localhost/' site/inn.conf && \
    make install && \
    sed -i 's/#\(tlscapath:\)/\1/' /inn2/etc/inn.conf && \
    sed -i 's/#\(tlscertfile:\)/\1/' /inn2/etc/inn.conf && \
    sed -i 's/#\(tlskeyfile:\)/\1/' /inn2/etc/inn.conf && \
    mv /inn2/etc /inn2/etc-default && \
    mv /inn2/db /inn2/db-default && \
    mv /inn2/spool /inn2/spool-default && \
    rm -rf /src

COPY etc /etc

RUN groupmod -g 600 news && usermod -u 600 -g 600 -d /inn2 news && chown -R news:news /inn2 && chown -R news:news /etc/cont-init.d /etc/services.d

WORKDIR /inn2
ENV PATH=/inn2/bin:$PATH
EXPOSE 119
EXPOSE 563
VOLUME [ "/inn2/db", "/inn2/spool", "/inn2/log" ]

ENTRYPOINT [ "/init" ]
