From ec93e655f388382c27183a857b73a9794e6aec07 Mon Sep 17 00:00:00 2001 From: Martin Winkler Date: Tue, 13 Oct 2020 23:54:59 +0200 Subject: [PATCH] Step to reset a users password --- seqs/matrix.sh | 50 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/seqs/matrix.sh b/seqs/matrix.sh index e2c7e7a..efefd5a 100755 --- a/seqs/matrix.sh +++ b/seqs/matrix.sh @@ -4,6 +4,7 @@ toolName=synapse toolDeps="build-essential python3-dev libffi-dev python3-pip python3-setuptools postgresql libssl-dev virtualenv libjpeg-dev libxslt1-dev libpq5 libpq-dev" toolUser="synapse" toolGroup="synapse" +synapseHashTool="env/bin/hash_password" # Filled by configuration toolConfig= @@ -166,23 +167,54 @@ step_14() { } step_16_info() { echo "Create new user"; } -step_16_alias() { ALIAS="newuser"; } +step_16_alias() { ALIAS="adduser"; } step_16() { exe /opt/synapse/env/bin/register_new_matrix_user -c "$MATRIX_HOME/homeserver.yaml" $toolUrl } -step_18_info() { echo "Drop postgres database for $toolName"; } -step_18_alias() { ALIAS="dropdb"; } +step_18_info() { + shift + echo -n "Reset user password" + if [ -z $1 ]; then + echo " [USER NAME]" + else + echo " for $1" + fi +} +step_18_alias() { ALIAS="resetpw"; } step_18() { + shift + local user= + + if [ ! -z $1 ]; then + user="$1" + else + exe read -p "User name: " user + fi + + if [ -z $user ]; then + echoerr "No user name provided" + return 1 + fi + local pw="$("${MATRIX_HOME}/${synapseHashTool}")" + + # Escaping twice because password contains $ which would be treated as variables + local string="\"UPDATE users SET password_hash=\''${pw}'\' WHERE name=\''@${user}:${MATRIX_DOMAIN}'\'\"" + exep "echo \"$string\" | su postgres -c 'psql -d synapse -f -'" +} + +step_30_info() { echo "Drop postgres database for $toolName"; } +step_30_alias() { ALIAS="dropdb"; } +step_30() { readDatabaseInfos exe cd ~postgres exe su -c "psql -c \"DROP DATABASE ${postgresDb};\"" - postgres } -step_20_info() { echo "Backup postgres database"; } -step_20_alias() { ALIAS="backupdb"; } -step_20() { +step_32_info() { echo "Backup postgres database"; } +step_32_alias() { ALIAS="backupdb"; } +step_32() { local DELYEAR=$(($(date +%Y)-2)) if [ ! -s ~/.pgpass ] ; then echo " [I] For unattended backup please define ~/.pgpass containing credentials" @@ -195,9 +227,9 @@ step_20() { toolDbBackupFolder=/root/backupdb -step_22_info() { echo "Postgres database restore"; } -step_22_alias() { ALIAS="restoredb"; } -step_22() { +step_34_info() { echo "Postgres database restore"; } +step_34_alias() { ALIAS="restoredb"; } +step_34() { echo " [I] Postgres database restore procedure" echo "1. Create a empty postgres database first (step 4)" echo "2. psql -h -U -d -W -f "