From 981d97f2d3c30c9ed14f88f895ed18a685656a74 Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob@robotics.uk.to>
Date: Wed, 2 Jan 2019 19:51:08 +0000
Subject: [PATCH] Handle onion domains when removing matrix users

---
 src/freedombone-app-matrix | 45 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 44 insertions(+), 1 deletion(-)

diff --git a/src/freedombone-app-matrix b/src/freedombone-app-matrix
index 2ec9189d1..6116e709e 100755
--- a/src/freedombone-app-matrix
+++ b/src/freedombone-app-matrix
@@ -410,6 +410,11 @@ function create_matrix_user_removal_script {
         homebase="http://$(cat /var/lib/tor/hidden_service_matrix/hostname)"
     fi
 
+    matrix_domain=$MATRIX_DOMAIN_NAME
+    if [[ "$ONION_ONLY" != 'no' ]]; then
+        matrix_domain=$(cat /var/lib/tor/hidden_service_matrix/hostname)
+    fi
+
     matrix_remove_user=/usr/bin/matrix-remove-user
     { echo '#!/bin/bash';
       echo "cd $MATRIX_DATA_DIR || exit 1";
@@ -422,11 +427,45 @@ function create_matrix_user_removal_script {
       echo "BUFFER=\$(sqlite3 homeserver.db \"\$BUSY;select token from access_tokens where user_id like '\$ADMIN' order by id desc limit 1;\")";
       echo "TOKEN=\$(echo \$BUFFER|awk '{print \$2}')";
       echo 'set -x';
-      echo "${curl_command} -X POST \"${homebase}/_matrix/client/r0/admin/deactivate/%40\$remove_username%3A$MATRIX_DOMAIN_NAME?access_token=\$TOKEN\" --data '{\"erase\": true}'"; } > $matrix_remove_user
+      echo "${curl_command} -X POST \"${homebase}/_matrix/client/r0/admin/deactivate/%40\$remove_username%3A$matrix_domain?access_token=\$TOKEN\" --data '{\"erase\": true}'"; } > $matrix_remove_user
 
     chmod +x $matrix_remove_user
 }
 
+function create_matrix_whois_script {
+    read_config_param ONION_ONLY
+    read_config_param MY_USERNAME
+    read_config_param MATRIX_DOMAIN_NAME
+
+    curl_command='curl'
+    homebase="https://$MATRIX_DOMAIN_NAME"
+    if [[ "$ONION_ONLY" != 'no' ]]; then
+        curl_command='torsocks curl'
+        homebase="http://$(cat /var/lib/tor/hidden_service_matrix/hostname)"
+    fi
+
+    matrix_domain=$MATRIX_DOMAIN_NAME
+    if [[ "$ONION_ONLY" != 'no' ]]; then
+        matrix_domain=$(cat /var/lib/tor/hidden_service_matrix/hostname)
+    fi
+
+    matrix_whois_filename=/usr/bin/matrix-whois
+    { echo '#!/bin/bash';
+      echo "cd $MATRIX_DATA_DIR || exit 1";
+      echo "username=\$1";
+      echo "if [ ! \"\$username\" ]; then";
+      echo '    exit 1';
+      echo 'fi';
+      echo "ADMIN=\"@${MY_USERNAME}:$MATRIX_DOMAIN_NAME\"";
+      echo 'BUSY="pragma busy_timeout=20000"';
+      echo "BUFFER=\$(sqlite3 homeserver.db \"\$BUSY;select token from access_tokens where user_id like '\$ADMIN' order by id desc limit 1;\")";
+      echo "TOKEN=\$(echo \$BUFFER|awk '{print \$2}')";
+      echo 'set -x';
+      echo "${curl_command} -X POST \"${homebase}/_matrix/client/r0/admin/whois/%40\$username%3A$matrix_domain?access_token=\$TOKEN\" --data '{}'"; } > $matrix_whois_filename
+
+    chmod +x $matrix_whois_filename
+}
+
 function remove_user_matrix {
     remove_username="$1"
 
@@ -1159,5 +1198,9 @@ function install_matrix {
 
     increment_app_install_progress
 
+    create_matrix_whois_script
+
+    increment_app_install_progress
+
     APP_INSTALLED=1
 }
-- 
GitLab