====== User Reg Notifications ====== location ~ ^/_matrix/client/(r0|unstable)/register$ { proxy_pass http://127.0.0.1:8008; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; 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/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 ====== location ~ ^/_matrix/client/(r0|unstable)/rooms/.*/report/ { proxy_pass http://127.0.0.1:8008; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; rewrite_by_lua ' if ngx.var.request_method == "POST" then os.execute("/usr/local/bin/matrix_event_reported") end '; } #!/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\"}"