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

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