123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #!/usr/bin/env bash
- DOMAIN=yourserver.tld
- # add this user as admin in your home server:
- ADMIN="@you_admin_username:$DOMAIN"
- API_URL="$DOMAIN:8008/_matrix/client/r0"
- # choose a time before which the messages should be pruned:
- # TIME='2016-08-31 23:59:59'
- TIME='12 months ago'
- # creates a timestamp from the given time string:
- UNIX_TIMESTAMP=$(date +%s%3N --date='TZ="UTC+2" '"$TIME")
- ###################################################################################################
- # database function
- ###################################################################################################
- sql (){
- # for sqlite3:
- #sqlite3 homeserver.db "pragma busy_timeout=20000;$1" | awk '{print $2}'
- # for postgres:
- psql -A -t --dbname=synapse -c "$1" | grep -v 'Pager'
- }
- ###############################################################################
- # make the admin user a server admin in the database with
- ###############################################################################
- # sql "UPDATE users SET admin=1 WHERE name LIKE '$ADMIN'"
- ###############################################################################
- # get an access token
- ###############################################################################
- # for example externally by watching Riot in your browser's network inspector
- # or internally on the server locally, use this:
- TOKEN=$(sql "SELECT token FROM access_tokens WHERE user_id='$ADMIN' ORDER BY id DESC LIMIT 1")
- ###############################################################################
- # check, if your TOKEN works. For example this works:
- ###############################################################################
- # curl --header "Authorization: Bearer $TOKEN" "$API_URL/rooms/$ROOM/state/m.room.power_levels"
- ###############################################################################
- # optional check size before
- ###############################################################################
- # echo calculate used storage before ...
- # du -shc ../.synapse/media_store/*
- ###############################################################################
- # finally start pruning media:
- ###############################################################################
- set -x # for debugging the generated string
- curl --header "Authorization: Bearer $TOKEN" -X POST "$API_URL/admin/purge_media_cache/?before_ts=$UNIX_TIMESTAMP"
|