Finish implementing the new join dance.

This commit is contained in:
Erik Johnston 2014-10-17 15:04:17 +01:00
parent 1116f5330e
commit f71627567b
6 changed files with 225 additions and 129 deletions

View file

@ -48,6 +48,15 @@ class Auth(object):
"""
try:
if hasattr(event, "room_id"):
if not event.old_state_events:
# Oh, we don't know what the state of the room was, so we
# are trusting that this is allowed (at least for now)
defer.returnValue(True)
if hasattr(event, "outlier") and event.outlier:
# TODO (erikj): Auth for outliers is done differently.
defer.returnValue(True)
is_state = hasattr(event, "state_key")
if event.type == RoomMemberEvent.TYPE:

View file

@ -51,12 +51,20 @@ class EventFactory(object):
self.clock = hs.get_clock()
self.hs = hs
self.event_id_count = 0
def create_event_id(self):
i = str(self.event_id_count)
self.event_id_count += 1
local_part = str(int(self.clock.time())) + i + random_string(5)
return "%s@%s" % (local_part, self.hs.hostname)
def create_event(self, etype=None, **kwargs):
kwargs["type"] = etype
if "event_id" not in kwargs:
kwargs["event_id"] = "%s@%s" % (
random_string(10), self.hs.hostname
)
kwargs["event_id"] = self.create_event_id()
if "ts" not in kwargs:
kwargs["ts"] = int(self.clock.time_msec())