diff --git a/synapse/module_api/__init__.py b/synapse/module_api/__init__.py
index 39fce1ae93..b8455c0341 100644
--- a/synapse/module_api/__init__.py
+++ b/synapse/module_api/__init__.py
@@ -44,20 +44,6 @@ from synapse.events.presence_router import (
GET_USERS_FOR_STATES_CALLBACK,
PresenceRouter,
)
-from synapse.events.spamcheck import (
- CHECK_EVENT_FOR_SPAM_CALLBACK,
- CHECK_MEDIA_FILE_FOR_SPAM_CALLBACK,
- CHECK_REGISTRATION_FOR_SPAM_CALLBACK,
- CHECK_USERNAME_FOR_SPAM_CALLBACK,
- SHOULD_DROP_FEDERATED_EVENT_CALLBACK,
- USER_MAY_CREATE_ROOM_ALIAS_CALLBACK,
- USER_MAY_CREATE_ROOM_CALLBACK,
- USER_MAY_INVITE_CALLBACK,
- USER_MAY_JOIN_ROOM_CALLBACK,
- USER_MAY_PUBLISH_ROOM_CALLBACK,
- USER_MAY_SEND_3PID_INVITE_CALLBACK,
- SpamChecker,
-)
from synapse.events.third_party_rules import (
CHECK_CAN_DEACTIVATE_USER_CALLBACK,
CHECK_CAN_SHUTDOWN_ROOM_CALLBACK,
@@ -103,6 +89,20 @@ from synapse.module_api.callbacks.account_validity_callbacks import (
ON_LEGACY_SEND_MAIL_CALLBACK,
ON_USER_REGISTRATION_CALLBACK,
)
+from synapse.module_api.callbacks.spamchecker_callbacks import (
+ CHECK_EVENT_FOR_SPAM_CALLBACK,
+ CHECK_MEDIA_FILE_FOR_SPAM_CALLBACK,
+ CHECK_REGISTRATION_FOR_SPAM_CALLBACK,
+ CHECK_USERNAME_FOR_SPAM_CALLBACK,
+ SHOULD_DROP_FEDERATED_EVENT_CALLBACK,
+ USER_MAY_CREATE_ROOM_ALIAS_CALLBACK,
+ USER_MAY_CREATE_ROOM_CALLBACK,
+ USER_MAY_INVITE_CALLBACK,
+ USER_MAY_JOIN_ROOM_CALLBACK,
+ USER_MAY_PUBLISH_ROOM_CALLBACK,
+ USER_MAY_SEND_3PID_INVITE_CALLBACK,
+ SpamCheckerModuleApiCallbacks,
+)
from synapse.rest.client.login import LoginResponse
from synapse.storage import DataStore
from synapse.storage.background_updates import (
@@ -145,7 +145,7 @@ are loaded into Synapse.
"""
PRESENCE_ALL_USERS = PresenceRouter.ALL_USERS
-NOT_SPAM = SpamChecker.NOT_SPAM
+NOT_SPAM = SpamCheckerModuleApiCallbacks.NOT_SPAM
__all__ = [
"errors",
@@ -269,7 +269,6 @@ class ModuleApi:
self._public_room_list_manager = PublicRoomListManager(hs)
self._account_data_manager = AccountDataManager(hs)
- self._spam_checker = hs.get_spam_checker()
self._third_party_event_rules = hs.get_third_party_event_rules()
self._password_auth_provider = hs.get_password_auth_provider()
self._presence_router = hs.get_presence_router()
@@ -303,7 +302,7 @@ class ModuleApi:
Added in Synapse v1.37.0.
"""
- return self._spam_checker.register_callbacks(
+ return self._callbacks.spam_checker.register_callbacks(
check_event_for_spam=check_event_for_spam,
should_drop_federated_event=should_drop_federated_event,
user_may_join_room=user_may_join_room,
diff --git a/synapse/module_api/callbacks/__init__.py b/synapse/module_api/callbacks/__init__.py
index 422fa88256..1c59f99303 100644
--- a/synapse/module_api/callbacks/__init__.py
+++ b/synapse/module_api/callbacks/__init__.py
@@ -12,7 +12,13 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from typing import TYPE_CHECKING
+
+if TYPE_CHECKING:
+ from synapse.server import HomeServer
+
from .account_validity_callbacks import AccountValidityModuleApiCallbacks
+from .spamchecker_callbacks import SpamCheckerModuleApiCallbacks
__all__ = [
"AccountValidityModuleApiCallbacks",
@@ -21,5 +27,6 @@ __all__ = [
class ModuleApiCallbacks:
- def __init__(self) -> None:
+ def __init__(self, hs: "HomeServer") -> None:
self.account_validity = AccountValidityModuleApiCallbacks()
+ self.spam_checker = SpamCheckerModuleApiCallbacks(hs)
diff --git a/synapse/events/spamcheck.py b/synapse/module_api/callbacks/spamchecker_callbacks.py
index 623a2c71ea..4d839526bc 100644
--- a/synapse/events/spamcheck.py
+++ b/synapse/module_api/callbacks/spamchecker_callbacks.py
@@ -286,11 +286,10 @@ def load_legacy_spam_checkers(hs: "synapse.server.HomeServer") -> None:
api.register_spam_checker_callbacks(**hooks)
-class SpamChecker:
+class SpamCheckerModuleApiCallbacks:
NOT_SPAM: Literal["NOT_SPAM"] = "NOT_SPAM"
def __init__(self, hs: "synapse.server.HomeServer") -> None:
- self.hs = hs
self.clock = hs.get_clock()
self._check_event_for_spam_callbacks: List[CHECK_EVENT_FOR_SPAM_CALLBACK] = []
diff --git a/synapse/server.py b/synapse/server.py
index 4e1e758c87..a22b7d6565 100644
--- a/synapse/server.py
+++ b/synapse/server.py
@@ -40,7 +40,6 @@ from synapse.crypto.context_factory import RegularPolicyForHTTPS
from synapse.crypto.keyring import Keyring
from synapse.events.builder import EventBuilderFactory
from synapse.events.presence_router import PresenceRouter
-from synapse.events.spamcheck import SpamChecker
from synapse.events.third_party_rules import ThirdPartyEventRules
from synapse.events.utils import EventClientSerializer
from synapse.federation.federation_client import FederationClient
@@ -667,10 +666,6 @@ class HomeServer(metaclass=abc.ABCMeta):
return StatsHandler(self)
@cache_in_self
- def get_spam_checker(self) -> SpamChecker:
- return SpamChecker(self)
-
- @cache_in_self
def get_third_party_event_rules(self) -> ThirdPartyEventRules:
return ThirdPartyEventRules(self)
@@ -782,7 +777,7 @@ class HomeServer(metaclass=abc.ABCMeta):
@cache_in_self
def get_module_api_callbacks(self) -> ModuleApiCallbacks:
- return ModuleApiCallbacks()
+ return ModuleApiCallbacks(self)
@cache_in_self
def get_account_data_handler(self) -> AccountDataHandler:
|