FROM ubuntu:22.04  


# Deal with ClamAV installation  
RUN apt update -y && apt upgrade -y && apt install -y \
    gcc make pkg-config python3 python3-pip python3-pytest valgrind \
    check libbz2-dev libcurl4-openssl-dev libjson-c-dev libmilter-dev \
    libncurses5-dev libpcre2-dev libssl-dev libxml2-dev zlib1g-dev \
    cmake cargo rust-all wget

RUN mkdir -p /work/clamav && \
    wget https://www.clamav.net/downloads/production/clamav-1.0.1.tar.gz && \ 
    tar xf clamav-1.0.1.tar.gz && \
    mkdir clamav-build && \
    cd clamav-build && \
    cmake ../clamav-1.0.1 && \
    make -j4 && \
    make install && \ 
    rm -Rf /work/clamav 

# Add at least basic (but out of date) ClamAV DB as a fallback for testing purposes
COPY config/freshclam.conf /usr/local/etc/freshclam.conf
RUN freshclam --foreground -v 

# Deal with Golang installation

RUN apt update -y && apt upgrade -y && apt install -y \
    golang git

RUN mkdir -p /work/malscan 
COPY . /work/malscan 

RUN cd /work/malscan && \
    CGO_LDFLAGS='-lclamav' go build . && \
    cp malscan /usr/local/bin/malscan 

# Entrypoint 
CMD /usr/local/bin/malscan
EXPOSE 8080