FROM node:10-buster-slim as base
LABEL maintainer="quentinduchemin@tuta.io"

ENV NODE_ENV=production

FROM base as downloader

ARG ETHERPAD_VERSION_BUILD=1.8.4
ARG ETHERPAD_PLUGINS="\
  ep_adminpads2 ep_align ep_author_hover ep_back_button ep_chatdate \
  ep_comments_page ep_delete_after_delay ep_delete_empty_pads ep_font_color \
  ep_font_family ep_headings2 ep_markdown ep_message_all ep_pad_activity_nofication_in_title \
  ep_pads_stats ep_prompt_for_name ep_set_title_on_pad \
  ep_subscript_and_superscript"

RUN apt-get update && \
    apt-get install -y \
      curl \
      gzip \
      jpegoptim \
      libssl-dev \
      optipng \
      pkg-config \
      python \
      unzip && \
    mkdir -p /opt/etherpad-lite/

WORKDIR /opt/etherpad-lite
# Install Etherpad
RUN curl -SL https://github.com/ether/etherpad-lite/archive/${ETHERPAD_VERSION_BUILD}.zip > etherpad.zip && \
    unzip etherpad && \
    rm -Rf etherpad.zip etherpad-lite-${ETHERPAD_VERSION_BUILD}/.git && \
    mv etherpad-lite-${ETHERPAD_VERSION_BUILD}/* . && \
    bin/installDeps.sh

COPY ./landing-page ./src/templates/landing-page

# Build and replace landing page
RUN npm install minify && \
    ./src/templates/landing-page/build/build.sh && \
    cp ./src/templates/landing-page/index.html src/templates/index.html && \
    cp -r ./src/templates/landing-page/static/* src/static/

# Install plugins
RUN for PLUGIN_NAME in ${ETHERPAD_PLUGINS}; do npm install "${PLUGIN_NAME}"; done && \
  # Change default hard-coded pad title
  sed -i 's|Untitled Pad|Nouveau pad|g' node_modules/ep_set_title_on_pad/templates/title.ejs && \
  sed -i 's|Untitled Pad|Nouveau pad|g' node_modules/ep_set_title_on_pad/static/tests/frontend/specs/atest.js

# Construction de l'image finale
FROM base

# Try to stick to the LDAP UID for etherpad (OU=services)
ARG UID=5004
COPY entrypoint.sh /opt/etherpad-lite/entrypoint.sh

RUN useradd --uid ${UID} --create-home etherpad

# Import des fichiers téléchargés dans l'image downloader
COPY --from=downloader --chown=etherpad /opt/etherpad-lite /opt/etherpad-lite/

RUN apt-get update && \
    apt-get install -y curl nano default-mysql-client postgresql-client && \
    chmod +x /opt/etherpad-lite/entrypoint.sh && \
    usermod -d /opt/etherpad-lite etherpad && \
    chown -R etherpad /opt/etherpad-lite && \
    rm -rf /var/lib/apt/lists/*

EXPOSE 8080
HEALTHCHECK --interval=20s --timeout=3s CMD curl --fail http://localhost:8080 || exit 1
WORKDIR /opt/etherpad-lite/
USER etherpad

ENTRYPOINT ["/opt/etherpad-lite/entrypoint.sh"]
CMD [ "/bin/bash", "-c", "/opt/etherpad-lite/bin/run.sh" ]