Add check_morg_memberships.sh
This commit is contained in:
parent
e5578255be
commit
f9c611823c
64
check_morg_memberships.sh
Normal file
64
check_morg_memberships.sh
Normal file
@ -0,0 +1,64 @@
|
||||
#!/bin/sh
|
||||
# usage: define the variables below and add a cron job to run it every hour
|
||||
|
||||
roomid=''
|
||||
mods_roomid='' # for notifications
|
||||
bot_user_token='syt_...'
|
||||
morg_user_token='mct_...'
|
||||
user_ids_to_tag='["@user:domain.tld","@other_user.domain.tld"]'
|
||||
|
||||
curl -s \
|
||||
-X GET "https://xmr.mx/_matrix/client/r0/rooms/$roomid/members" \
|
||||
-H "Authorization: Bearer $bot_user_token" \
|
||||
> /tmp/members.xmrmx.json
|
||||
|
||||
curl -s \
|
||||
-X GET "https://matrix.org/_matrix/client/r0/rooms/$roomid/members" \
|
||||
-H "Authorization: Bearer $morg_user_token" \
|
||||
> /tmp/members.matrixorg.json
|
||||
|
||||
jq '.chunk.[] | {membership: .content.membership, user_id: .state_key}' /tmp/members.matrixorg.json \
|
||||
| grep -A 1 'membership": "join' \
|
||||
| grep user_id \
|
||||
| perl -lpe 's/ "user_id": "([^"]+)"/$1/' \
|
||||
| sort -u > /tmp/members.matrixorg.csv
|
||||
|
||||
jq '.chunk.[] | {membership: .content.membership, user_id: .state_key}' /tmp/members.xmrmx.json \
|
||||
| grep -A 1 'membership": "join' \
|
||||
| grep user_id \
|
||||
| perl -lpe 's/ "user_id": "([^"]+)"/$1/' \
|
||||
| sort -u > /tmp/members.xmrmx.csv
|
||||
|
||||
diff /tmp/members.xmrmx.csv /tmp/members.matrixorg.csv | grep '@' > /tmp/discrepancies.txt
|
||||
is_positive=$?
|
||||
|
||||
header="Membership discrepancies between xmr.mx and matrix.org detected:"
|
||||
body="$header\n$(cat /tmp/discrepancies.txt | sed 's/$/\\n/' | tr -d '\n')"
|
||||
formatted_body="<strong>$header</strong><pre>$(cat /tmp/discrepancies.txt | sed 's/$/\<br\>/' | tr -d '\n')</pre>"
|
||||
json_data=$(cat <<EOF
|
||||
{
|
||||
"msgtype": "m.text",
|
||||
"format":"org.matrix.custom.html",
|
||||
"body": "$body",
|
||||
"formatted_body": "$formatted_body",
|
||||
"m.mentions": {
|
||||
"user_ids": $user_ids_to_tag
|
||||
}
|
||||
}
|
||||
EOF
|
||||
)
|
||||
|
||||
if [ $is_positive -eq 0 ]; then
|
||||
echo Discrepancies found.
|
||||
txnId=$(date +%s%N | cut -b1-13)$(shuf -i 1000-9999 -n 1)
|
||||
curl -s -X PUT \
|
||||
"https://xmr.mx/_matrix/client/v3/rooms/$mods_roomid/send/m.room.message/m$txnId.00" \
|
||||
-H "Authorization: Bearer $bot_user_token" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$json_data" \
|
||||
-o /dev/null \
|
||||
-w "%{http_code}"
|
||||
echo ""
|
||||
else
|
||||
echo No discrepancies found.
|
||||
fi
|
Loading…
Reference in New Issue
Block a user