* Test UnbanCommand and UnbanPrompt have unbanned as a side effect.
You'd think it would be obvious, but clearly it hasn't been. Part of
the reason for it is just how un-ergonomic it used to be to verify
room state. Fortunately it's quite straight forward to do since MPS
has picked up. So now we can do it easily.
* Update for MPS 2.5.2.
- Fix SchemedMatrixData putting the wrong version number into data.
Sadly a complication of
https://github.com/the-draupnir-project/Draupnir/issues/560.
- Fix an issue where the implementation of the RoomUnbanner capability
was actually calling `/ban`.
* Update README for 2.0.0.
* Mjolnir link.
Thanks to feedback from @mahdi1234.
* Update antispam plugin link.
* Typo in sentance
Thanks to @ll-SKY-ll for spotting meow.
Fixes https://github.com/the-draupnir-project/Draupnir/issues/667.
[2.5.1] - 2025-01-14
Fixed
- An issue with the `SetRoomMembershipRevisionIssuer` that would allow
duplicate listeners to be added to rooms that were already in the
set. This would cause lots of issues with downstream revision
listeners. We've hardened code downstream, e.g. with the
`MembershipPolicyRevisionIssuer`, in case this happens again.
This change makes the ban reason when a user sends a banned word generic, and instead sends the banned word in the management room directly. This prevents the banned word from persisting in the room timeline after redacting the original event.
Signed-off-by: nexy7574 <git@nexy7574.co.uk>
Fixes https://github.com/the-draupnir-project/Draupnir/issues/258
Fixes https://github.com/the-draupnir-project/Draupnir/issues/408
Fixes https://github.com/the-draupnir-project/Draupnir/issues/409
* Create a way to only forward reports in WebAPIs.
Honestly, I'm going to revert this because I think I have found a
better way of testing the report poller.
* Begin improving and fixing the report poller.
We need to change the ReportManager so that we can interface it out
for testing. The reason being that the report poller is inactive
in the harness and so we can't use that with a protection handle
to test. Instead I want to instantiate a report poller with
a mocked report manager.
* Update integration test nginx to mirror reports to synapse.
We need this so that we can test the report poller without needing to
do gymnastics to selectively forward reports.
* Interface out ReportManager.
Needed so we can test the report poller without doing gymnastics with
setting up fake protections.
* Fix report poller from paginating over the same reports.
https://github.com/the-draupnir-project/planning/issues/38.
* Revert "Create a way to only forward reports in WebAPIs."
This reverts commit 59b335f658.
We don't need this anymore.
* Update for MPS v2.4.0
Gives us the synapse admin client, updates schema, and gives us the fix for https://github.com/the-draupnir-project/Draupnir/issues/560
Fixes#649. Only members who have the `join` membership state will be kicked, which means that not only will banned members not be implicitly unbanned (bug in ruma, and conduits), but draupnir will also no-longer send no-op leave events.
---------
Signed-off-by: nexy7574 <git@nexy7574.co.uk>
Fixes#458. Thought this was a fluke at first since I only changed one word, but it appears to work reliably and as intended.
Signed-off-by: nexy7574 <git@nexy7574.co.uk>
Fixes the issue displayed in #579 and #559
(fixes#579, fixes#559)
This PR simply adds a check to the start of the execution chain for WordList and BasicFlooding that just returns an Ok result when the event sender was the client's user ID.
I just tested this and can confirm that this prevents the reported loops in WordList and BasicFlooding, as intended.
---------
Signed-off-by: nexy7574 <git@nexy7574.co.uk>
This was printing arguments as their JSON serialized representation
rather than their text presentation.
It also couldn't handle missing arguments.
We also verified that writing the protection name wrong for the commands
will give you a message saying that the protection doesn't exist,
rather than showing the help command.
* Stop using `setSerializedValue` on protection settings.
We don't need it now that we've updated the command reader.
* Update interface-manager and MPS.
* Enable standard presentation type translators.
This will fix issues with the ban command reason.
- We add the status command that was missing and show how other protections could add their own commands to Draupnir.
- We changed the token system to use a "lazy"[^lazy] version of leaky bucket, which isn't perfect but what was happening before was the protection counted the joins in the elapsed time, and then dropped them all rather than rolling over.
- We've given it a general tidy
The reason for this is because I want to use this protection to write generic documentation (a tutorial) on how to configure protections.
[^lazy]: "lazy" in the sense that we don't bother to remove tokens all the time, only when a token gets added, which is fine because the throughput on room joins will be tiny.
* Add command to change the active capability provider of a protection.
* Update MPS for persistent capability set config.
The command will actually persist the chosen capabilities
across startup.
Before the prompt would only show when there were rules matching the unbanned user. Now we only decide to hide the prompt when there are no rules and no room bans.
Fixes the unban propagation side of https://github.com/the-draupnir-project/Draupnir/issues/622.
I don't think this has been a problem but it messes up the dev environment
if you want to link all of draupnir's dependencies like matrix-protection-suite,
interface-manager and so on.