FROM alpine:3.23.4 AS builder

RUN apk update && apk upgrade && \
  apk add gettext lua5.2 lua5.2-bitop lua5.2-socket lua5.2-dbi-postgresql lua5.2-expat lua5.2-sql-postgres luarocks5.2 \
  lua5.2-filesize lua5.2-lpeg_patterns lua5.2-hiredis lua5.2-socket lua5.2-lpeg lua5.2-filesystem lua5.2-ldap \
  lua5.2-rapidjson lua5.2-redis lua5.2-sec lua5.2-lzlib lua5.2-cjson lua5.2-dev \
  libidn-dev libidn icu icu-dev libpq postgresql-dev make gcc expat expat-dev \
  libxmlb-dev libc-dev openssl openssl-dev htop nodejs nodejs-dev \
  libc-dev g++ yarn nagios-plugins-tcp && \
  rm -rf /var/cache/apk/*

RUN wget https://prosody.im/downloads/source/prosody-0.11.6.tar.gz && tar xvfz prosody-0.11.6.tar.gz

RUN cd prosody-0.11.6/ && ./configure --sysconfdir="/etc/prosody" --no-example-certs && \
  make && make install

RUN mkdir /vnc && mkdir -p /var/run/prosody/ && \
  mkdir -p /var/log/prosody/ && \
  mkdir -p /etc/prosody/public && mkdir -p /etc/tls-update

RUN yarn global add http-server

FROM alpine:3.23.4

RUN apk update && apk upgrade && \
  apk add gettext lua5.2 lua5.2-bitop lua5.2-socket lua5.2-dbi-postgresql lua5.2-expat lua5.2-sql-postgres luarocks5.2 \
  lua5.2-filesize lua5.2-lpeg_patterns lua5.2-hiredis lua5.2-socket lua5.2-lpeg lua5.2-filesystem lua5.2-ldap \
  lua5.2-rapidjson lua5.2-redis lua5.2-sec lua5.2-lzlib lua5.2-cjson lua5.2-dev \
  libidn-dev libidn icu libpq expat \
  openssl nodejs nagios-plugins-tcp && \
  rm -rf /var/cache/apk/*

COPY --from=builder /usr/local/ /usr/local/

RUN mkdir /vnc && mkdir -p /var/log/prosody/ && \
  mkdir -p /etc/prosody/public && mkdir -p /etc/tls-update


RUN addgroup -g 1001 prosody
RUN adduser -D -u 1001 -S -h /var/lib/prosody -H -G prosody prosody

ADD patches /vnc/patches
RUN cp /vnc/patches/mod_carbons.lua /usr/local/lib/prosody/modules/mod_carbons.lua && \
  cp /vnc/patches/mod_mam.lua /usr/local/lib/prosody/modules/mod_mam/mod_mam.lua && \
  cp /vnc/patches/mod_muc_mam.lua /usr/local/lib/prosody/modules/mod_muc_mam.lua && \
  cp /vnc/patches/mod_muc.lua /usr/local/lib/prosody/modules/muc/mod_muc.lua && \
  cp /vnc/patches/mod_muc_unique.lua /usr/local/lib/prosody/modules/mod_muc_unique.lua && \
  cp /vnc/patches/moduleapi.lua /usr/local/lib/prosody/core/moduleapi.lua && \
  cp /vnc/patches/muc.lib.lua /usr/local/lib/prosody/modules/muc/muc.lib.lua
RUN cp /vnc/patches/hidden.lib.lua /usr/local/lib/prosody/modules/muc/hidden.lib.lua && \
  cp /vnc/patches/register.lib.lua /usr/local/lib/prosody/modules/muc/register.lib.lua && \
  cp /vnc/patches/mod_admin_telnet.lua /usr/local/lib/prosody/modules/mod_admin_telnet.lua && \
  cp /vnc/patches/portmanager.lua /usr/local/lib/prosody/core/portmanager.lua
ADD vnctalk /vnc/vnctalk
RUN cd /vnc/vnctalk && cp -Rp * /usr/local/lib/prosody/modules/
ADD config /vnc/config

USER prosody
ENV __FLUSH_LOG=yes

CMD ["/vnc/config/startup.sh"]
