From 698d201c00f1a1f8b1fe1ebcfd61d8f7c15a2907 Mon Sep 17 00:00:00 2001
From: pierreozoux <pierre@ozoux.net>
Date: Mon, 16 Aug 2021 17:30:09 +0200
Subject: [PATCH] Add createLiiibre bash script

---
 createLiiibre | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 99 insertions(+)
 create mode 100755 createLiiibre

diff --git a/createLiiibre b/createLiiibre
new file mode 100755
index 0000000..85ae4d5
--- /dev/null
+++ b/createLiiibre
@@ -0,0 +1,99 @@
+#!/bin/bash -eu
+
+function usage() {
+  echo "Usage:"
+  echo "createLiiibre mydomain.org"
+}
+
+if [ $# -ne 1 ] # we expect 1 arg
+  then
+    echo "Please pass only 1 argument."
+    usage
+    exit 1
+fi
+export DOMAIN=${1}
+export NUAGE_SUBDOMAIN=${NUAGE_SUBDOMAIN:-nuage}
+export CHAT_SUBDOMAIN=${CHAT_SUBDOMAIN:-chat}
+export NS=`echo ${1} | sed 's/\./-/g'`
+
+# Create NS
+mkdir -p ${NS}
+mkdir -p ${NS}/${NUAGE_SUBDOMAIN}
+mkdir -p ${NS}/${CHAT_SUBDOMAIN}
+echo export APP=rocketchat > ${NS}/${CHAT_SUBDOMAIN}/.env
+echo export APP=nextcloud > ${NS}/${NUAGE_SUBDOMAIN}/.env
+cp ./common/rocketchat/config.yaml ${NS}/${CHAT_SUBDOMAIN}/
+
+kubectl create ns ${NS} || true
+kubens ${NS}
+kubectl -n ${NS} apply -f ./common/networkpolicies.yml
+cd ${NS}/${NUAGE_SUBDOMAIN}
+libre apply ../../common/nextcloud/other-manifests/saml-cert.yaml
+cd ../..
+
+# Create NoReply email
+echo "Creating NoReply Email..."
+
+tld=`echo ${1} | sed 's/\./-/g'`
+
+noreply_email_password=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 18 | head -n 1)
+noreply_email="${tld}@liiib.re"
+forum_email_password=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 18 | head -n 1)
+forum_email="forum-${tld}@liiib.re"
+chat_email_password=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 18 | head -n 1)
+chat_email="${CHAT_SUBDOMAIN}-${tld}@liiib.re"
+
+source /etc/env
+
+mail_username=contact@indie.host
+mail_hostname=mail.indie.host
+
+noreply_local_part=`echo $noreply_email | cut -d@ -f1`
+forum_local_part=`echo $forum_email | cut -d@ -f1`
+chat_local_part=`echo $chat_email | cut -d@ -f1`
+email_domain=`echo $noreply_email | cut -d@ -f2`
+
+curl --data "username=${mail_username}&password=${mail_password}&login=Log+In&rememberme=0" -c /tmp/cookie.txt https://${mail_hostname}/auth/login
+domain_id=`curl -b /tmp/cookie.txt https://${mail_hostname}/domain | grep $email_domain | grep purge-domain | grep -o 'purge-domain-[0-9]*' | grep -o '[0-9]*'`
+
+curl --data "local_part=${noreply_local_part}&domain=${domain_id}&password=${noreply_email_password}" -b /tmp/cookie.txt https://${mail_hostname}/mailbox/add
+curl --data "local_part=${forum_local_part}&domain=${domain_id}&password=${forum_email_password}" -b /tmp/cookie.txt https://${mail_hostname}/mailbox/add
+curl --data "local_part=${chat_local_part}&domain=${domain_id}&password=${chat_email_password}" -b /tmp/cookie.txt https://${mail_hostname}/mailbox/add
+
+rm /tmp/cookie.txt
+
+kubectl -n ${tld} create secret generic ${tld}-smtp --from-literal=host=mail.indie.host --from-literal=port=587 --from-literal=from_email=${noreply_email} --from-literal=username=${noreply_email} --from-literal=password=${noreply_email_password} --from-literal=mail_from_address=${noreply_local_part}
+kubectl -n ${tld} create secret generic forum-${tld}-smtp --from-literal=host=mail.indie.host --from-literal=port=587 --from-literal=from_email=${forum_email} --from-literal=username=${forum_email} --from-literal=password=${forum_email_password} --from-literal=mail_from_address=${forum_local_part}
+kubectl -n ${tld} create secret generic ${CHAT_SUBDOMAIN}-${tld}-smtp --from-literal=host=mail.indie.host --from-literal=port=587 --from-literal=from_email=${chat_email} --from-literal=username=${chat_email} --from-literal=password=${chat_email_password} --from-literal=mail_from_address=${chat_local_part}
+
+# Create Buckets
+echo "Execute on sm1 export CHAT_SUBDOMAIN=${CHAT_SUBDOMAIN};export NUAGE_SUBDOMAIN=${NUAGE_SUBDOMAIN}; ~/pierre/scripts/createLiiibreBuckets ${1}"
+
+# Create secrets
+mkdir /tmp/${NS}
+
+# Create Nextcloud secret
+mkdir /tmp/${NS}/nextcloud
+source /root/domains/common/nextcloud/source
+envsubst < /root/domains/common/nextcloud/env.template > /tmp/${NS}/nextcloud/env
+envsubst < /root/domains/common/nextcloud/kustomization.yaml.template > /tmp/${NS}/nextcloud/kustomization.yaml
+kustomize build /tmp/${NS}/nextcloud | kubectl -n ${NS} apply -f -
+
+# Create OnlyOffice
+echo "Execute on k: libre provision -u oo-${NS}.k.liiib.re -a lab.libreho.st/libre.sh/compose/onlyoffice -s"
+echo and then here:
+echo kubectl -n ${NS} create secret generic ${NUAGE_SUBDOMAIN}-${NS}-oo --from-literal=ONLYOFFICE_SERVER=https://oo-${NS}.k.liiib.re --from-literal=ONLYOFFICE_JWT_SECRET= 
+
+# Create RocketChat secret
+mkdir /tmp/${NS}/rocketchat
+source /root/domains/common/rocketchat/source
+envsubst < /root/domains/common/rocketchat/env.template > /tmp/${NS}/rocketchat/env
+envsubst < /root/domains/common/rocketchat/kustomization.yaml.template > /tmp/${NS}/rocketchat/kustomization.yaml
+kustomize build /tmp/${NS}/rocketchat | kubectl -n ${NS} apply -f -
+
+# Clean
+rm -rf /tmp/${NS}
+
+klibre create realm --config config.yaml --domain ${DOMAIN}
+klibre create clients rocketchat --config config.yaml --domain ${DOMAIN}
+klibre create clients nextcloud --config config.yaml --domain ${DOMAIN}
-- 
GitLab