1 files changed, 34 insertions, 1 deletions
diff --git a/synapse/handlers/_base.py b/synapse/handlers/_base.py
index de4d23bbb3..f630280031 100644
--- a/synapse/handlers/_base.py
+++ b/synapse/handlers/_base.py
@@ -14,7 +14,16 @@
# limitations under the License.
from twisted.internet import defer
+
from synapse.api.errors import LimitExceededError
+from synapse.util.async import run_on_reactor
+from synapse.crypto.event_signing import add_hashes_and_signatures
+
+import logging
+
+
+logger = logging.getLogger(__name__)
+
class BaseHandler(object):
@@ -30,6 +39,9 @@ class BaseHandler(object):
self.clock = hs.get_clock()
self.hs = hs
+ self.signing_key = hs.config.signing_key[0]
+ self.server_name = hs.hostname
+
def ratelimit(self, user_id):
time_now = self.clock.time()
allowed, time_allowed = self.ratelimiter.send_message(
@@ -44,9 +56,30 @@ class BaseHandler(object):
@defer.inlineCallbacks
def _on_new_room_event(self, event, snapshot, extra_destinations=[],
- extra_users=[]):
+ extra_users=[], suppress_auth=False):
+ yield run_on_reactor()
+
snapshot.fill_out_prev_events(event)
+ yield self.state_handler.annotate_state_groups(event)
+
+ yield self.auth.add_auth_events(event)
+
+ logger.debug("Signing event...")
+
+ add_hashes_and_signatures(
+ event, self.server_name, self.signing_key
+ )
+
+ logger.debug("Signed event.")
+
+ if not suppress_auth:
+ logger.debug("Authing...")
+ self.auth.check(event, raises=True)
+ logger.debug("Authed")
+ else:
+ logger.debug("Suppressed auth.")
+
yield self.store.persist_event(event)
destinations = set(extra_destinations)
|