#!/bin/bash # Script to manage Matrix registration tokens # Usage: ./manage-tokens.sh [token] HOMESERVER="https://matrix.fig.systems" USERNAME="${1}" PASSWORD="${2}" COMMAND="${3}" TOKEN="${4}" show_usage() { echo "Usage: $0 [token]" echo "" echo "Commands:" echo " list - List all registration tokens" echo " info - Get info about a specific token" echo " delete - Delete a token" echo " update - Update a token (will prompt for details)" echo "" echo "Examples:" echo " $0 admin mypassword list" echo " $0 admin mypassword info abc123def456" echo " $0 admin mypassword delete abc123def456" exit 1 } if [ -z "$USERNAME" ] || [ -z "$PASSWORD" ] || [ -z "$COMMAND" ]; then show_usage fi echo "🔐 Logging in as $USERNAME..." # Get access token LOGIN_RESPONSE=$(curl -s -X POST "${HOMESERVER}/_matrix/client/v3/login" \ -H 'Content-Type: application/json' \ -d "{ \"type\": \"m.login.password\", \"identifier\": { \"type\": \"m.id.user\", \"user\": \"${USERNAME}\" }, \"password\": \"${PASSWORD}\" }") ACCESS_TOKEN=$(echo "$LOGIN_RESPONSE" | grep -o '"access_token":"[^"]*' | cut -d'"' -f4) if [ -z "$ACCESS_TOKEN" ]; then echo "❌ Login failed!" echo "$LOGIN_RESPONSE" | jq . 2>/dev/null || echo "$LOGIN_RESPONSE" exit 1 fi echo "✅ Login successful!" echo "" case "$COMMAND" in list) echo "📋 Fetching all registration tokens..." curl -s -X GET "${HOMESERVER}/_synapse/admin/v1/registration_tokens" \ -H "Authorization: Bearer ${ACCESS_TOKEN}" | jq . ;; info) if [ -z "$TOKEN" ]; then echo "❌ Token required for 'info' command" show_usage fi echo "📋 Fetching info for token: $TOKEN" curl -s -X GET "${HOMESERVER}/_synapse/admin/v1/registration_tokens/${TOKEN}" \ -H "Authorization: Bearer ${ACCESS_TOKEN}" | jq . ;; delete) if [ -z "$TOKEN" ]; then echo "❌ Token required for 'delete' command" show_usage fi echo "🗑️ Deleting token: $TOKEN" curl -s -X DELETE "${HOMESERVER}/_synapse/admin/v1/registration_tokens/${TOKEN}" \ -H "Authorization: Bearer ${ACCESS_TOKEN}" | jq . echo "✅ Token deleted" ;; *) echo "❌ Unknown command: $COMMAND" show_usage ;; esac