mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2024-12-27 13:59:22 -05:00
d4c4798a25
On NixOS, `bash` isn't under `/bin/bash` but rather in some directory in `$PATH`. Locally, I've been patching those scripts to make them work. `/usr/bin/env` seems to be the only [portable way](https://unix.stackexchange.com/questions/29608/why-is-it-better-to-use-usr-bin-env-name-instead-of-path-to-name-as-my) to use binaries from the PATH as interpreters. Signed-off-by: Quentin Gliech <quentingliech@gmail.com>
55 lines
2.3 KiB
Bash
55 lines
2.3 KiB
Bash
#!/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"
|