en:tecdoc:abusenotif

User Reg Notifications

nginx.conf
	location = /_matrix/client/r0/register {
                #limit_req zone=limitregister burst=5;
		client_max_body_size 100M;
		client_body_buffer_size 100M;

		proxy_pass	 http://127.0.0.1:8008;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Host	    $host;
		proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Forwarded-Ssl on;
                proxy_set_header X-SSL 1;                
                body_filter_by_lua_block {
                  local proc = io.popen('/usr/local/bin/matrix_user_registered ' .. ngx.var.remote_addr,'w')
                  proc:write(ngx.arg[1])
                  proc:close()
                }
	}
/usr/local/bin/matrix_user_registered
#!/usr/bin/zsh

# access token of @abuse:…
AT='MDMA...'
# admin room to send notifications to
ROOM='!x1y2z3:example.com'
# ip of the new user, with gdpr redaction to /24
IP=`echo $1|cut -d. -f1-3`.0

#read stdin
SI=`/bin/cat`
#try to retrieve new user id
U=`echo $SI|jq -r .user_id`

[ -z "$U" ] && exit 0
[ "null" = "$U" ] && exit 0

# send notification
curl -X PUT "https://asra.gr/_matrix/client/r0/rooms/${ROOM}/send/m.room.message/"`uuid -m -F SIV`"?access_token=${AT}" -H  "accept: application/json" -H  "Content-Type: application/json" -d "{  \"body\": \"@room New user registered: ${U} from ${IP}\",  \"msgtype\": \"m.text\"}" >> /tmp/reguser.txt 2>> /tmp/reguser.txt

Content Reports

nginx.conf
	location ~ /_matrix/client/r0/rooms/.*/report/.* {
		client_max_body_size 100M;
		client_body_buffer_size 100M;

		proxy_pass	 http://127.0.0.1:8008;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Host	    $host;
		proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Forwarded-Ssl on;
                proxy_set_header X-SSL 1;                
		rewrite_by_lua '
                  if ngx.var.request_method == "POST" then
                    os.execute("/usr/local/bin/matrix_event_reported")
                  end
                ';
	}
/usr/local/bin/matrix_event_reported
#!/bin/sh

AT='MDMA...'
ROOM='!x1y2z3:example.com'

# log abuse reports
echo date $* >> /tmp/report.log 

# TODO: abuse reports should be forwarded to appropriate admins or
#       abuse contacts. since some servers don't implement MSC 1929
#       an idea is to implement a semi automatic filled db of some kind
#https://asra.gr/.well-known/matrix/support
# abuse@matrix.org: https://matrix.to/#/!OGEhHVWSdvArJzumhm:matrix.org/$3CNYJIakytzbO6qI4eR8JmCVJUMUUm57YmjJJIOR-ic

curl -X PUT "https://asra.gr/_matrix/client/r0/rooms/${ROOM}/send/m.room.message/"`uuid -m -F SIV`"?access_token=${AT}" -H  "accept: application/json" -H  "Content-Type: application/json" -d "{  \"body\": \"@room there was a event reported\",  \"msgtype\": \"m.text\"}"
  • en/tecdoc/abusenotif.txt
  • Last modified: 2021/07/01 19:20
  • by jomat