Add a constant for m.federate. (#10775)

This commit is contained in:
Patrick Cloke 2021-09-08 10:00:43 -04:00 committed by GitHub
parent 66d72b7e17
commit 0288e6033b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 28 additions and 10 deletions

1
changelog.d/10775.misc Normal file
View File

@ -0,0 +1 @@
Add a constant for `m.federate`.

View File

@ -198,6 +198,9 @@ class EventContentFields:
# cf https://github.com/matrix-org/matrix-doc/pull/1772 # cf https://github.com/matrix-org/matrix-doc/pull/1772
ROOM_TYPE = "type" ROOM_TYPE = "type"
# Whether a room can federate.
FEDERATE = "m.federate"
# The creator of the room, as used in `m.room.create` events. # The creator of the room, as used in `m.room.create` events.
ROOM_CREATOR = "creator" ROOM_CREATOR = "creator"

View File

@ -21,7 +21,13 @@ from signedjson.key import decode_verify_key_bytes
from signedjson.sign import SignatureVerifyException, verify_signed_json from signedjson.sign import SignatureVerifyException, verify_signed_json
from unpaddedbase64 import decode_base64 from unpaddedbase64 import decode_base64
from synapse.api.constants import MAX_PDU_SIZE, EventTypes, JoinRules, Membership from synapse.api.constants import (
MAX_PDU_SIZE,
EventContentFields,
EventTypes,
JoinRules,
Membership,
)
from synapse.api.errors import AuthError, EventSizeError, SynapseError from synapse.api.errors import AuthError, EventSizeError, SynapseError
from synapse.api.room_versions import ( from synapse.api.room_versions import (
KNOWN_ROOM_VERSIONS, KNOWN_ROOM_VERSIONS,
@ -236,7 +242,7 @@ def _can_federate(event: EventBase, auth_events: StateMap[EventBase]) -> bool:
if not creation_event: if not creation_event:
return False return False
return creation_event.content.get("m.federate", True) is True return creation_event.content.get(EventContentFields.FEDERATE, True) is True
def _is_membership_change_allowed( def _is_membership_change_allowed(

View File

@ -21,7 +21,13 @@ from prometheus_client import Counter
from typing_extensions import TypedDict from typing_extensions import TypedDict
from synapse import types from synapse import types
from synapse.api.constants import MAX_USERID_LENGTH, EventTypes, JoinRules, LoginType from synapse.api.constants import (
MAX_USERID_LENGTH,
EventContentFields,
EventTypes,
JoinRules,
LoginType,
)
from synapse.api.errors import AuthError, Codes, ConsentNotGivenError, SynapseError from synapse.api.errors import AuthError, Codes, ConsentNotGivenError, SynapseError
from synapse.appservice import ApplicationService from synapse.appservice import ApplicationService
from synapse.config.server import is_threepid_reserved from synapse.config.server import is_threepid_reserved
@ -405,7 +411,7 @@ class RegistrationHandler(BaseHandler):
# Choose whether to federate the new room. # Choose whether to federate the new room.
if not self.hs.config.registration.autocreate_auto_join_rooms_federated: if not self.hs.config.registration.autocreate_auto_join_rooms_federated:
stub_config["creation_content"] = {"m.federate": False} stub_config["creation_content"] = {EventContentFields.FEDERATE: False}
for r in self.hs.config.registration.auto_join_rooms: for r in self.hs.config.registration.auto_join_rooms:
logger.info("Auto-joining %s to %s", user_id, r) logger.info("Auto-joining %s to %s", user_id, r)

View File

@ -390,9 +390,9 @@ class RoomCreationHandler(BaseHandler):
old_room_create_event = await self.store.get_create_event_for_room(old_room_id) old_room_create_event = await self.store.get_create_event_for_room(old_room_id)
# Check if the create event specified a non-federatable room # Check if the create event specified a non-federatable room
if not old_room_create_event.content.get("m.federate", True): if not old_room_create_event.content.get(EventContentFields.FEDERATE, True):
# If so, mark the new room as non-federatable as well # If so, mark the new room as non-federatable as well
creation_content["m.federate"] = False creation_content[EventContentFields.FEDERATE] = False
initial_state = {} initial_state = {}

View File

@ -313,7 +313,9 @@ class RoomListHandler(BaseHandler):
# Return whether this room is open to federation users or not # Return whether this room is open to federation users or not
create_event = current_state[EventTypes.Create, ""] create_event = current_state[EventTypes.Create, ""]
result["m.federate"] = create_event.content.get("m.federate", True) result["m.federate"] = create_event.content.get(
EventContentFields.FEDERATE, True
)
name_event = current_state.get((EventTypes.Name, "")) name_event = current_state.get((EventTypes.Name, ""))
if name_event: if name_event:

View File

@ -254,7 +254,7 @@ class StatsHandler:
elif typ == EventTypes.Create: elif typ == EventTypes.Create:
room_state["is_federatable"] = ( room_state["is_federatable"] = (
event_content.get("m.federate", True) is True event_content.get(EventContentFields.FEDERATE, True) is True
) )
elif typ == EventTypes.JoinRules: elif typ == EventTypes.JoinRules:
room_state["join_rules"] = event_content.get("join_rule") room_state["join_rules"] = event_content.get("join_rule")

View File

@ -22,7 +22,7 @@ from typing_extensions import Counter
from twisted.internet.defer import DeferredLock from twisted.internet.defer import DeferredLock
from synapse.api.constants import EventTypes, Membership from synapse.api.constants import EventContentFields, EventTypes, Membership
from synapse.api.errors import StoreError from synapse.api.errors import StoreError
from synapse.storage.database import DatabasePool from synapse.storage.database import DatabasePool
from synapse.storage.databases.main.state_deltas import StateDeltasStore from synapse.storage.databases.main.state_deltas import StateDeltasStore
@ -590,7 +590,7 @@ class StatsStore(StateDeltasStore):
room_state["canonical_alias"] = event.content.get("alias") room_state["canonical_alias"] = event.content.get("alias")
elif event.type == EventTypes.Create: elif event.type == EventTypes.Create:
room_state["is_federatable"] = ( room_state["is_federatable"] = (
event.content.get("m.federate", True) is True event.content.get(EventContentFields.FEDERATE, True) is True
) )
await self.update_room_state(room_id, room_state) await self.update_room_state(room_id, room_state)