mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-02 10:46:06 -04:00
Validation for events/rooms in fed requests
When we get a federation request which refers to an event id, make sure that said event is in the room the caller claims it is in. (patch supplied by @turt2live)
This commit is contained in:
parent
6284f579bf
commit
0a65450d04
3 changed files with 64 additions and 1 deletions
|
@ -295,6 +295,35 @@ class EventFederationWorkerStore(EventsWorkerStore, SignatureWorkerStore,
|
|||
get_forward_extremeties_for_room_txn
|
||||
)
|
||||
|
||||
def get_room_ids_for_events(self, event_ids):
|
||||
"""Get a list of room IDs for which the given events belong.
|
||||
|
||||
Args:
|
||||
event_ids (list): the events to look up the room of
|
||||
|
||||
Returns:
|
||||
list, the room IDs for the events
|
||||
"""
|
||||
return self.runInteraction(
|
||||
"get_room_ids_for_events",
|
||||
self._get_room_ids_for_events, event_ids
|
||||
)
|
||||
|
||||
def _get_room_ids_for_events(self, txn, event_ids):
|
||||
logger.debug("_get_room_ids_for_events: %s", repr(event_ids))
|
||||
|
||||
base_sql = (
|
||||
"SELECT DISTINCT room_id FROM events"
|
||||
" WHERE event_id IN (%s)"
|
||||
)
|
||||
|
||||
txn.execute(
|
||||
base_sql % (",".join(["?"] * len(event_ids)),),
|
||||
event_ids
|
||||
)
|
||||
|
||||
return [r[0] for r in txn]
|
||||
|
||||
def get_backfill_events(self, room_id, event_list, limit):
|
||||
"""Get a list of Events for a given topic that occurred before (and
|
||||
including) the events in event_list. Return a list of max size `limit`
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue