FROM ubuntu:focal as base
RUN apt update && \
    apt -y install build-essential && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

FROM base as builder

WORKDIR /build
COPY ./Makefile ./
COPY ./proxy.c ./
RUN make

FROM base

RUN apt update && \
    apt -y install curl gnupg2 libcap2-bin && \
    curl https://pkg.cloudflareclient.com/pubkey.gpg | apt-key add - && \
    echo 'deb http://pkg.cloudflareclient.com/ buster main' | tee /etc/apt/sources.list.d/cloudflare-client.list && \
    apt update && \
    apt -y install cloudflare-warp && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
    mkdir -p /root/.local/share/warp && \
    echo 'yes' > ~/.local/share/warp/accepted-tos.txt && \
    mkdir -p /var/lib/cloudflare-warp

WORKDIR /usr/src/app

COPY --from=builder /build/proxy ./proxy
COPY ./entrypoint.sh ./

ENV LOCAL_PROXY_PORT 10080
ENV FORWARD_PROXY_PORT 8080
EXPOSE $FORWARD_PROXY_PORT

ENTRYPOINT [ "./entrypoint.sh" ]
CMD ["bash", "-c", "./proxy -l $FORWARD_PROXY_PORT -h localhost -p $LOCAL_PROXY_PORT -f"]
