Add room version check to event auth and room_version to StateEvent
This commit is contained in:
parent
07807974f7
commit
63be0b550f
@ -23,8 +23,7 @@ thiserror = "1.0.20"
|
|||||||
tracing-subscriber = "0.2.11"
|
tracing-subscriber = "0.2.11"
|
||||||
|
|
||||||
# [dependencies.ruma]
|
# [dependencies.ruma]
|
||||||
# git = "https://github.com/ruma/ruma"
|
# path = "../__forks__/ruma/ruma"
|
||||||
# rev = "d5d2d1d893fa12d27960e4c58d6c09b215d06e95"
|
|
||||||
# features = ["client-api", "federation-api", "appservice-api"]
|
# features = ["client-api", "federation-api", "appservice-api"]
|
||||||
|
|
||||||
[dependencies.ruma]
|
[dependencies.ruma]
|
||||||
|
@ -105,10 +105,21 @@ pub fn auth_check(
|
|||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// check the event has been signed by the domain of the sender
|
||||||
if event.signatures().get(sender_domain).is_none() && !is_invite_via_3pid {
|
if event.signatures().get(sender_domain).is_none() && !is_invite_via_3pid {
|
||||||
tracing::warn!("event not signed by sender's server");
|
tracing::warn!("event not signed by sender's server");
|
||||||
return Some(false);
|
return Some(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if event.room_version() == RoomVersionId::Version1
|
||||||
|
&& event
|
||||||
|
.signatures()
|
||||||
|
.get(event.event_id().server_name().unwrap())
|
||||||
|
.is_none()
|
||||||
|
{
|
||||||
|
tracing::warn!("event not signed by event_id's server");
|
||||||
|
return Some(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO do_size_check is false when called by `iterative_auth_check`
|
// TODO do_size_check is false when called by `iterative_auth_check`
|
||||||
@ -128,7 +139,6 @@ pub fn auth_check(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// if content.room_version is present and is not a valid version
|
// if content.room_version is present and is not a valid version
|
||||||
// TODO check this out (what event has this as content?)
|
|
||||||
if serde_json::from_value::<RoomVersionId>(
|
if serde_json::from_value::<RoomVersionId>(
|
||||||
event
|
event
|
||||||
.content()
|
.content()
|
||||||
|
@ -352,12 +352,6 @@ impl StateResolution {
|
|||||||
|
|
||||||
tracing::debug!("{:?}", (-*pl, *ev.origin_server_ts(), ev.event_id()));
|
tracing::debug!("{:?}", (-*pl, *ev.origin_server_ts(), ev.event_id()));
|
||||||
|
|
||||||
// count_0.sort_by(|(x, _), (y, _)| {
|
|
||||||
// x.power_level
|
|
||||||
// .cmp(&a.power_level)
|
|
||||||
// .then_with(|| x.origin_server.ts.cmp(&y.origin_server_ts))
|
|
||||||
// .then_with(|| x.event_id.cmp(&y.event_id))
|
|
||||||
|
|
||||||
// This return value is the key used for sorting events,
|
// This return value is the key used for sorting events,
|
||||||
// events are then sorted by power level, time,
|
// events are then sorted by power level, time,
|
||||||
// and lexically by event_id.
|
// and lexically by event_id.
|
||||||
|
@ -8,7 +8,7 @@ use ruma::{
|
|||||||
room::member::{MemberEventContent, MembershipState},
|
room::member::{MemberEventContent, MembershipState},
|
||||||
EventDeHelper, EventType,
|
EventDeHelper, EventType,
|
||||||
},
|
},
|
||||||
identifiers::{EventId, RoomId, ServerName, UserId},
|
EventId, RoomId, RoomVersionId, ServerName, UserId,
|
||||||
};
|
};
|
||||||
use serde::{de, Serialize};
|
use serde::{de, Serialize};
|
||||||
use serde_json::value::RawValue as RawJsonValue;
|
use serde_json::value::RawValue as RawJsonValue;
|
||||||
@ -332,6 +332,23 @@ impl StateEvent {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the room version this event is formatted for.
|
||||||
|
///
|
||||||
|
/// Currently either version 1 or 3 is returned, 3 represents
|
||||||
|
/// version 3 and above.
|
||||||
|
pub fn room_version(&self) -> RoomVersionId {
|
||||||
|
match self {
|
||||||
|
Self::Full(ev) => match ev {
|
||||||
|
Pdu::RoomV1Pdu(_) => RoomVersionId::Version1,
|
||||||
|
Pdu::RoomV3Pdu(_) => RoomVersionId::Version3,
|
||||||
|
},
|
||||||
|
Self::Sync(ev) => match ev {
|
||||||
|
PduStub::RoomV1PduStub(_) => RoomVersionId::Version1,
|
||||||
|
PduStub::RoomV3PduStub(_) => RoomVersionId::Version3,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'de> de::Deserialize<'de> for StateEvent {
|
impl<'de> de::Deserialize<'de> for StateEvent {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user