FROM debian:11 as gvm-libs-base

ENV DEBIAN_FRONTEND=noninteractive
ENV LANG=C.UTF-8

RUN apt update && apt full-upgrade -y

RUN apt install --no-install-recommends -y \
    build-essential \
    curl \
    cmake \
    pkg-config \
    python3 \
    python3-pip \
    gnupg \
    lsb-release \
    \
    libglib2.0-dev \
    libgpgme-dev \
    libgnutls28-dev \
    uuid-dev \
    libssh-gcrypt-dev \
    libhiredis-dev \
    libxml2-dev \
    libpcap-dev \
    libnet1-dev \
    libldap2-dev \
    libradcli-dev

FROM gvm-libs-base

ENV INSTALL_PREFIX=/usr/local
ENV SOURCE_DIR=/source
RUN mkdir -p $SOURCE_DIR
ENV BUILD_DIR=/build
RUN mkdir -p $BUILD_DIR
ENV INSTALL_DIR=/install
RUN mkdir -p $INSTALL_DIR
WORKDIR $BUILD_DIR

RUN curl -O https://www.greenbone.net/GBCommunitySigningKey.asc && \
    ($(gpg -nq --import --import-options import-show --with-colons GBCommunitySigningKey.asc | awk -F: '$1 == "fpr" { print $10 }') != "8AE4BE429B60A59B311C2E739823FAA60ED1E580") && (echo "Fingerprint mismatch" && exit 1) || \
    gpg --import <GBCommunitySigningKey.asc && \
    ( \
        echo 5 \
        echo y \
        echo save \
    ) | gpg --command-fd 0 --no-tty --no-greeting -q --edit-key "$(gpg --list-packets <GBCommunitySigningKey.asc | awk '$1=="keyid:"{print$2;exit}')" trust

RUN echo "/usr/local/lib" > "/etc/ld.so.conf.d/gvm.conf" && ldconfig

ARG GVM_VERSION=21.4.4
ENV GVM_VERSION=${GVM_VERSION}
ENV GVM_LIBS_VERSION=${GVM_VERSION}

RUN curl -f -L https://github.com/greenbone/gvm-libs/archive/refs/tags/v$GVM_LIBS_VERSION.tar.gz -o $SOURCE_DIR/gvm-libs-$GVM_LIBS_VERSION.tar.gz && \
    curl -f -L https://github.com/greenbone/gvm-libs/releases/download/v$GVM_LIBS_VERSION/gvm-libs-$GVM_LIBS_VERSION.tar.gz.asc -o $SOURCE_DIR/gvm-libs-$GVM_LIBS_VERSION.tar.gz.asc && \
    gpg --verify $SOURCE_DIR/gvm-libs-$GVM_LIBS_VERSION.tar.gz.asc $SOURCE_DIR/gvm-libs-$GVM_LIBS_VERSION.tar.gz && \
    tar -C $SOURCE_DIR -xvzf $SOURCE_DIR/gvm-libs-$GVM_LIBS_VERSION.tar.gz

RUN mkdir -p $BUILD_DIR/gvm-libs && cd $BUILD_DIR/gvm-libs && \
    cmake $SOURCE_DIR/gvm-libs-$GVM_LIBS_VERSION \
        -DCMAKE_BUILD_TYPE=Release && \
    make -j$(nproc) && \
    make install && \
    make DESTDIR=$INSTALL_DIR install