4.4 KiB
Executable File
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:
- Add the following functions:
- https://matrix-org.github.io/synapse/latest/admin_api/user_admin_api.html#find-a-user-based-on-their-id-in-an-auth-provider
- https://matrix-org.github.io/synapse/latest/admin_api/user_admin_api.html#find-a-user-based-on-their-third-party-id-threepid-or-3pid
- https://github.com/matrix-org/synapse/blob/master/docs/admin_api/delete_group.md
- 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)
- 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
- Only email reportID in incident report?
- Add a room report function to create a properly formatted report for rdlist
- Expand the incident reporting to also issue reports over Matrix
- Automated public room joining and reminder if reporting email is not available?
- Refine ipinfo module to also return extra details about the IP
- 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.