Commit Graph
620 Commits
Author SHA1 Message Date
Gnuxie bef21850e8 Use --forbid-only flag in integration test suite. (#97)
Yes this has happened again, at least we know how to fix it now.
2023-09-07 14:13:26 +01:00
gnuxie 9d841697b2 Rework RoomUpdateErrors to be CommandErrors or CommandExceptions
https://github.com/Gnuxie/Draupnir/pull/93/
2023-09-05 19:53:02 +01:00
gnuxie 3ec37e3fe8 Introduce concept of Known and Unknown exceptions.
Sometimes we don't need exceptions to be reported on the error level.
This is especially true when the user does something out of order
and there's a permission error.
If we're aware of that possibility as developers and have accounted
for it, then it's unnecessary for it to be treated the same way
as a fatal error.

We also decided to log CommandExceptions and CommandErrors as
early as possible.

https://github.com/Gnuxie/Draupnir/pull/93/
2023-09-05 19:53:02 +01:00
gnuxie 73601687a8 Add UnbanPropagation BanPropagationProtection.
https://github.com/Gnuxie/Draupnir/pull/93/
2023-09-05 19:53:02 +01:00
gnuxie 29a8bec086 Bring various documentation up to date with current events. 2023-09-04 20:44:11 +01:00
gnuxie 2a4829dc1e Use <details> for error detail.
https://matrix.to/#/!IaWNErZAgQUhGqJXjX:matrix.org/$634tyYnNJK_zpNb4wH1zHbYeMOsDBHMpwdWPg1GdAEU?via=matrix.org&via=the-apothecary.club&via=envs.net
2023-09-04 15:25:35 +01:00
gnuxie e8847a2524 Allow Draupnir to ignore m.room.server_acl
https://github.com/Gnuxie/Draupnir/pull/85
2023-09-04 15:25:35 +01:00
gnuxie 1e82c15d82 Add font tag to DeadDocument
https://github.com/Gnuxie/Draupnir/pull/85
2023-09-04 15:25:35 +01:00
gnuxie ea49b0a536 Use JSX for the protected rooms set's printActionResult.
We've done this to make the implementation a lot cleaner and
managable. However, we've taken the opportunity to simplify
all of the client code that would use this method.

Some of these simplifications might come at a small cost.
Updating server ACL, member bans and checking power levels
would all be clearly titled as seperate checks.
However, it should still be obvious what has gone wrong,
since any error would have to give a more detailed explanation.
And not everything is going to fail all at once (and if it does,
there are bigger issues).

a lot cleaner
https://github.com/Gnuxie/Draupnir/pull/85
2023-09-04 15:25:35 +01:00
gnuxie 601aa33bc6 Remove Mjolnir's ErrorCache.
A bizarre contraption.
The ErrorCache was seemingly introduced to reduce the number of errors
in the management room.
https://github.com/matrix-org/mjolnir/commit/82214c6cd88d83abed05fec4a871a874e6e0265b
It makes sense why it was added if you consider that many admins
will run Draupnir without giving it the permission to manage server
ACL in its rooms. Though, I'm not sure why then you would add the error
cache rather than properly supporting that use case.
So perhaps there were other reasons.
Either way, what is drawing the line for me is that the ErrorCache
will suppress any error within rooms that is not a permission error,
if there was any error that was not a permission error within a
15 minute window.
Considering the typical Draupnir will not even sync
for hours at a time, even in large communities.
It does present a problem for rooms with a lot of join/leave events.
I think that's probably why the error cache was added.

Ahh, well, fuck.

Well what is the real solution to this?

The real solution when the kind is acl is to allow the bot to run
without applying ACLs.

Ok fine but, hey wait a minute.
Why would there be any other kind of persistent error
when banning someone that would be unimportant enough to silently
hide in an ErrorCache??

IDK let's just add an opttion to disable server ACL,
since they might want to use another tool for that anyhow.

Out of scope for the current work though.
https://github.com/Gnuxie/Draupnir/pull/85
2023-09-04 15:25:35 +01:00
Aminda Suomalainen bc0fc7c25a package.json: refer to https clone url (#90)
Signed-off-by: Aminda Suomalainen <suomalainen+git@mikaela.info>
2023-09-04 12:38:07 +01:00
dependabot[bot] c9cc5693ac Bump matrix-appservice-bridge from 8.1.1 to 8.1.2 (#71)
Bumps [matrix-appservice-bridge](https://github.com/matrix-org/matrix-appservice-bridge) from 8.1.1 to 8.1.2.
- [Release notes](https://github.com/matrix-org/matrix-appservice-bridge/releases)
- [Changelog](https://github.com/matrix-org/matrix-appservice-bridge/blob/8.1.2/CHANGELOG.md)
- [Commits](https://github.com/matrix-org/matrix-appservice-bridge/compare/8.1.1...8.1.2)

---
updated-dependencies:
- dependency-name: matrix-appservice-bridge
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 12:37:09 +01:00
Marcel 0de9ad3333 Add command that allows to easily set the Displayname of a bot (#91)
This adds the `displayname` command which just sets the displayname of the user.

-----

* Add command that allows to easily set the Displayname of a bot

* Only set the displayname once

* Add missing matrix interface adaptor and use CommandError

* Make displaynames with spaces work
2023-09-04 12:34:26 +01:00
Marcel f55d8a453d Add health endpoint to appservice and add metrics via prometheus (#70)
This adds a `/healthz` endpoint to the appservice which allows this to work more nicely in kubernetes.

It also adds some metrics for tracking the provisioning state.

Grafana result:
![image](https://github.com/Gnuxie/Draupnir/assets/1374914/9426c8e6-2c1c-469c-8902-1b9e2b6db529)

Note: The ts-ignore are sadly required since the `_getValue` method is not public :/ I didnt find another solution apart from tracking it maybe elsewhere.

* Add health endpoint to appservice and add metrics via prometheus

* Ensure that we dont have duplicate metrics when the appservice is registered multiple times

* Move gauge modifications to utils function

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Fix typo
2023-09-04 12:32:26 +01:00
Marcel 2ea8ddf864 Use the new help style on the appservice commands and add missing descriptions for the arguments (#69)
* Use the new help style on the appservice commands and add missing descriptions for the arguments

* Make the first letter of the table name uppercase in the help table
2023-09-04 12:30:50 +01:00
Aminda Suomalainen e3925afc3b .editorconfig: fix invalid value s/off/unset/g (#86)
* .editorconfig: s/off/unset/g

This was breaking prettier and neovim as apparently off was invalid value

* .editorconfig: merge the two unset rule blocks
2023-09-01 11:28:29 +01:00
Gnuxie 0a7305b8fa A simple script for testing room membership query. (#81)
https://github.com/Gnuxie/Draupnir/issues/80
2023-08-29 13:56:33 +01:00
Aminda Suomalainenandgnuxie e4c02b96cd Add pre-commit configuration (#34)
* add .pre-commit-config.yaml

Signed-off-by: Aminda Suomalainen <suomalainen+git@mikaela.info>

* .editorconfig: decrease indent size for text

* .pre-commit-config.yaml: remove prettier

Signed-off-by: Aminda Suomalainen <suomalainen+git@mikaela.info>

* .editorconfig consistency.

* .pre-commit-config.yaml: restore sample hooks

* .editorconfig: disable indent_size for LICENSE & NOTICE

* pre-commit run --all-files

* tsconfig.json: tabs to spaces

* .pre-commit-config.yaml: update editorconfig-checker to 2.7.2

* .editorconfig: disable indent_size for markdown

* mjolnir-entrypoint.sh: retab

* .editorconfig: also exclude json from indent checking

* test/nginx.conf: retab

* test/integration/commands/redactCommandTest.ts: remove leading space

* retab or remove leading whitespaces for the rest of the files

* src/appservice/datastore.ts remove newlines

* test/integration/commands/roomTest.ts: remove leading space.

---------

Signed-off-by: Aminda Suomalainen <suomalainen+git@mikaela.info>
Co-authored-by: gnuxie <Gnuxie@protonmail.com>
2023-08-29 13:38:00 +01:00
Gnuxie 56ddbdf96c Failure to ban a single member should not stop other bans being applied. (#79)
Fixes https://github.com/Gnuxie/Draupnir/issues/74.
2023-08-28 16:38:24 +01:00
Catalan Loverandgnuxie 53d79f5ded D4A: Give the requesting user admin in management room at creation. (#73)
The requesting user would previously be unable to manage the room in order to change the room name etc.

Co-authored-by: gnuxie <Gnuxie@protonmail.com>
2023-08-28 12:38:48 +01:00
Marcel 39e2b50c13 Add a missing dash to the docker command in the appservice documentation (#61) 2023-08-22 17:40:37 +01:00
Marcel 1f9d37564b Update to typescript 5 (#68) 2023-08-19 14:46:23 +01:00
dependabot[bot] e64aded3bd Bump word-wrap from 1.2.3 to 1.2.4 (#67)
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-20 12:39:04 +01:00
dependabot[bot] 18f5f59a4e Bump semver from 5.7.1 to 5.7.2 (#66)
Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-19 18:03:44 +01:00
gnuxie df432121de v1.84.0 v1.84.0 2023-07-04 17:31:46 +01:00
Gnuxie c11fb6ef06 Fix an issue where protected rooms could not be removed. (#65)
This was introduced in https://github.com/Gnuxie/Draupnir/pull/54/ (and therefore 1.83.0). Essentially we forgot to remove the room from the protected rooms set, when the remove command was used.

Ontop of this something to note is that during testing it is clear that the protected rooms set is loaded when configuring mjolnir, not when starting it. This is problematic as it means setup code in `fixtures.ts` does not actually wipe the protected rooms set.
2023-07-04 17:19:03 +01:00
Marcel 8894e29606 Multiarch CI fixes (#59)
* Also build arm images

* Increase docker timeout for qemu and install missing parts in CI for multiplatform building
2023-06-12 23:34:38 +01:00
Marcel b3f0c6e222 Also build arm images (#58)
Based on https://www.docker.com/blog/multi-arch-build-and-images-the-simple-way/
https://github.com/docker/build-push-action and https://docs.docker.com/engine/reference/commandline/buildx_build/#platform
2023-06-12 15:09:00 +01:00
Gnuxie ea3947df9f Typo unwatching lists. (#55)
This is actually really bad.
For multiple reasons.
The best way for this to be avoided is to drop everything
and reload it when the account data for watched lists is changed.
Then there isn't a situation where you have to inform anyone
about a change in what lists are being watched.
2023-06-08 17:03:42 +01:00
Gnuxie bed8f72686 v1.83.0 v1.83.0 2023-05-31 17:44:11 +01:00
Gnuxie 17dedbd531 Merge pull request #54 from Gnuxie/gnuxie/rooms-command-upgrade
Use interface manager for "rooms", "rooms add" and "rooms remove" commands.
2023-05-30 11:28:22 +01:00
gnuxie fe349d42fb Clear up the "rooms add" error message when a room cannot be joined. 2023-05-30 11:14:49 +01:00
gnuxie e4689b1287 basic conversion of rooms commands to interface adaptor 2023-05-30 11:14:49 +01:00
gnuxie 89e25786f5 Support matrix.to URLs as MatrixRoomReferences in CommandReader. 2023-05-30 11:14:49 +01:00
gnuxie 006ba3dd1e Improve error reporting of CommandException 2023-05-30 11:14:49 +01:00
Gnuxie 8e1f930240 Merge pull request #52 from Gnuxie/gnuxie/update-to-node-18
Update to node 18.
2023-05-13 15:45:30 +01:00
Gnuxie 3ad7079216 Appservice test: postgres container networking.
The docker network is ipv4 but we tell node it can use `localhost`
which it then tries to connect to via ipv6.
2023-05-13 15:32:17 +01:00
Gnuxie c16c5d29e1 Integration tests convenience nginx should listen to ipv6 too. 2023-05-13 15:21:21 +01:00
gnuxie 3c007083f7 v1.82.0 v1.82.0 2023-05-13 03:09:38 +01:00
Gnuxie 88bf0acf5e Add the sender when showing a policy rule change. (#51)
![image](https://github.com/Gnuxie/Draupnir/assets/50846879/1e445d60-d816-4bd1-bec2-c6b4128793d7)

Mainly useful for Community Moderation Effort.
2023-05-10 23:07:32 +01:00
gnuxie c14fbeb183 Update github actions workflows to use node 18. 2023-05-10 20:10:13 +01:00
gnuxie 74312e43f6 Update to node 18.
End of life was moved forwards by 7 months so we don't have a choice.
https://nodejs.org/en/blog/announcements/nodejs16-eol.
2023-05-10 19:57:17 +01:00
GnuxieandMarco Cirillo 9f43e1186b Incorperate Do not interrupt redact sequences due to error when backfilling (#50)
* Do not interrupt redact sequences due to error when backfilling

... Mainly timeouts.

* Change caught redaction error LogLevel from DEBUG to ERROR.

From matrix-org/mjolnir#479

---------

Co-authored-by: Marco Cirillo <marco.cirillo@aria-net.org>
2023-05-03 16:56:17 +01:00
Gnuxie 99e6f168ca Appservice convenience (#47)
Canonicalise the existence of the "admin room" for managing the appservice and Draupnir instances

* Add utilities for managing users in the admin room

* Merge the appservice admin room and access control list.

The majority of admins will need to use the draupnir admin commands
to manage the list.

* Utility methods for creating generic rules in PolicyLists.

* Commands for managing appservice users.
2023-05-03 16:31:28 +01:00
Gnuxie 449e48b486 Detail about important Draupnir concepts and context. (#48)
* Detail about important Draupnir concepts and context.

Stuff that is essential to understand if there's any hope of
maintaining this shit.

* Notes about the ban command.

* link to context in CONTRIBUTING.
2023-05-03 16:25:41 +01:00
dependabot[bot] 4e0e832855 Bump yaml from 2.1.1 to 2.2.2 (#49)
Bumps [yaml](https://github.com/eemeli/yaml) from 2.1.1 to 2.2.2.
- [Release notes](https://github.com/eemeli/yaml/releases)
- [Commits](https://github.com/eemeli/yaml/compare/v2.1.1...v2.2.2)

---
updated-dependencies:
- dependency-name: yaml
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-28 22:30:02 +01:00
Gnuxie 9e8783312a Use matrix-appservice-bridge's PostgreSQL datastore for Draupnir appservice (#46)
* use matrix-appservice-bridge support for postgres

* upgrade matrix-appservice-bridge to include postgres fixes.

These are unreleased and a specific develop commit, but we're the only ones
who have made changes so far to the develop branch,
so should be fine.

* Upgrade matrix-appservice-bridge to 8.1.1.

8.0.1 was never added to npm for some weird reason.
2023-03-31 18:16:23 +01:00
gnuxie d8ef8a94d9 v1.81.4 v1.81.4 2023-03-28 22:01:47 +01:00
gnuxie 2d78cbbee5 Remember to resolve policy lists where we can. 2023-03-28 22:00:50 +01:00
gnuxie 7de96bda34 v1.81.3 v1.81.3 2023-03-28 20:01:27 +01:00