matrix-moderation-tool/README.md
2023-08-18 18:17:19 +08:00

4.4 KiB
Executable File
Raw Blame History

Matrix Moderation Tool

A Matrix moderation tool to make managing a Synapse server easier.

Contact me at @michael:perthchat.org if you get stuck or have an edit in mind.


Licensing

This work is published under the MIT license, for more information on this license see here: https://opensource.org/license/mit/


Setup script

You can hard code the server URL, federation port and access token into the hardcoded_variables.py file for faster use, it will prompt you for these values if you don't. (Prompting is currently broken)

Your access token can be found in Element > Settings > Help & About, your user account must first be upgraded to a server admin.

This script also requires you to install the following PIP packages:

pip3 install python-whois
pip3 install requests
pip3 install matrix-nio

Running the script

$ python3 moderation_tool.py


Upgrade user to 'server admin'

To use this moderation script you need an OAuth token of a "server admin" account. If you've just setup a Matrix server, you'll need to promote an account to server admin by altering your database.

https://github.com/matrix-org/synapse/tree/master/docs/admin_api

“So first connect to the correct db and then run the UPDATE users...”

$ sudo -i -u postgres

$ psql synapse

synapse=# UPDATE users SET admin=1 WHERE name='@PC-Admin:perthchat.org';

UPDATE 1

synapse=#

Note: A - sign instead of = means you didn't type a complete SQL query yet!

(You need a semicolon (;) at the end to terminate the command.)


Make sure /_synapse/ is mapped

A few of the commands will not work unless /_synapse/ is mapped to port 8008. Here is a example for nginx:


    location /_matrix {
        proxy_pass http://127.0.0.1:8008;
        proxy_set_header X-Forwarded-For $remote_addr;
    }

    location /_synapse {
        proxy_pass http://127.0.0.1:8008;
        proxy_set_header X-Forwarded-For $remote_addr;
    }

You can also run the script locally on your server if you do not wish to map /_synapse/.

With the popular matrix-docker-ansible-deploy playbook you can expose this API interface by enabling 'Synapse Admin':

matrix_synapse_admin_enabled: true


Roadmap

To do:

  1. Add the following functions:
  1. Add fully automated (should just return a web link and decryption password) reporting functions for users:
  • Description of why the report was made (what happened), include key information
  • Any other usernames associated with that IP
  • Timestamp for when illegal material was accessed
  • Description of report format and contents (to guide the reader)
  • Collect state event dumps of recently read rooms as well (as they may have looked at other suss rooms recently)
  1. Have recommended rdlist function:
  • return a list of offending accounts and the tags they accessed (for creating incident_dict's) - DONE
  • add the shadowban function to prevent members alerting others after mass shutdowns - DONE
  1. Only email reportID in incident report?
  2. Add a room report function to create a properly formatted report for rdlist
  3. Expand the incident reporting to also issue reports over Matrix
  4. Automated public room joining and reminder if reporting email is not available?
  5. Refine ipinfo module to also return extra details about the IP
  6. Make existing functions compatible with JSON formatted inputs

rdlist Functionality

'rdlist' is a comprehensive list of child abuse related rooms on Matrix, it's a safety initiative led by the Legion of Janitors.

This script can automatically load and block/purge abusive rooms from rdlist, making it very easy for inexperienced administrators to block this harmful content.

If you are running a public server, please dm me at @michael:perthchat.org and I can invite you to the 'Legion of Janitors' room.

For more information on rdlist related function consult the support document.