purge_remote_media.sh 2.3 KB

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