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