FROM gvm-libs:latest as gvmd-base

RUN apt install -y \
    libglib2.0-dev \
    libgnutls28-dev \
    libpq-dev \
    postgresql-server-dev-13 \
    libical-dev \
    xsltproc \
    rsync \
    texlive-latex-extra \
    texlive-fonts-recommended \
    xmlstarlet \
    zip \
    rpm \
    fakeroot \
    dpkg \
    nsis \
    gnupg \
    gpgsm \
    wget \
    sshpass \
    openssh-client \
    socat \
    snmp \
    python3 \
    smbclient \
    python3-lxml \
    gnutls-bin \
    xml-twig-tools

FROM gvmd-base

ARG GVMD_VERSION=21.4.5
ENV GVMD_VERSION=${GVMD_VERSION}

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

COPY patches/ patches/
RUN patch -d $SOURCE_DIR/gvmd-$GVMD_VERSION -p1 < patches/postgresql_uri_env.patch
RUN sed -i 's/MANAGE_MAX_HOSTS 4095/MANAGE_MAX_HOSTS 65536/g' $SOURCE_DIR/gvmd-$GVMD_VERSION/src/manage.h

RUN mkdir -p $BUILD_DIR/gvmd && cd $BUILD_DIR/gvmd && \
    cmake $SOURCE_DIR/gvmd-$GVMD_VERSION \
        -DOPENVAS_DEFAULT_SOCKET=/run/ospd/ospd.sock \
        -DCMAKE_BUILD_TYPE=Release && \
    make -j$(nproc) && \
    make install && \
    make DESTDIR=$INSTALL_DIR install

COPY init.sql /usr/share/gvm/init.sql
RUN sed -i 's|/var/log/gvm/gvmd.log|/dev/stdout|g' /etc/gvm/gvmd_log.conf

COPY --from=openvas-scanner /usr/local/bin/greenbone-nvt-sync /usr/local/bin/greenbone-nvt-sync

VOLUME /var/lib/gvm/

# EXPOSE 9390

COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]

CMD ["gvmd", "-f", "--listen=0.0.0.0", "--port=9390", "--osp-vt-update=/run/ospd/ospd.sock"]