FROM alpine:latest AS builder

# GIT TAG FOR BUILD
ARG GIT_TAG=""
ENV GIT_TAG=${GIT_TAG}

RUN apk --no-cache add git gettext apache-ant openjdk8 curl jq zip

RUN mkdir /src && wget https://i2pplus.github.io/installers/i2psnark-standalone.zip -O /src/i2psnark-standalone.zip

RUN mkdir /snark && unzip /src/i2psnark-standalone.zip -d /snark

FROM alpine:latest
LABEL maintainer="Yehor Popovych <popovych.yegor@gmail.com>"

# GIT TAG FOR BUILD
ARG GIT_TAG=""
ENV GIT_TAG=${GIT_TAG}

# allowed hostnames for web ui
ARG HOSTNAMES=""
ENV HOSTNAMES=${HOSTNAMES}

# GID on the HOST from which i2psnark will work
ARG HOST_GID=1000
ENV HOST_GID=${HOST_GID}

# UID on the HOST from which i2psnark will work
ARG HOST_UID=1000
ENV HOST_UID=${HOST_UID}

# I2CP hostname
ARG I2CP_HOST=""
ENV I2CP_HOST=${I2CP_HOST}

# I2CP port
ARG I2CP_PORT=7654
ENV I2CP_PORT=${I2CP_PORT}

RUN addgroup -g ${HOST_GID} i2psnark \
    && adduser -h /snark -G i2psnark -u ${HOST_UID} -D i2psnark

COPY --from=builder --chown=${HOST_GID}:${HOST_UID} /snark /snark

RUN sed -i 's/<Set name="host">127.0.0.1<\/Set>/<Set name="host">0.0.0.0<\/Set>/' /snark/i2psnark/jetty-i2psnark.xml \
    && echo "i2psnark.dir=/snark/downloads" > /snark/i2psnark.config.default \
    && echo "i2psnark.i2cpHost=${I2CP_HOST}" >> /snark/i2psnark.config.default \
    && echo "i2psnark.i2cpPort=${I2CP_PORT}" >> /snark/i2psnark.config.default \
    && echo "i2psnark.allowedHosts=${HOSTNAMES}" >> /snark/i2psnark/i2psnark-appctx.config \
    && chown -R i2psnark:i2psnark /snark \
    && cd /snark/i2psnark && ln -s ../config i2psnark.config.d \
    && rm -rf /src \
    && apk --no-cache add openjdk8-jre-base su-exec shadow

VOLUME /snark/config
VOLUME /snark/downloads

COPY entrypoint.sh /entrypoint.sh
RUN chmod a+x /entrypoint.sh

EXPOSE 8002

ENTRYPOINT [ "/entrypoint.sh" ]