Add steps to delete room and "purge" rooms with no local users
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
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+=" jq" # used as helper for api access
|
||||
toolDepsRaspi="ilibopenjp2-7 libtiff5"
|
||||
toolUser="synapse"
|
||||
toolGroup="synapse"
|
||||
@@ -270,6 +271,7 @@ step_22() {
|
||||
endReturn -o $? "Admin token needed. Check $SEQ_CONFIG_FILE"
|
||||
|
||||
shift
|
||||
local arg
|
||||
local synapseIP=localhost
|
||||
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"
|
||||
}
|
||||
|
||||
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_alias() { ALIAS="dropdb"; }
|
||||
step_30() {
|
||||
readDatabaseInfos
|
||||
|
||||
|
||||
exe cd ~postgres
|
||||
exe su -c "psql -c \"DROP DATABASE ${postgresDb};\"" - postgres
|
||||
}
|
||||
|
Reference in New Issue
Block a user