5
0
This repository has been archived on 2024-08-15. You can view files and clone it, but cannot push or open issues or pull requests.
synapse-scripts/synapse-compress.sh
2021-07-05 11:15:48 -07:00

37 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
# don't bother compressing unless we will save this much:
min_compression_percent=20
read -p "synapse admin API access token: " token
read -p "postgres synapse user password: " db_password
get_synapse_version () {
curl --silent --ssl -H "Authorization: Bearer $token" \
"localhost:8008/_synapse/admin/v1/server_version"
}
get_all_rooms () {
curl --silent -H "Authorization: Bearer $token" \
"localhost:8008/_synapse/admin/v1/rooms" \
| jq '.rooms[].room_id' \
| sed 's/"//g'
}
compress_state () {
for room_id ; do
sqlf="$HOME/$(echo $room_id | tr -c -d '[:alpha:]').sql"
repl=$(synapse-compress-state -t -o $sqlf -p \
"host=localhost user=synapse password=${db_password} dbname=synapse" \
-r "$room_id" | sed -n '/%/s/.*(\([0-9]*\).[0-9]*%).*/\1/p')
if [ "$repl" -le "$((100 - $min_compression_percent))" ]; then
echo "compressing room" $room_id "..."
psql -q -U 'synapse' -f $sqlf 'synapse'
fi
rm $sqlf
done
}
compress_state $(get_all_rooms)