Commit Graph

169 Commits

Author SHA1 Message Date
Jess Porter 423a34bebe runtime persistent settings system (#158) 2022-01-25 14:47:50 +00:00
David Teller c7a96a3afe Retry requests in case of throttling (#178)
* Retry requests in case of throttling


Co-authored-by: gnuxie <gnuxie@element.io>
2022-01-25 12:19:44 +00:00
gnuxie 1a65122b0d Initial Ruleserver prototype.
This is an experimental ruleserver that will serve the combined rules from
the active policy lists to a Synapse module over a web api.
This makes it easier to communicate changes in policy lists to Synapse workers
that do not have an immediate view over all of the policy rooms at
the same time.
This also allows us to express moderation actions to the homeserver
beyond what is currently expressible via MSC2313 policy
lists.
2022-01-21 12:13:04 +00:00
gnuxie 6a723eaa1b Stop reacting to reports Mjolnir didn't send in report manager. 2022-01-18 11:08:17 +00:00
Jess Porter 941d10b015 never mutate config.managementRoom in-place (#184) 2022-01-17 16:24:12 +00:00
David Teller a88a494f7a Let's not overwrite the error message when we're fixing the stack. 2022-01-07 14:06:10 +01:00
David Teller c48a1e8ffc Let's make sure that we can still check for errors with concise error handling 2022-01-07 14:06:10 +01:00
David Teller 3f2039f6a7 Let's use getRequestFn/setRequestFn to keep errors readable 2022-01-07 14:06:10 +01:00
David Teller 9a8fed1695 Slightly cleaner MatrixClient wrapping 2022-01-07 14:06:10 +01:00
David Teller 57746f7fb4 Wrap MatrixClient into something that displays nicer error messages 2022-01-07 14:06:10 +01:00
David Teller 1592440bc9 Abuse Report UX: Keep the text shorter (#152)
* Abuse Report UX: Keep the text shorter

* ReportManager: Clarifying why some actions are disabled
2021-12-10 09:09:32 +01:00
gnuxie 33011ddb04 Store BanList rules only in the room state cache.
We do this so that there is only one source of truth for which rules
are active and it simplifies de-duplicating rules of conflicting event
types (e.g. m.room.rule.user vs m.policy.rule.user).
2021-11-29 11:45:22 +00:00
gnuxie 0bbfe93a4b Use MSC2313 m.policy.rule.* for rules and always prefer these types.
The reason for doing this is because otherwise there may be duplicate
rules under different state types for the same entity.
This simplifies the process of modifying or invalidating rules affecting
an entity because the rule with the most recent type will always be
preferred.
2021-11-29 11:45:22 +00:00
gnuxie 9c47fc917a Provide notice showing how a BanList has changed after updating.
Only shows changes to lists made by other accounts (than the one used by Mjolnir).
Displays when rules are added, removed and modified by either replacing the state event or redacting them.
2021-11-29 11:45:22 +00:00
David Teller a21415a04c Give the ability to moderators to react quickly to /report abuse reports. (#137) 2021-11-09 13:15:49 +01:00
gnuxie 911707ab2e await the callback in getUserMessagesIn
This is so that the context of failing callbacks are not lost.
We also await during pagination and not after so that if a call to the callback fails, we will not call it again.
2021-10-20 11:00:44 +01:00
gnuxie fefe29e98b Improve readability of getMessagesByUser 2021-10-20 11:00:44 +01:00
gnuxie 743f6d043a Fix filter when paginating history in getMessagesByUser.
Related to https://github.com/matrix-org/mjolnir/pull/132.
The old code would call `/sync` with this filter. If a token was
provided in the response of `/sync` for earlier messages, it would
then use this same filter to call `/rooms/messages`. However, this
filter does not do anything on that endpoint when we know the id of
the sender, as it requires a RoomEventFilter and there is no warning
or error from synapse about the structure of the filter being wrong.
This was not noticed until after the related PR because `/sync` with
the filter would usually be able to provide a user's
entire history in one room. This is because in most cases a user is banned/redacted
shortly after joining a room.
In the case that `/rooms/messages` was called for more events, the method would
always paginate the timeline up until the limit or the end of the room
history, which is only the expected behavior when matching the sender
with a "glob".
2021-10-19 16:28:55 +01:00
David Teller 06e5f00b2d Intercept /report and display human-readable abuse reports in the moderation room - Resolves #38 (#135)
* Intercept /report and display human-readable abuse reports in the moderation room - Resolves #38
2021-10-07 14:42:08 +02:00
gnuxie 776c1fe063 Tidy logging in integration tests 2021-09-30 15:52:06 +01:00
gnuxie 400af48e6e Move Mjolnir setup and configuration to a sensible place. 2021-09-27 16:04:01 +01:00
gnuxie 0a6b122f5c Tidy up documentation and test utils 2021-09-27 15:33:15 +01:00
gnuxie 68aa717826 Rework integration tests to work with mx-tester 2021-09-24 18:25:27 +01:00
gnuxie 1d2da60bee Allow relative paths for mjolnir data
These are relative to the project directory.
2021-09-24 18:25:27 +01:00
gnuxie 57ef8ab7fe Tidy up test harness. 2021-09-24 18:25:27 +01:00
Gnuxie 002e4ee749 Create docker-compose for testing purposes 2021-09-24 18:25:27 +01:00
Chirayu Desai 69ace9cfa5 Add a new protection, MessageIsMedia
* Simply redacts any media sent to the room, by anyone
* Meant to serve as a temporary measure to prevent image spam,
  in conjunction with FirstMessageIsImage
2021-09-24 16:57:16 +05:30
gnuxie 6edf503a9c Use rooms/initialSync instead of sync to fetch room history.
See https://github.com/matrix-org/synapse/issues/10842.
For the time being this seems to be the only way to avoid requests
that take several minutes for synapse to complete and timeout.
2021-09-17 12:02:14 +01:00
gnuxie 5acc38c8b5 EventRedactionQueue documentation improvements from review 2021-09-16 17:10:59 +01:00
gnuxie ad199cc7d7 Use a Map for queueing redactions by roomId. 2021-09-15 12:18:55 +01:00
gnuxie 2889599eb2 Rename AutomaticRedactionQueue to UnlistedUserRedactionQueue.
This seems to be a more descriptive name and it also doesn't clash
with the new redaction queue.
2021-09-14 14:45:07 +01:00
gnuxie c949d26582 When checking a member change, process redactions for that room. 2021-09-14 14:45:07 +01:00
gnuxie c5b5026d4d WIP: Redact events after all bans have been applied. 2021-09-14 14:13:24 +01:00
David Teller e45791f66e Merge pull request #102 from jojosch/catch-errors
catch errors and set non-zero exit code
2021-08-31 11:52:47 +02:00
Travis Ralston 37031764ac Merge pull request #117 from matrix-org/yoric/delete-rooms-api
Replace shutdown_room API with DELETE /_synapse/admin/v1/rooms/<room_…
2021-08-17 09:23:55 -06:00
David Teller dd6c06eae5 Fix: Let's default to Synapse's default message when deleting a room without a message 2021-08-17 17:21:17 +02:00
Travis Ralston f09fd5d507 Merge pull request #123 from matrix-org/travis/voice-prot
Add a voice message protection to easily redact unwanted messages
2021-08-17 08:46:34 -06:00
David Teller b60f503e2e FIXUP 2021-08-17 12:56:25 +02:00
David Teller 62b30b19d9 Replace shutdown_room API with DELETE /_synapse/admin/v1/rooms/<room_id> - Resolves #76, closes #96
As per https://github.com/matrix-org/synapse/issues/9052, shutdown_room is going away, to be replaced with DELETE /_synapse/admin/v1/rooms/<room_id>.
2021-08-17 12:54:24 +02:00
Travis Ralston 4c6511ba3d Definitely didn't copy/paste 2021-08-16 20:35:39 -06:00
Travis Ralston 453784d7ef Add a voice message protection to easily redact unwanted messages 2021-08-16 20:32:00 -06:00
David Teller 46d099e8e0 Lint: Enabling 'noUnusedLocals' 2021-07-22 08:47:41 +02:00
David Teller 2e22154870 Lint: Enabling 'strictNullChecks' 2021-07-22 08:40:29 +02:00
David Teller 2a77509f9e Lint: Enabling 'noImplicitReturns' 2021-07-22 08:24:12 +02:00
Travis Ralston ff4cbc018f Update matrix-bot-sdk and use request cleaning function 2021-07-01 15:11:27 -06:00
Johannes Schleifenbaum 662b06df8e catch errors and set non-zero exit code
Signed-off-by: Johannes Schleifenbaum <johannes@js-webcoding.de>
2021-06-14 19:03:35 +02:00
Neil Middleton 1c5c4bdc15 Remove errant log 2021-06-14 14:51:18 +01:00
Neil Middleton 531fd1379c Make !mjolnir not case sensitive 2021-06-14 14:43:50 +01:00
J. Ryan Stinnett 259cdd8c12 Improve force handling
This improves the force argument parsing to keep it from getting glued onto the
reason. It also adjusts tests for the new behaviour.
2021-02-05 17:03:36 +00:00
J. Ryan Stinnett 46192ac6f7 Add confirmation for wildcard bans
This adds a default enabled option to require confirmation for wildcard bans
(e.g. those containing `*` or `?`). Users will need to also add `--force` for
the commands to be accepted.
2021-02-05 16:09:11 +00:00