Bashscript: Matrix Synapse - Passwordedit, Passwordreset / Add, Remove, Deactivate & List Users

Here a simple bashscript for Passwordedit, Passwordreset / adding, reming and listing users for Matrix synapse , written in bashscript. As database I use simple sqlite3
___ _ _ _ __ __ _ _ __ ___ ___ _ __ __ _ ___ _____ ____| |
/ __| | | | '_ \ / _' | '_ \/ __|/ _ \ | '_ \ / _' / __/ __\ \ /\ / / _' |
\__ \ |_| | | | | (_| | |_) \__ \ __/ | |_) | (_| \__ \__ \ V V / (_| |
|___/\__, |_| |_|\__,_| .__/|___/\___|____| .__/ \__,_|___/___/ \_/\_/ \__,_|
|___/ |_| |_____|_|
Create Users, Reset/mod password for matrix_synapse users - (C) 2022 suuhm:
Usage: /usr/bin/matrix-pwd.sh --passwd-reset | --create-user | --list-users | --deactivate
#!/bin/bash
# name TEXT, password_hash TEXT, creation_ts BIGINT, admin SMALLINT DEFAULT 0 NOT NULL,
# upgrade_ts BIGINT, is_guest
# SMALLINT DEFAULT 0 NOT NULL, appservice_id TEXT,
# consent_version TEXT, consent_server_notice_sent TEXT, user_type TEXT
# DEFAULT NULL, deactivated SMALLINT DEFAULT 0 NOT NULL, shadow_banned BOOLEAN, UNIQUE(name)
SQDB="/var/lib/matrix-synapse/homeserver.db"
SRV_DOM="matrix.coldwareveryday.com"
#USER=$1
echo -e ""
echo -e " ___ _ _ _ __ __ _ _ __ ___ ___ _ __ __ _ ___ _____ ____| | "
echo -e " / __| | | | '_ \ / _' | '_ \/ __|/ _ \ | '_ \ / _' / __/ __\ \ /\ / / _' | "
echo -e " \__ \ |_| | | | | (_| | |_) \__ \ __/ | |_) | (_| \__ \__ \ V V / (_| | "
echo -e " |___/\__, |_| |_|\__,_| .__/|___/\___|____| .__/ \__,_|___/___/ \_/\_/ \__,_| "
echo -e " |___/ |_| |_____|_| "
echo -e ""
echo -e "\nCreate Users, Reset/mod password for matrix_synapse users - (C) 2022 suuhm:\n"
_reset_password() {
read -p "Which user? " USER
echo "Set Hash:"
#HPW=$(hash_password)
HPW='$2b$12$TtTZ04QQ5SO8ZjruOswu9.o04fGsDxH1I5vJeH5riJZtuFSk39rd.'
echo "Setup ($SRV_DOM) new sqlite pw..."
sqlite3 $SQDB "UPDATE users SET password_hash='$HPW' WHERE name LIKE '@$USER%';"
sleep 3
echo "Done!"
echo
echo "-----------------------------------------------"
echo "Show users:"
echo
sqlite3 $SQDB 'SELECT * FROM users;'
}
_create_user() {
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008
}
_get_adm_token() {
read -p "Get admin: " ADM
read -p "Password: " PASS
#Use SSL Local request only with -k Flag in curl
#ADM_TOKEN=$(curl -XPOST -d '{"type":"m.login.password", "user":"$ADM", "password":"$PASS"}' "https://$SRV_DOM/_matrix/client/r0/login")
ACFULL=$(curl -s -XPOST -d '{"type":"m.login.password", "user":"'"$ADM"'", "password":"'"$PASS"'"}' "http://127.0.0.1:8008/_matrix/client/r0/login")
ADM_TOKEN=$(echo $ACFULL | cut -d "\"" -f8)
}
_deactivate_user() {
_get_adm_token
read -p "Which user? " USER
echo
echo "Using token: $ADM_TOKEN on Server: $SRV_DOM"
curl -s -XPOST -H "Authorization: Bearer "'"$ADM_TOKEN"'"" -H "Content-Type: application/json" -d '{"erase":true}' "http://127.0.0.1:8008//_matrix/client/r0/admin/deactivate/@$USER:$SRV_DOM"
}
if [ "$1" == "--passwd-reset" ]; then
_reset_password
elif [ "$1" == "--create-user" ]; then
_create_user
elif [ "$1" == "--list-users" ]; then
sqlite3 $SQDB 'SELECT * FROM users;'
elif [ "$1" == "--deactivate" ]; then
_deactivate_user
else
echo "Usage: $0 --passwd-reset | --create-user | --list-users | --deactivate"
fi
exit 0