Add flag which disables federation of the room

This commit is contained in:
Erik Johnston 2015-09-01 15:09:23 +01:00
parent 236245f7d8
commit a88e16152f
2 changed files with 21 additions and 3 deletions

View file

@ -20,7 +20,7 @@ from twisted.internet import defer
from synapse.api.constants import EventTypes, Membership, JoinRules
from synapse.api.errors import AuthError, Codes, SynapseError
from synapse.util.logutils import log_function
from synapse.types import UserID
from synapse.types import EventID, RoomID, UserID
import logging
@ -65,6 +65,15 @@ class Auth(object):
# FIXME
return True
creating_domain = RoomID.from_string(event.room_id).domain
originating_domain = EventID.from_string(event.event_id).domain
if creating_domain != originating_domain:
if not self.can_federate(event, auth_events):
raise SynapseError(
403,
"This room has been marked as unfederatable."
)
# FIXME: Temp hack
if event.type == EventTypes.Aliases:
return True
@ -153,6 +162,11 @@ class Auth(object):
user_id, room_id, repr(member)
))
def can_federate(self, event, auth_events):
creation_event = auth_events.get((EventTypes.Create, ""))
return creation_event.content.get("m.federate", True) is True
@log_function
def is_membership_change_allowed(self, event, auth_events):
membership = event.content["membership"]