Add steps to delete room and "purge" rooms with no local users

This commit is contained in:
2020-12-26 18:20:30 +01:00
parent ae83eedec4
commit 0bddd5f1ce

View File

@@ -2,6 +2,7 @@
toolName=synapse toolName=synapse
toolDeps="build-essential python3-dev libffi-dev python3-pip python3-setuptools postgresql libssl-dev virtualenv libjpeg-dev libxslt1-dev libpq5 libpq-dev" toolDeps="build-essential python3-dev libffi-dev python3-pip python3-setuptools postgresql libssl-dev virtualenv libjpeg-dev libxslt1-dev libpq5 libpq-dev"
toolDeps+=" jq" # used as helper for api access
toolDepsRaspi="ilibopenjp2-7 libtiff5" toolDepsRaspi="ilibopenjp2-7 libtiff5"
toolUser="synapse" toolUser="synapse"
toolGroup="synapse" toolGroup="synapse"
@@ -270,6 +271,7 @@ step_22() {
endReturn -o $? "Admin token needed. Check $SEQ_CONFIG_FILE" endReturn -o $? "Admin token needed. Check $SEQ_CONFIG_FILE"
shift shift
local arg
local synapseIP=localhost local synapseIP=localhost
local grepOut=" | grep -E '(\"total\":|\"name\":|\"room_id\":)'" local grepOut=" | grep -E '(\"total\":|\"name\":|\"room_id\":)'"
@@ -333,11 +335,87 @@ step_24() {
exep "curl -sS --header \"Authorization: Bearer $MATRIX_ACCESS\" \"$apiCall\" | python -m json.tool $grepOut" exep "curl -sS --header \"Authorization: Bearer $MATRIX_ACCESS\" \"$apiCall\" | python -m json.tool $grepOut"
} }
step_26_info() { echo "Delete rooms without local users [IP]:8008"; }
step_26_alias() { ALIAS="purge"; }
step_26() {
adminTokenCheck
endReturn -o $? "Admin token needed. Check $SEQ_CONFIG_FILE"
shift
local i
local arg
local synapseIP=localhost
if [ ! -z $1 ]; then
synapseIP="$1"
fi
local apiCall="http://${synapseIP}:8008/_synapse/admin/v1/rooms"
local arrRoom=( $(curl -sS --header "Authorization: Bearer $MATRIX_ACCESS" "$apiCall" | jq '.rooms[] | select(.joined_local_members == 0) | .room_id') )
for i in "${!arrRoom[@]}" ; do
arrRoom[$i]="${arrRoom[$i]:1:${#arrRoom[$i]}-2}"
done
for i in "${arrRoom[@]}" ; do
step deleteroom "$i"
done
}
step_28_info() {
echo "Delete room [OPTION] <ROOM ID> [IP]:8008"
}
step_28_alias() { ALIAS="deleteroom"; }
step_28() {
adminTokenCheck
endReturn -o $? "Admin token needed. Check $SEQ_CONFIG_FILE"
shift
local roomId=""
local synapseIP=localhost
if [ ! -z $1 ]; then
roomId="$1"
shift
else
endReturn -o 1 "No room ID specified"
fi
if [ ! -z $1 ]; then
synapseIP="$1"
fi
echo " [I] Deleting room with ID: $roomId"
local apiCall="http://${synapseIP}:8008/_synapse/admin/v1/rooms/$roomId/delete"
exep "curl -sS --header \"Authorization: Bearer $MATRIX_ACCESS\" \
-X POST \
-H \"Content-Type: application/json\" -d \"{}\" \
\"$apiCall\" | python -m json.tool"
#end
}
# As note for further improvement
# See https://github.com/matrix-org/synapse/blob/develop/docs/admin_api/rooms.md#delete-room-api
postDataDeleteRoom()
{
cat <<EOF
{
"new_room_user_id": "@someuser:example.com",
"room_name": "Content Violation Notification",
"message": "Bad Room has been shutdown due to content violations on this server. Please review our Terms of Service.",
"block": true,
"purge": true
}
EOF
}
step_30_info() { echo "Drop postgres database for $toolName"; } step_30_info() { echo "Drop postgres database for $toolName"; }
step_30_alias() { ALIAS="dropdb"; } step_30_alias() { ALIAS="dropdb"; }
step_30() { step_30() {
readDatabaseInfos readDatabaseInfos
exe cd ~postgres exe cd ~postgres
exe su -c "psql -c \"DROP DATABASE ${postgresDb};\"" - postgres exe su -c "psql -c \"DROP DATABASE ${postgresDb};\"" - postgres
} }