Commit Graph
388 Commits
Author SHA1 Message Date
Jess PorterandGitHub b03d81dcc4 ability to disable displaying new reports in moderation room (#320) 2022-07-07 12:55:03 +01:00
GnuxieandGitHub 84ffb36494 Bump minimum node version to 16. (#316)
* Bump minimum node version to 16.

We already made the mistake of using features from 16 without realising
Previously: https://github.com/matrix-org/mjolnir/pull/192

* Make sure CI uses specific version of node and we also lint.

https://github.com/matrix-org/pipelines/blob/master/mjolnir/pipeline.yml#L13
2022-07-06 14:50:33 +01:00
GnuxieandGitHub 65f52fef3a Timeout integration tests CI after 1 hour. (#317) 2022-07-06 14:21:33 +01:00
GnuxieandGitHub b850e4554c Remove debug leftovers from a test. (#314)
* Remove debug leftovers from a test.

This is really terrible and has meant whenever anyone has run `yarn test:integration` they have only been running this test.
💀💀💀
https://www.youtube.com/watch?v=jmX-tzSOFE0

* Set a default timeout for integration tests that is 5 minutes long.

Seriously, I don't think there is much to gain by making people guess
a reasnoble time for a test to complete in all the time, especially
with how much Synapse changes in response time and all of the machines
involved in running these tests.

* Warn when giving up on being throttled

* For some reason it takes longer for events to appear in /state

no i am not going to track down why yet.

* Rate limiting got a lot more aggresive.

https://github.com/matrix-org/synapse/pull/13018

Rate limiting in Synapse used to reset the burst count and remove
the backoff when you were spamming continuously, now it doesn't.
Ideally we'd rewrite the rate limiting logic to back off for longer
than suggested so we could get burst again, but for now
lets just unblock CI by reducing the number of events we send in these
tests.
2022-07-06 14:20:25 +01:00
GnuxieandGitHub ac2e736e96 Report polling test temporality (#325)
So the test before sometimes sent the report *before*
the protection (that is used to check whether we have received
the report) was registered.
This of course meant that we didn't ever receive the report from
the perspectivee of the test.
This PR should now mean we always send the report after
registering the protection.
2022-07-05 16:58:29 +01:00
David TellerandGitHub 6e5d520566 Fix: roomMemberTest off-by-one error (#324) 2022-07-05 15:33:53 +02:00
David TellerandGitHub cb34af02c6 Revert "Fix: roomMemberTest off-by-one error (#319)" (#323)
This reverts commit d8aac434f1.
2022-07-05 15:29:01 +02:00
David TellerandGitHub d8aac434f1 Fix: roomMemberTest off-by-one error (#319) 2022-07-05 14:38:53 +02:00
Jess PorterandGitHub ed68e02c4e implement polling reports in synapse (#259) 2022-07-04 15:06:36 +01:00
gnuxie d7b846cdb3 Remove duplicated kick from kick command (merging cleanup)
Accidentally introduced while merging https://github.com/matrix-org/mjolnir/pull/291.
2022-06-15 12:34:59 +01:00
Jae Lo PrestiandGitHub a876a05520 Glob kick command (#291)
This pull requests adds for glob support in the `!mjolnir kick` command.

## Example
```
!mjolnir kick @*:domain.tld <reason> --force
```
This command will kick every user having a mxid matching `domain.tld`.  
You can also still kick a particular user:
```
!mjolnir kick @user:domain.tld <reason>
```

## Tests:
Tested on the Furry Tech room (`vRGLvqJYlFvzpThbxI:matrix.org`) after a spam wave.  
It kicked over 13k bots in a matter of hours without putting too much strain on the homeserver.  
For instance, this command was matching `@spam*`:
![image](https://user-images.githubusercontent.com/76598503/167320002-f0575f50-4b54-41d1-8220-f67d72ccaf16.png)

  
  
Signed-off-by: Jae Lo Presti <me@jae.fi>
2022-06-15 12:20:27 +01:00
David TellerandGitHub 0eea04bd69 A background queue for kicking (#296)
A background queue for kicking
2022-06-08 11:49:43 +02:00
GnuxieandGitHub 558cbb3cae Remove the need to call /initialSync in getMessagesByUserIn. (#297)
* Remove the need to call `/initialSync` in `getMessagesByUserIn`.

At the moment we call `/initialSync` to give a `from` token to `/messages`.
In this PR we instead do not provide a `from` token when calling `/messages`,
which has recently been permitted in the spec
Technically this is still unstable in the spec
https://spec.matrix.org/unstable/client-server-api/#get_matrixclientv3roomsroomidmessages
https://github.com/matrix-org/matrix-spec/pull/1002

Synapse has supported this for over 2 years and Element web depends on it for threads.
https://github.com/matrix-org/matrix-js-sdk/pull/2065

Given that redactions are super heavy in Mjolnir already and have been reported
as barely functional on matrix.org I believe we should also adopt this approach as
if for some reason the spec did change before the next release (1.3) (extremely unlikely) we can revert this commit.
2022-05-24 11:16:52 +01:00
Jonathan de JongandGitHub bf7f1318af Improve documentation (#277)
* improve documentation

* incorperate documentation of configuration into sample file
2022-05-20 12:19:26 +01:00
David TellerandGitHub bcc3405e51 Revert "Fix traceback on Abuse Report. (#230)" (#293)
This reverts commit 27ae3ec625.
2022-05-13 15:29:49 +02:00
27ae3ec625 Fix traceback on Abuse Report. (#230)
* Have the callback work on the packed event Obj.

And also explicitly pack the Mjolnir object inside the event.

* Add VS ignores.

* Commit suggested review changes.

- Add bind to callback
- Add type cast for event packed object

* Fix missing parenthesis.

* Don't pass Mjolnir obj to handleReport().

Co-authored-by: David Teller <davidt@element.io>
2022-05-13 15:18:30 +02:00
David TellerandGitHub 74d8caa7e7 Since command: adding the ability to mute (#272) 2022-05-10 17:19:16 +02:00
gnuxie a88fc64a07 v1.4.2 v1.4.2 2022-05-06 11:25:49 +01:00
Jonathan de JongandGitHub 9fce35c000 Add Join Wave Short-Circuit Protection (#280)
* Add Short Circuit Protection

* fix module name

* change to dynamic timescales

* address feedback
2022-05-06 09:24:34 +01:00
GnuxieandGitHub c8caf744c5 Apply members and server bans to the most recently active rooms first. (#274)
* Apply members and server bans to the most recently active rooms first.

https://github.com/matrix-org/mjolnir/issues/273
2022-05-03 12:36:53 +01:00
Jonathan de JongandGitHub cc9f393ed7 fix CI (#282)
ts-mocha has also been updated to make running locally possible (else it gives a confusing error that tsconfig.json is not "json" or the likes)
2022-05-03 11:20:40 +01:00
GnuxieandGitHub 3d10f998b7 Change antispam Python module verison with mjolnir version. (#264)
The reason we want this is so that people do not forget to change the version number in the synapse module.
The precedent is that the version number has been 0.1.0 since the begging until now.
While this solution does mean that there may be new version of the module where
nothing has actually changed, this is still better than not changing the version at all.
Another version scheme for the module would be inconsistent to
the git repository tags and that has the potential to cause much more confusion
than "blank" version bumps.
If this is a problem, then antispam must be extracted to another repository.

In order to test this, run `yarn version --patch` observe the changes with `git log` and `git diff HEAD~`,
then YOU MUST delete the tag with `git tag --delete vd.d.d` when you are finished.

* more robust
2022-04-12 16:36:35 +01:00
GnuxieandGitHub b8ee2fddbf Synapse requires registration to be explicit (#275) 2022-04-12 12:56:27 +01:00
Marco CirilloandGitHub 4f070244ce Amend README.md for antispam config example. (#271) 2022-04-06 18:20:49 +02:00
GnuxieandGitHub f63edbefa0 Make startup failures more controlled and understandable. (#270)
There is no reason to call process.exit() from `index.ts` or in `Mjolnir.start()` because

https://nodejs.org/api/process.html#warning-using-uncaughtexception-correctly

>The 'uncaughtException' event is emitted when an uncaught JavaScript exception bubbles all the way back to the event loop. By default, Node.js handles such exceptions by printing the stack trace to stderr and exiting with code 1, overriding any previously set process.exitCode. Adding a handler for the 'uncaughtException' event overrides this default behaviour.
2022-04-01 16:40:10 +01:00
GnuxieandGitHub fb7167773b Use github workflows to push dockerhub images+tags. (#265) 2022-03-28 15:25:31 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
31ef9065da Bump minimist from 1.2.5 to 1.2.6 (#260)
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-25 10:05:23 +00:00
gnuxie 4008e3f65d v1.4.1 v1.4.1 2022-03-21 14:28:21 +00:00
jesopo fccb4627ce show room ID in consequence log 2022-03-21 14:25:12 +00:00
jesopo afd003b905 remove line leftover from debugging 2022-03-21 14:11:45 +00:00
gnuxie fb027fe2af v1.4.0 v1.4.0 2022-03-21 12:32:32 +00:00
David RobertsonandGitHub 95d394b964 Merge pull request #246 from matrix-org/dmr/fix-check-username-as-spam
Fix block_usernames config option
2022-03-21 11:54:12 +00:00
David TellerandGitHub e05616b327 New command !mjolnir since <date or duration> <kick | ban | show> <limit> [reason] [...rooms] (#238)
A new command `since` to affect all users who have joined a protected room since a given date.
2022-03-21 10:39:15 +01:00
GnuxieandGitHub 814e528eaf Fix incorrect type deceleration in check_username_for_spam (#250)
Fixes https://github.com/matrix-org/mjolnir/issues/245
2022-03-18 17:20:53 +00:00
GnuxieandGitHub 48206a8524 Move message_limit into antispam. (#243)
* Move message_limit into antispam.

https://github.com/matrix-org/message_limit

Not ideal but we've had complaints about keeping them separate
and unfortunately the need for this module is not going to go away.
2022-03-18 11:07:21 +00:00
Jess PorterandGitHub 1880287ac4 standard protection consequences (#232)
* standard protection consequences

* add integration test to make sure good users aren't banned

* the less far `event` propagates, the better

* better document consequence.ts

* improve innocent user integration test

* switch to room.event emit
2022-03-18 10:11:23 +00:00
David Robertson 2c9fc0ccdc Fix block_usernames config option
Fixes #244.
2022-03-17 16:53:31 +00:00
David TellerandGitHub 26ae55cd24 A command to show when users in a given room have joined (#225) 2022-03-07 11:34:25 +01:00
Marco CirilloandGitHub 97df4d5f61 Add command to elevate a user (or the bot) as room administrator (#219) 2022-03-07 10:14:06 +01:00
jesopo 65af82d46f send whole channel shutdown reason, not just the first word 2022-03-02 10:20:43 +00:00
David TellerandGitHub eb7f5f6b3e Reduce stackspam (#237)
This should cut a lot on the noise in logs.
2022-02-25 17:59:34 +01:00
GnuxieandGitHub 17dd0aa173 Fix the test script yarn test:manual and add it to tsconfig (#234)
* Add test:manual launch script to tsconfig

this is so we won't keep breaking it
2022-02-24 14:46:15 +00:00
GnuxieandGitHub 7353ba4919 Make limit for ACL batcher more leniant for CI (#235) 2022-02-24 14:27:53 +00:00
David TellerandGitHub 82a2e63d23 A room Protection designed to measure lag in a room (#217) 2022-02-24 13:43:31 +01:00
gnuxie a3f77e1b39 v1.3.2 v1.3.2 2022-02-23 10:38:42 +00:00
GnuxieandGitHub 332da15d0d Remove old rules when unbanning entities from BanLists. (#227)
* Remove old rules when unbanning entities from BanLists.

Fixes #220
2022-02-21 16:51:14 +00:00
Jess PorterandGitHub a58c7d3f1a move LogProxy.logMessage to Mjolnir.logMessage (#194) 2022-02-15 15:44:41 +00:00
GnuxieandGitHub e9dff8fd5a Batch events from ban lists together during sync (#221)
* Test for batching ACL.

* Batch events from sync within BanList.

* Introduce the BanList.batch event to the BanList emitter to let Mjolnir sync after new events have been added from sync.

Fixes #203
2022-02-15 13:51:20 +00:00
Marco CirilloandGitHub 097829d75a Set missing CORS headers for Report API responses. (#222) 2022-02-15 09:19:13 +01:00
reivilibreandGitHub e49e4d05eb Use public imports for UserID and run_as_background_process (#175) 2022-02-11 10:13:16 +01:00