Commit Graph

96 Commits

Author SHA1 Message Date
David Teller
a164a46038
Uniformize spam-checker API, part 4: port other spam-checker callbacks to return Union[Allow, Codes]. ()
Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
2022-06-13 18:16:16 +00:00
Patrick Cloke
9dc3293e0b
Consolidate the logic of delete_device/delete_devices. ()
By always using delete_devices and sometimes passing a list
with a single device ID.

Previously these methods had gotten out of sync with each
other and it seems there's little benefit to the single-device
variant.
2022-06-07 07:43:35 -04:00
Erik Johnston
888a29f412
Wait for lazy join to complete when getting current state () 2022-06-01 16:02:53 +01:00
Erik Johnston
3594f6c1f3 Merge branch 'master' into develop 2022-05-31 14:48:22 +01:00
Brendan Abolivier
8fd87739bf
Fix import in module_api module and docs on the new check_event_for_spam signature ()
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
2022-05-31 12:04:53 +02:00
Brendan Abolivier
cd9fc058de
Document the Synapse version of a new module API method () 2022-05-30 18:37:52 +02:00
Matt C
a7da00d4f7
Add storage and module API methods to get monthly active users and their appservices () 2022-05-27 10:25:57 +00:00
David Teller
28199e9357
Uniformize spam-checker API, part 2: check_event_for_spam ()
Signed-off-by: David Teller <davidt@element.io>
2022-05-23 17:27:39 +00:00
Jess Porter
a608ac847b
add SpamChecker callback for silently dropping inbound federated events ()
Signed-off-by: jesopo <github@lolnerd.net>
2022-05-23 16:36:21 +00:00
David Robertson
fa0eab9c8e
Use ParamSpec in a few places () 2022-05-09 10:27:39 +00:00
Brendan Abolivier
5ef673de4f
Add a module API to allow modules to edit push rule actions ()
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
2022-04-27 13:55:33 +00:00
David Robertson
6463244375
Remove unused # type: ignores ()
Over time we've begun to use newer versions of mypy, typeshed, stub
packages---and of course we've improved our own annotations. This makes
some type ignore comments no longer necessary. I have removed them.

There was one exception: a module that imports `select.epoll`. The
ignore is redundant on Linux, but I've kept it ignored for those of us
who work on the source tree using not-Linux. ()

I'm more interested in the config line which enforces this. I want
unused ignores to be reported, because I think it's useful feedback when
annotating to know when you've fixed a problem you had to previously
ignore.

* Installing extras before typechecking

Lacking an easy way to install all extras generically, let's bite the bullet and
make install the hand-maintained `all` extra before typechecking.

Now that https://github.com/matrix-org/backend-meta/pull/6 is merged to
the release/v1 branch.
2022-04-27 14:03:44 +01:00
reivilibre
85ca963c1a
Add Module API for reading and writing global account data. () 2022-04-11 10:05:43 +01:00
Brendan Abolivier
e4409301ba
Add a module callback to react to account data changes ()
Co-authored-by: Sean Quah <8349537+squahtx@users.noreply.github.com>
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
2022-04-01 11:22:48 +02:00
Amanda Graven
4e900ece42
Add set_user_admin function to the module API () 2022-04-01 09:31:30 +01:00
Brendan Abolivier
5e88143dff
Add a callback to react to 3PID associations () 2022-03-31 18:27:21 +02:00
Brendan Abolivier
8cd760fca8
Allow modules to store already existing 3PID associations () 2022-03-28 18:57:19 +02:00
Nicolas Werner
692b82838e
Allow registering admin users using the module API ()
Signed-off-by: Nicolas Werner <n.werner@famedly.com>
2022-03-23 12:48:47 +01:00
David Robertson
872dbb0181
Correct check_username_for_spam annotations and docs ()
* Formally type the UserProfile in user searches
* export UserProfile in synapse.module_api
* Update docs

Co-authored-by: Sean Quah <8349537+squahtx@users.noreply.github.com>
2022-03-18 13:51:41 +00:00
Will Hunt
15382b1afa
Add third_party module callbacks to check if a user can delete a room and deactivate a user ()
* Add check_can_deactivate_user

* Add check_can_shutdown_rooms

* Documentation

* callbacks, not functions

* Various suggested tweaks

* Add tests for test_check_can_shutdown_room and test_check_can_deactivate_user

* Update check_can_deactivate_user to not take a Requester

* Fix check_can_shutdown_room docs

* Renegade and use `by_admin` instead of `admin_user_id`

* fix lint

* Update docs/modules/third_party_rules_callbacks.md

Co-authored-by: Brendan Abolivier <babolivier@matrix.org>

* Update docs/modules/third_party_rules_callbacks.md

Co-authored-by: Brendan Abolivier <babolivier@matrix.org>

* Update docs/modules/third_party_rules_callbacks.md

Co-authored-by: Brendan Abolivier <babolivier@matrix.org>

* Update docs/modules/third_party_rules_callbacks.md

Co-authored-by: Brendan Abolivier <babolivier@matrix.org>

Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
2022-03-09 18:23:57 +00:00
Brendan Abolivier
ae8a616b49
Correctly register deactivation and profile update module callbacks () 2022-03-03 11:39:58 +01:00
Brendan Abolivier
300ed0b8a6
Add module callbacks called for reacting to deactivation status change and profile update () 2022-03-01 15:00:03 +00:00
Richard van der Hoff
e24ff8ebe3
Remove HomeServer.get_datastore() ()
The presence of this method was confusing, and mostly present for backwards
compatibility. Let's get rid of it.

Part of 
2022-02-23 11:04:02 +00:00
Patrick Cloke
444b04058b
Document why auth providers aren't validated in the admin API. ()
Since it is reasonable to give a future or past auth provider,
which might not be in the current configuration.
2022-02-18 17:24:25 +00:00
Brendan Abolivier
707049c6ff
Allow modules to set a display name on registration ()
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
2022-02-17 16:54:16 +00:00
Patrick Cloke
738e569ed2
Require that modules register their callbacks using keyword arguments. ()
To allow for easier backwards/forwards compatibility by making
it easier to add/remove callbacks.
2022-02-14 09:18:44 -05:00
Brendan Abolivier
0171fa5226
Remove deprecated user_may_create_room_with_invites callback ()
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
2022-02-11 13:58:11 +00:00
Brendan Abolivier
0640f8ebaa
Add a callback to allow modules to deny 3PID ()
Part of the Tchap Synapse mainlining.

This allows modules to implement extra logic to figure out whether a given 3PID can be added to the local homeserver. In the Tchap use case, this will allow a Synapse module to interface with the custom endpoint /internal_info.
2022-02-08 11:20:32 +01:00
Brendan Abolivier
5c16c33021
Allow modules to retrieve server and worker names ()
Fixes 
2022-02-01 16:23:55 +01:00
Brendan Abolivier
2d3bd9aa67
Add a module callback to set username at registration ()
This is in the context of mainlining the Tchap fork of Synapse. Currently in Tchap usernames are derived from the user's email address (extracted from the UIA results, more specifically the m.login.email.identity step).
This change also exports the check_username method from the registration handler as part of the module API, so that a module can check if the username it's trying to generate is correct and doesn't conflict with an existing one, and fallback gracefully if not.

Co-authored-by: David Robertson <davidr@element.io>
2022-01-26 14:21:13 +00:00
Sean Quah
eccc49d755
Fix ModuleApi.looping_background_call for non-async functions ()
After , `looping_background_call` would print an error in the logs
every time a non-async function was called. Since the error would be
caught and ignored immediately, there were no other side effects.
2021-12-07 11:41:31 +00:00
Quentin Gliech
a15a893df8
Save the OIDC session ID (sid) with the device on login ()
As a step towards allowing back-channel logout for OIDC.
2021-12-06 12:43:06 -05:00
Erik Johnston
d08ef6f155
Make background updates controllable via a plugin ()
Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
2021-11-29 17:57:06 +01:00
David Robertson
dc0a3cd596
disallow-untyped-defs for the module_api () 2021-11-29 11:28:12 +00:00
Patrick Cloke
55669bd3de
Add missing type hints to config base classes () 2021-11-23 15:21:19 +00:00
reivilibre
5f81c0ce9c
Add/Unerase annotations to Module API () 2021-11-18 16:55:33 +00:00
Patrick Cloke
5cace20bf1
Add missing type hints to synapse.app. () 2021-11-10 15:06:54 -05:00
Brendan Abolivier
ad4eab9862
Add a module API method to retrieve state from a room () 2021-10-29 16:28:29 +00:00
Brendan Abolivier
adc0d35b17
Add a ModuleApi method to update a user's membership in a room ()
Co-authored-by: reivilibre <oliverw@matrix.org>
2021-10-28 16:45:53 +00:00
Brendan Abolivier
8c8e36af0d
Document the version each module API method was added to Synapse () 2021-10-26 11:09:10 +02:00
Sean Quah
85a09f8b8b
Fix module API's get_user_ip_and_agents function when run on workers () 2021-10-25 13:01:04 +01:00
Azrenbeth
cdd308845b
Port the Password Auth Providers module interface to the new generic interface ()
Co-authored-by: Azrenbeth <7782548+Azrenbeth@users.noreply.github.com>
Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
2021-10-13 11:21:52 +00:00
reivilibre
2a2b189130
Mark Module API error imports as re-exported and mark Synapse as containing type annotations () 2021-10-13 08:42:41 +01:00
Sean Quah
36224e056a
Add type hints to synapse.storage.databases.main.client_ips () 2021-10-12 13:50:34 +01:00
Patrick Cloke
e584534403
Use direct references for some configuration variables (part 3) ()
This avoids the overhead of searching through the various
configuration classes by directly referencing the class that
the attributes are in.

It also improves type hints since mypy can now resolve the
types of the configuration variables.
2021-09-23 07:13:34 -04:00
David Teller
80828eda06
Extend ModuleApi with the methods we'll need to reject spam based on …IP - resolves ()
Extend ModuleApi with the methods we'll need to reject spam based on IP - resolves 

Signed-off-by: David Teller <davidt@element.io>
2021-09-22 13:09:43 +00:00
Patrick Cloke
4054dfa409
Add type hints for event streams. () 2021-09-21 13:34:26 -04:00
Patrick Cloke
01c88a09cd
Use direct references for some configuration variables ()
Instead of proxying through the magic getter of the RootConfig
object. This should be more performant (and is more explicit).
2021-09-13 13:07:12 -04:00
Erik Johnston
78a70a2e0b Merge branch 'release-v1.41' into develop 2021-08-18 17:02:47 +01:00
Erik Johnston
5581dd7bf7
Allow modules to run looping call on all instances ()
By default the calls only ran on the worker configured to run background
tasks.
2021-08-18 10:21:11 +00:00