Integrate Biboumi IRC-to-XMPP gateway

This commit is contained in:
Alex Palaistras 2021-03-21 12:23:35 +00:00
parent 65e15b036e
commit dc2c3a7933
9 changed files with 77 additions and 3 deletions

View File

@ -0,0 +1,25 @@
FROM docker.io/debian:stable-slim
ENV BUILD_DEPS="build-essential git cmake python"
RUN apt-get update -y && apt-get install -y --no-install-recommends \
ca-certificates gettext libexpat1-dev libidn11-dev uuid-dev libsqlite3-dev libudns-dev \
libbotan-2-dev ${BUILD_DEPS}
ARG BIBOUMI_VERSION=9.0
RUN git clone --branch ${BIBOUMI_VERSION} --depth 1 https://lab.louiz.org/louiz/biboumi /biboumi && \
mkdir /biboumi/build && cd /biboumi/build && \
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DWITH_BOTAN=1 -DWITH_SQLITE3=1 \
-DWITH_LIBIDN=1 -DWITHOUT_SYSTEMD=1 && \
make && make install && rm -Rf /biboumi
RUN apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false ${BUILD_DEPS}
RUN addgroup --system --gid 10000 biboumi
RUN adduser --system --uid 10000 --ingroup biboumi --home /var/lib/biboumi biboumi
COPY container/config /etc/biboumi
COPY container/run-biboumi /run-biboumi
RUN chown -R biboumi:biboumi /etc/biboumi
USER biboumi
ENTRYPOINT ["/run-biboumi"]

View File

@ -0,0 +1,5 @@
# Options for Biboumi.
BIBOUMI_HOSTNAME=biboumi
BIBOUMI_PASSWORD=${PROSODY_BIBOUMI_PASSWORD}
BIBOUMI_XMPP_HOST=prosody
BIBOUMI_IDENTD_PORT=0

View File

@ -0,0 +1,16 @@
[Unit]
Description=Biboumi IRC gateway for XMPP
Wants=container-build@%N.service prosody.service
After=container-build@%N.service prosody.service
[Service]
Restart=always
ExecStartPre=/bin/install --owner 10000 --group 10000 -d /var/lib/container-service/%N
ExecStartPre=/bin/podman create --replace --pull never --net prosody --env-file /etc/container-service/%N/%N.env \
--volume /var/lib/container-service/%N:/var/lib/%N:z \
--name %N localhost/%N:latest
ExecStart=/bin/podman start --attach %N
ExecStop=/bin/podman stop --time 10 %N
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1,6 @@
hostname=${BIBOUMI_HOSTNAME}
password=${BIBOUMI_PASSWORD}
xmpp_server_ip=${BIBOUMI_XMPP_HOST}
db_name=/var/lib/biboumi/biboumi.sqlite
log_level=1
persistent_by_default=true

View File

@ -0,0 +1,9 @@
#!/bin/sh
# Prepare configuration files for environment variable substitution.
ENV_NAMES="`env | awk -F '=' '{printf "$%s ", $1}'`"
for file in /etc/biboumi/*.template; do
envsubst "${ENV_NAMES}" < "$file" > "`echo $file | awk -F '.template$' '{print $1}'`"
done
/usr/bin/biboumi /etc/biboumi/biboumi.cfg "$@"

View File

@ -0,0 +1,11 @@
variant: fcos
version: 1.3.0
storage:
files:
- path: /etc/systemd/system/biboumi.service
contents:
local: service/biboumi/biboumi.service
systemd:
units:
- name: biboumi.service
enabled: true

View File

@ -1,12 +1,12 @@
[Unit]
Description=Prosody XMPP server
Wants=container-build@%N.service mariadb.service postfix.service
After=container-build@%N.service mariadb.service postfix.service
Wants=container-build@%N.service container-network@%N.service mariadb.service postfix.service
After=container-build@%N.service container-network@%N.service mariadb.service postfix.service
[Service]
Restart=always
ExecStartPre=/bin/install --owner 101 --group 102 -d /var/lib/container-service/%N
ExecStartPre=/bin/podman create --replace --pull never --net mariadb --env-file /etc/container-service/%N/%N.env \
ExecStartPre=/bin/podman create --replace --pull never --net mariadb,%N --env-file /etc/container-service/%N/%N.env \
--publish 5222:5222 --publish 5269:5269 --publish 5347:5347 \
--volume /var/lib/container-service/%N:/var/lib/%N:z --volume /etc/container-service/%N/service/config:/etc/%N/conf.d:z \
--volume /var/lib/container-service/letsencrypt/private:/etc/ssl/private:z \

View File

@ -14,6 +14,7 @@ ignition:
- local: service/postfix/spec.ign
- local: service/rspamd/spec.ign
- local: service/prosody/spec.ign
- local: service/biboumi/spec.ign
- local: service/radicale/spec.ign
- local: private/spec.ign

View File

@ -14,6 +14,7 @@ ignition:
- local: service/postfix/spec.ign
- local: service/rspamd/spec.ign
- local: service/prosody/spec.ign
- local: service/biboumi/spec.ign
- local: service/radicale/spec.ign
passwd: