From 851d746732012ab92be5b123597af029ef1aca75 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 11 Jul 2023 20:26:19 +0000 Subject: [PATCH] Fixed matrix to create from scratch in convertdomain --- bin/convertdomain | 84 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 74 insertions(+), 10 deletions(-) diff --git a/bin/convertdomain b/bin/convertdomain index 2f5e57a..1d24cd7 100755 --- a/bin/convertdomain +++ b/bin/convertdomain @@ -489,24 +489,88 @@ convert_matrix() { #### Convert Matrix echo -ne "\n* Converting matrix.." + # Delete matrix database so we can start from scratch + MATRIX_SECRET=$(create_password); + docker exec -it postgresql psql -U postgres -c "drop database matrix" &> /dev/null + docker exec -it postgresql psql -U postgres -c "drop user matrix" &> /dev/null + docker exec -it postgresql psql -U postgres -c "CREATE USER matrix WITH PASSWORD '$MATRIX_SECRET'" + docker exec -it postgresql psql -U postgres -c "CREATE DATABASE matrix" + docker exec -it postgresql psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE matrix TO matrix" + sed -i "s#$DOMAIN#$DOMAIN_NEW#g" /federated/apps/matrix/docker-compose.yml sed -i "s#$DOMAIN#$DOMAIN_NEW#g" /federated/apps/matrix/.env + + rm -rf /federated/apps/matrix/data + mkdir -p /federated/apps/matrix/data/matrix + cp /federated/certs/certs/$DOMAIN_NEW.crt /federated/certs/private/$DOMAIN_NEW.key /federated/apps/matrix/data/matrix/ + chmod 644 /federated/apps/matrix/data/matrix/$DOMAIN_NEW.crt /federated/apps/matrix/data/matrix/$DOMAIN_NEW.key + + # Generate the matrix homeserver.yaml file + docker run --rm -v "/federated/apps/matrix/data/matrix:/data" -e SYNAPSE_SERVER_NAME=matrix.$DOMAIN_NEW -e SYNAPSE_REPORT_STATS=yes matrixdotorg/synapse:latest generate &> /dev/null + [ $? -ne 0 ] && fail "Couldn't run docker matrixdotorg/synapse:latest generate" + + # Take out default Sqlite database config + sed -i 's!database: /data/homeserver.db!!g' /federated/apps/matrix/data/matrix/homeserver.yaml + sed -i 's!database:!!g' /federated/apps/matrix/data/matrix/homeserver.yaml + sed -i 's!name: sqlite3!!g' /federated/apps/matrix/data/matrix/homeserver.yaml + sed -i 's!args:!!g' /federated/apps/matrix/data/matrix/homeserver.yaml + + # Insert our Postgres and LDAP config + cat >> /federated/apps/matrix/data/matrix/homeserver.yaml <" + app_name: $ORG_NEW Matrix Server + +modules: + - module: "ldap_auth_provider.LdapAuthProviderModule" + config: + enabled: true + uri: "ldaps://ldap.$DOMAIN_NEW:636" + start_tls: true + base: "dc=federatedcomputer,dc=cloud" + attributes: + mail: "mail" + uid: "uid" + name: "givenName" + bind_dn: cn=admin,dc=federatedcomputer,dc=cloud + bind_password: $LDAP_SECRET + tls_options: + validate: true + local_certificate_file: /data/$DOMAIN_NEW.crt + local_private_key_file: /data/$DOMAIN_NEW.key +EOF + if [ "${#DOMAIN_ARRAY[@]}" -eq "3" ]; then sed -i "s#dc=federatedcomputer,dc=cloud#dc=$DOMAIN_FIRST,dc=$DOMAIN_MIDDLE,dc=$DOMAIN_LAST#g" /federated/apps/matrix/data/matrix/homeserver.yaml else sed -i "s#dc=federatedcomputer,dc=cloud#dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST#g" /federated/apps/matrix/data/matrix/homeserver.yaml fi - sed -i "s#server_name: \"matrix.$DOMAIN\"#server_name: \"matrix.$DOMAIN_NEW\"#g" /federated/apps/matrix/data/matrix/homeserver.yaml - sed -i "s#smtp_host: \"mail.$DOMAIN\"#smtp_host: \"mail.$DOMAIN_NEW\"#g" /federated/apps/matrix/data/matrix/homeserver.yaml - sed -i "s#notif_from:.*#notif_from: \"Your Friendly %(app)s homeserver \"#g" /federated/apps/matrix/data/matrix/homeserver.yaml - sed -i "s#app_name:.*#app_name: $ORG_NEW Matrix Server#g" /federated/apps/matrix/data/matrix/homeserver.yaml - sed -i "s#postgresql.$DOMAIN#postgresql.$DOMAIN_NEW#g" /federated/apps/matrix/data/matrix/homeserver.yaml - sed -i "s#ldap.$DOMAIN#ldap.$DOMAIN_NEW#g" /federated/apps/matrix/data/matrix/homeserver.yaml - sed -i "s#$DOMAIN.crt#$DOMAIN_NEW.crt#g" /federated/apps/matrix/data/matrix/homeserver.yaml - sed -i "s#$DOMAIN.key#$DOMAIN_NEW.key#g" /federated/apps/matrix/data/matrix/homeserver.yaml - cp /federated/certs/certs/$DOMAIN_NEW.crt /federated/certs/private/$DOMAIN_NEW.key /federated/apps/matrix/data/matrix/ - chmod 644 /federated/apps/matrix/data/matrix/$DOMAIN_NEW.crt /federated/apps/matrix/data/matrix/$DOMAIN_NEW.key +# sed -i "s#server_name: \"matrix.$DOMAIN\"#server_name: \"matrix.$DOMAIN_NEW\"#g" /federated/apps/matrix/data/matrix/homeserver.yaml +# sed -i "s#smtp_host: \"mail.$DOMAIN\"#smtp_host: \"mail.$DOMAIN_NEW\"#g" /federated/apps/matrix/data/matrix/homeserver.yaml +# sed -i "s#notif_from:.*#notif_from: \"Your Friendly %(app)s homeserver \"#g" /federated/apps/matrix/data/matrix/homeserver.yaml +# sed -i "s#app_name:.*#app_name: $ORG_NEW Matrix Server#g" /federated/apps/matrix/data/matrix/homeserver.yaml +# sed -i "s#postgresql.$DOMAIN#postgresql.$DOMAIN_NEW#g" /federated/apps/matrix/data/matrix/homeserver.yaml +# sed -i "s#ldap.$DOMAIN#ldap.$DOMAIN_NEW#g" /federated/apps/matrix/data/matrix/homeserver.yaml +# sed -i "s#$DOMAIN.crt#$DOMAIN_NEW.crt#g" /federated/apps/matrix/data/matrix/homeserver.yaml +# sed -i "s#$DOMAIN.key#$DOMAIN_NEW.key#g" /federated/apps/matrix/data/matrix/homeserver.yaml # Grab the container IP from docker-compose SERVICE_IP=`grep ipv4_address /federated/apps/matrix/docker-compose.yml | awk '{ print $2 }'`