Allow specific users to send invalid events

This commit is contained in:
Tulir Asokan 2020-11-18 01:21:19 +02:00
parent aaf0bb2f50
commit c4710fb8cf
3 changed files with 16 additions and 7 deletions

View file

@ -34,7 +34,7 @@ class EventValidator:
event: The event to validate.
config: The homeserver's configuration.
"""
self.validate_builder(event)
self.validate_builder(event, config)
if event.format_version == EventFormatVersions.V1:
EventID.from_string(event.event_id)
@ -66,6 +66,10 @@ class EventValidator:
# checked, since we trust the portions of the event we created.
validate_canonicaljson(event.content)
# meow: allow specific users to send potentially dangerous events.
if event.sender in config.meow.validation_override:
return
if event.type == EventTypes.Aliases:
if "aliases" in event.content:
for alias in event.content["aliases"]:
@ -128,7 +132,7 @@ class EventValidator:
errcode=Codes.BAD_JSON,
)
def validate_builder(self, event: Union[EventBase, EventBuilder]):
def validate_builder(self, event: Union[EventBase, EventBuilder], config: HomeServerConfig):
"""Validates that the builder/event has roughly the right format. Only
checks values that we expect a proto event to have, rather than all the
fields an event would have
@ -146,6 +150,10 @@ class EventValidator:
RoomID.from_string(event.room_id)
UserID.from_string(event.sender)
# meow: allow specific users to send so-called invalid events
if event.sender in config.meow.validation_override:
return
if event.type == EventTypes.Message:
strings = ["body", "msgtype"]