envsdotnet-matrix-conf/usr/local/bin/matrix-remove-empty-rooms.sh

47 lines
1.2 KiB
Bash
Raw Normal View History

2021-08-01 14:34:00 +02:00
#!/usr/bin/env bash
2023-03-16 11:44:49 +01:00
# this script removed all room's without local members.
2021-08-01 14:34:00 +02:00
# you dont need to stop synapse.
#
DOMAIN=''
TOKEN=''
tmp_file='/tmp/matrix_rooms_to_purge.txt'
print_usage() {
printf '%s\n\n' "${0##*/}"
printf 'usage:\n'
printf ' -h print this help\n'
printf ' -d domain\n'
printf ' -t token\n'
printf 'example:\n'
printf ' %s -d "domain.com" -t "token"\n' "${0##*/}"
exit 1
}
while getopts ":d:t:h" opt "${@}"; do
case $opt in
d) DOMAIN="$OPTARG" ;;
t) TOKEN="$OPTARG" ;;
\?) printf 'Invalid option: -%s\n\n' "$OPTARG" ; print_usage ;;
h|*) print_usage ;;
esac
done
if [ -z "$DOMAIN" ] || [ "$DOMAIN" == '-t' ]; then print_usage; fi
if [ -z "$TOKEN" ] || [ "$TOKEN" == '-d' ]; then print_usage; fi
2023-03-16 11:44:49 +01:00
curl -s -X GET -H "Authorization: Bearer $TOKEN" "https://$DOMAIN/_synapse/admin/v1/rooms?limit=1000000" | \
jq -Mr '.rooms[] | select(.joined_local_members == 0) | .room_id' > $tmp_file
2021-08-01 14:34:00 +02:00
while IFS= read -r room_id
do
printf 'remove room %s ' "$room_id"
2023-03-16 11:44:49 +01:00
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" "https://$DOMAIN/_synapse/admin/v1/rooms/$room_id" \
-H "Content-Type: application/json" -d "{}"
2021-08-01 14:34:00 +02:00
printf ' done.\n'
done < $tmp_file
rm $tmp_file
#
exit 0