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/$/\" +json_data=$(cat <
/' | tr -d '\n')