Updated service configurations, added new services, removed deprecated ones, and improved gitignore patterns for better repository hygiene. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
88 lines
2.5 KiB
Bash
Executable file
88 lines
2.5 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Script to manage Matrix registration tokens
|
|
# Usage: ./manage-tokens.sh <admin_username> <admin_password> <command> [token]
|
|
|
|
HOMESERVER="https://matrix.fig.systems"
|
|
USERNAME="${1}"
|
|
PASSWORD="${2}"
|
|
COMMAND="${3}"
|
|
TOKEN="${4}"
|
|
|
|
show_usage() {
|
|
echo "Usage: $0 <admin_username> <admin_password> <command> [token]"
|
|
echo ""
|
|
echo "Commands:"
|
|
echo " list - List all registration tokens"
|
|
echo " info <token> - Get info about a specific token"
|
|
echo " delete <token> - Delete a token"
|
|
echo " update <token> - 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
|