From 096fb6e2f8a7611904c70f3a592948eb67be807c Mon Sep 17 00:00:00 2001 From: Alex Palaistras Date: Tue, 23 Mar 2021 23:05:04 +0000 Subject: [PATCH] Integrate Reliable Discord-Client IRC Daemon This is intended to connect via Biboumi, which in turn is used by Prosody in connecting Discord with XMPP. --- config/service/discord-ircd/Containerfile | 20 ++++++++++++++++++ .../container/config/rdircd.conf.template | 10 +++++++++ .../service/discord-ircd/container/run-rdircd | 12 +++++++++++ .../discord-ircd/discord-ircd.env.template | 7 ++++++ .../service/discord-ircd/discord-ircd.service | 16 ++++++++++++++ config/service/discord-ircd/spec.fcc | 11 ++++++++++ host/lhr01nuc/lhr01nuc.env.gpg | Bin 1530 -> 1637 bytes 7 files changed, 76 insertions(+) create mode 100644 config/service/discord-ircd/Containerfile create mode 100644 config/service/discord-ircd/container/config/rdircd.conf.template create mode 100755 config/service/discord-ircd/container/run-rdircd create mode 100644 config/service/discord-ircd/discord-ircd.env.template create mode 100644 config/service/discord-ircd/discord-ircd.service create mode 100644 config/service/discord-ircd/spec.fcc diff --git a/config/service/discord-ircd/Containerfile b/config/service/discord-ircd/Containerfile new file mode 100644 index 0000000..c49a24f --- /dev/null +++ b/config/service/discord-ircd/Containerfile @@ -0,0 +1,20 @@ +FROM docker.io/debian:stable-slim + +RUN apt-get update -y && apt-get install -y --no-install-recommends \ + ca-certificates python3 python3-aiohttp gettext git + +RUN git clone --depth 1 https://github.com/mk-fg/reliable-discord-client-irc-daemon.git /rdircd && \ + cp /rdircd/rdircd /usr/bin && chmod 0755 /usr/bin/rdircd && \ + rm -Rf /rdircd + +RUN addgroup --system --gid 10000 rdircd +RUN adduser --system --uid 10000 --ingroup rdircd --home /var/lib/rdircd rdircd + +COPY container/config /etc/rdircd +COPY container/run-rdircd /run-rdircd +RUN chown -R rdircd:rdircd /etc/rdircd + +USER rdircd +EXPOSE 6667 + +ENTRYPOINT ["/run-rdircd"] diff --git a/config/service/discord-ircd/container/config/rdircd.conf.template b/config/service/discord-ircd/container/config/rdircd.conf.template new file mode 100644 index 0000000..0ad8ba7 --- /dev/null +++ b/config/service/discord-ircd/container/config/rdircd.conf.template @@ -0,0 +1,10 @@ +[auth-main] +email = ${DISCORD_IRCD_AUTH_EMAIL} +password = ${DISCORD_IRCD_AUTH_PASSWORD} +token = ${DISCORD_IRCD_AUTH_TOKEN} +token-manual = no + +[irc] +host = 0.0.0.0 +password = ${DISCORD_IRCD_PASSWORD} +chan-auto-join-re = ^me\. diff --git a/config/service/discord-ircd/container/run-rdircd b/config/service/discord-ircd/container/run-rdircd new file mode 100755 index 0000000..cb66cda --- /dev/null +++ b/config/service/discord-ircd/container/run-rdircd @@ -0,0 +1,12 @@ +#!/bin/sh + +# Prepare configuration files for environment variable substitution. +ENV_NAMES="`env | awk -F '=' '{printf "$%s ", $1}'`" +for file in /etc/rdircd/*.template; do + envsubst "${ENV_NAMES}" < "$file" > "`echo $file | awk -F '.template$' '{print $1}'`" +done + +# Ensure state file exists before starting service. +touch /var/lib/rdircd/state.conf + +/usr/bin/rdircd --conf /etc/rdircd/rdircd.conf --conf /var/lib/rdircd/state.conf "$@" diff --git a/config/service/discord-ircd/discord-ircd.env.template b/config/service/discord-ircd/discord-ircd.env.template new file mode 100644 index 0000000..169e969 --- /dev/null +++ b/config/service/discord-ircd/discord-ircd.env.template @@ -0,0 +1,7 @@ +# Authentication configuration. +DISCORD_IRCD_AUTH_EMAIL=${DISCORD_IRCD_AUTH_EMAIL} +DISCORD_IRCD_AUTH_PASSWORD=${DISCORD_IRCD_AUTH_PASSWORD} +DISCORD_IRCD_AUTH_TOKEN= + +# Daemon configuration. +DISCORD_IRCD_PASSWORD=${DISCORD_IRCD_PASSWORD} diff --git a/config/service/discord-ircd/discord-ircd.service b/config/service/discord-ircd/discord-ircd.service new file mode 100644 index 0000000..3ba7dea --- /dev/null +++ b/config/service/discord-ircd/discord-ircd.service @@ -0,0 +1,16 @@ +[Unit] +Description=Reliable Discord-Client IRC Daemon +Wants=container-build@%N.service container-network@prosody.service +After=container-build@%N.service container-network@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/rdircd:z \ + --name %N localhost/%N:latest +ExecStart=/bin/podman start --attach %N +ExecStop=/bin/podman stop --time 10 %N + +[Install] +WantedBy=multi-user.target diff --git a/config/service/discord-ircd/spec.fcc b/config/service/discord-ircd/spec.fcc new file mode 100644 index 0000000..4d8c3b3 --- /dev/null +++ b/config/service/discord-ircd/spec.fcc @@ -0,0 +1,11 @@ +variant: fcos +version: 1.3.0 +storage: + files: + - path: /etc/systemd/system/discord-ircd.service + contents: + local: service/discord-ircd/discord-ircd.service +systemd: + units: + - name: discord-ircd.service + enabled: true diff --git a/host/lhr01nuc/lhr01nuc.env.gpg b/host/lhr01nuc/lhr01nuc.env.gpg index 89177679a25dd0b007d2905517059ae740b9e81e..94e4c9b43cd0f55f4c4b294b09e28e4c2f8f23b7 100644 GIT binary patch literal 1637 zcmV-r2AcVW0t^E@y8KTiHb4#m5CEOh973&1Z}VTGCu#d$BRsJ>Y(J_>1$Y@7`Z zBSasZG=58IYP5<~_!X-#H}fx){qf@mb0W4tr|n=SF_!xEI0DZRRQ7CETpr8V&$L%% zXE)h1@ds#N6q|?>ZF7wbH+)wH`LrN{`pXeaIdpL!4jqs6l%5dny01-l1R_M(L`x_f~MZa$pbCplm^NTNoh9yE`R8WOw9;pF*&#b(9&^I-B-dOv1TMQMb3J=4h z=+wmE6V)R&*sZh+R(AMj$uvNk;o6>L2*SS&l?}j17atD~cgwSjp%?NHA@BrN>2O=e znLX0)Uq1T77feYOo1O*XAC$>?5&feVej}QHu16d5v~t|Cs(MdCZkCufTsG=H@8C~! z+NrKLkGzM;(Yj&+1)aC40;SC{CWpKm3D31C-QSy#M#q}koh}GRBQl7JVK0Q9#k`B& z?UvogJmnk8P|)=(MdZPsM34+*w?{1U&C1A2VxaE=#gv>hO{P;9wH^KHXEbfmoXh0S zyjU`xkGN@)#Mu2PQw!4S0iETO^M}XLd}pCh(%iP@IpW5QZjoaFKv9$x!>fmD@%-oM z;ml4eEOQSAxS%W{sF&odC-Da*^3G&$D=GLAFkZF7WeHss@x@sj+tOD+Fo9KiAtJ7> z+1&WvFj||TbkcJzrFXKEmQbs_&J1YG^_f~hV3i>}8VluuHvSBXSVxKk6L6++qg7CM z==Xj~x&(`>;;#4&c;5xQQp*|aSPfxAdCJkR{|6H!Kh!STiM-V4s()eJ%I|e$12S6H z$5ejV;Lu?#d#iA2;Jii+ZWlPll24F)@v>2V2-jJ@z_*N2@=ML=0;@*UJF~{5Thiti z7cwub*TPbFot~Af;=o>b2I=L$NR+c%KwcqKKwl8TToT<9PN_8Vgo&{Rv>i8#VTU0f zTnOShd%SvRN++$%?o0`Hezia+8z`lDDZ)lEL>b42VE%ART?S3r_{}DCg2gU@<;RYy z;xOE4k*sIjQ+33#OL4^K6#^CV-b8oM@|1U!`MU*|a^gQ1P*Cp^Gt# zfbP4jEVTqcTA@bI+Ls8>cJCxY91Cja4o5V!9eVrw?Le^(&d-CyihlaBWA@ERH$;gm zX<;GRS@TBWmJ5yNVAc9y6tV|#H$@4t4Q0Hhr`Oa$l3>JHve4iF*r8MiD?CuaQ$lgz z?rCTP2XqvH<|D{0;VF04HBe5WjbtWSerT4PUcUqGkn6w8l>C46{VGiCL8H9~&S1OG zA!+?G!}tP#jNMbQa5^wfklzW1LqF6)gEgaqM}(ievLDhdf(mYKV-x z%G-}~<05^-9!eXeFHyzd121g?yfMvFTKuRB&f~9@Qyif+e zwLA~Ekz(C?LRTgn1Q@}V;=8}kGG!B9@R%20zT9TBZDM_m+2_zyiW8GugH3-0sxxPM z;4|Z=D(hZ9oIzLdWx_Y?9-1nL=M*fxkoHjPbWi}et_E3|uQ(E~=O$_2CjpQLU-V2I zE-IK>2_#3)+j;BymC_MM3WnuHxJ(FuxkV}6v zQ{6hj7E<-lv3P|&Tvu&q#n*f?{mI$1g7vy$bTzeX`mZz;e=b2oL-$amRAzw93qyLF jGLnB`)Yeg#-aNwEr|Gy8i(ysEe68P55N#gFLXP_lTb&{d literal 1530 zcmVw$w0Or`Fy|z(}f`Nv-MZa zI{IPYRP0Wr2`|4g!No^i`)H`rb2MNNtXbLd8w`{QmP3q*9=aVV!%br$iap71jp$p2 z$0AdCc_5T`DKJZzAlKr)5g-w7qk38$na6s+$R;hF+-#H#P0 z)`}vgR$Wncs43xgrzRq=$_xMfFu{tmAP{ZfeOGk%%p%j0L~U2 zY}qz|xO$yk&?Gzs*LEC!9q$xh1Q}bs@f{a-e@$R zZ8GenCJi@&8%Y|bP7>1T0hS;bJIi733}5QY3$0%Z}HODB*Du9#{_8GZIho4i7~zd>aZ#P%p;V%-nTfJ>Nrb5+SU# z2JsiK`u93G+@CzSvXdv1qJ8ne@Vm z@MmDix&~r}R@4Y>)2)aPVkoC_6LaYuIX|mfWdq7sUru6IBB)!#SBIqws?W7E(5G** z)gx!cS^uX~FLBr39HW%c{7xKO{(bphj&?U+m9btkmt~KJe)Xb% z4rD|cwLLry!6(hdtZz7wWxILF{`~b#97c`c#6k_wp#HNx3}N4(MiE;S8`nKHR^_yO zZw}lo(Jh?F#F~zX?)R~RB4!1=SG;#UO3CI zAV2hT@Xi_w@(f*_v;LL9JkHRf(TD9)5Nm6_hf_vzLGeLw=Mn^-mSR~19}SrL zHYHV*PVZyu3ItzYZ?JK{0vcJ-gCe4znTygj^g&hjx){ebA3IY~GSq(#j|La5-w)@Q z;nLZ7VVrVP)~X|E;Z?Vg9rWwRlk8CSD4pjn?j%vYNgN98LR=_w(1n18`+eMGNKv-&Y;j^lr0