From 534ba7f559f64315afd528e2a6683399d48ff237 Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob@robotics.uk.to>
Date: Wed, 2 Jan 2019 19:21:53 +0000
Subject: [PATCH] Changing matrix password

---
 src/freedombone-app-matrix | 43 ++++++++++++++++++++++++++++++++++++--
 1 file changed, 41 insertions(+), 2 deletions(-)

diff --git a/src/freedombone-app-matrix b/src/freedombone-app-matrix
index b4953cea8..e1c3a7b0e 100755
--- a/src/freedombone-app-matrix
+++ b/src/freedombone-app-matrix
@@ -480,11 +480,50 @@ function install_interactive_matrix {
     APP_INSTALLED=1
 }
 
+
+function create_matrix_user_password_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_passwd_filename=/usr/bin/matrix-passwd
+    { echo '#!/bin/bash';
+      echo "cd $MATRIX_DATA_DIR || exit 1";
+      echo "username=\$1";
+      echo "if [ ! \"\$username\" ]; then";
+      echo '    echo "No username given"';
+      echo '    exit 1';
+      echo 'fi';
+      echo "new_password=\$2";
+      echo "if [ ! \"\$new_password\" ]; then";
+      echo '    echo "No password given"';
+      echo '    exit 2';
+      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/reset_password/%40\$username%3A$MATRIX_DOMAIN_NAME?access_token=\$TOKEN\" --data '{\"new_password\":\"\$new_password\"}'"; } > $matrix_passwd_filename
+
+    chmod +x $matrix_passwd_filename
+}
+
 function change_password_matrix {
-    #curr_username="$1"
+    curr_username="$1"
     new_user_password="$2"
 
-    #${PROJECT_NAME}-pass -u "$curr_username" -a matrix -p "$new_user_password"
+    create_matrix_user_password_script
+    /usr/bin/matrix-passwd "$curr_username" "$new_user_password"
+
+    "${PROJECT_NAME}-pass" -u "$curr_username" -a matrix -p "$new_user_password"
 }
 
 function reconfigure_matrix {
-- 
GitLab