2025-02-14 12:22:17 +01:00
..
fix
2024-12-28 19:56:43 +01:00
2025-02-14 12:22:17 +01:00
2024-12-26 16:33:44 +01:00

useful aliases

deps.:

install moreutils
apt install moreutils

simple add it to your alias file.

source "$HOME/.token" # contains $token
server='server.tld'

get a list of all rooms

matrix-show_rooms() {
	curl -s -H "Authorization: Bearer $token" -X GET 'https://'"$server"'/_synapse/admin/v1/rooms?order_by=state_events&limit=1000000' | jq -Mr . > ~/rooms.txt && $EDITOR ~/rooms.txt
}

get a list of all users

matrix-show_users() {
	curl -s -H "Authorization: Bearer $token" -X GET 'https://'"$server"'/_synapse/admin/v2/users?from=0&limit=100000&guests=false' | jq -Mr . > ~/users.txt && $EDITOR ~/users.txt
}

deactivate a list of user_ids

matrix-deactivate-users() {
	if [ -s ~/deactivate_users.txt ]; then
		while read i; do
			printf '%s\n' "$i"; \
			curl -s -H "Authorization: Bearer $token" -X POST 'https://'"$server"'/_synapse/admin/v1/deactivate/'"$i" -d '{"erase": true}'; printf '\n'
		done < ~/deactivate_users.txt
		echo > ~/deactivate_users.txt
	else
		printf '~/deactivate_users.txt is empty.\n'
	fi
}

remove all rooms without local members

matrix-remove-empty-rooms() {
	TOPURGE=$(curl -s -H "Authorization: Bearer $token" -X GET \
	  'https://'"$server"'/_synapse/admin/v1/rooms?limit=1000000' | jq -Mr '.rooms[] | select(.joined_local_members == 0) | .room_id')
	for i in $TOPURGE; do
		printf 'processing room %s ..\n' "$i"
		curl -s -w "\nResponse code: %{response_code}\n" -H "Authorization: Bearer $token" -H "Content-Type: application/json" -X DELETE -d '{}' \
		  'https://'"$server"'/_synapse/admin/v1/rooms/'"$i"''
	done
}

purge and block a list of room_ids and also deactivate all local users in this rooms

matrix-purge-rooms() {
	if [ -s ~/purge_rooms.txt ]; then
		echo > ~/blocked_members.txt
		while read i; do
			printf '%s\n' "$i"
			curl -s -H "Authorization: Bearer $token" -X GET 'https://'"$server"'/_synapse/admin/v1/rooms/'"$i"'/members' | jq -Mr .members[] >> ~/blocked_members.txt >/dev/null 2>&1
			curl -s -H "Authorization: Bearer $token" -X DELETE 'https://'"$server"'/_synapse/admin/v1/rooms/'"$i" -d '{"purge": true, "block": true}'
			printf '\n'
		done < ~/purge_rooms.txt
		sed -i -e '/^$/d' ~/blocked_members.txt
		sort -u -o ~/blocked_members.txt{,}
		for i in $(grep "$server" ~/blocked_members.txt); do
			printf '%s\n' "$i"
			curl -s -H "Authorization: Bearer $token" -X POST 'https://'"$server"'/_synapse/admin/v1/deactivate/'"$i" -d '{"erase": true}'
		done
		sed -i '/'"$server"'/d' ~/blocked_members.txt
	else
		printf '~/purge_rooms.txt is empty.\n'
	fi
}

get a list of all blocked room_ids

matrix-get-blocked_rooms() {
	sudo -iu postgres psql -d matrix -c "SELECT room_id FROM blocked_rooms" > ~/blocked_rooms.txt
	sed -i -e 's/ //' -e '1,2d' ~/blocked_rooms.txt
	head -n -2 ~/blocked_rooms.txt | sponge ~/blocked_rooms.txt
}