From f9c611823c0a6c58bfe06900420f22ce173ccfa6 Mon Sep 17 00:00:00 2001 From: cynic Date: Mon, 7 Jul 2025 02:54:20 +0000 Subject: [PATCH] Add check_morg_memberships.sh --- check_morg_memberships.sh | 64 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 check_morg_memberships.sh diff --git a/check_morg_memberships.sh b/check_morg_memberships.sh new file mode 100644 index 0000000..c18182b --- /dev/null +++ b/check_morg_memberships.sh @@ -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="$header
$(cat /tmp/discrepancies.txt | sed 's/$/\/' | tr -d '\n')
" +json_data=$(cat <