refactor: Ruma upstraming, bake a little more

This commit is contained in:
Jade Ellis
2026-04-07 14:40:10 +01:00
committed by Ginger
parent 204bc1367e
commit a4e64383b7
115 changed files with 1907 additions and 1504 deletions
@@ -109,7 +109,10 @@ where
match self
.services
.sending
.send_federation_request(origin, get_event::v1::Request::new((*next_id).to_owned()))
.send_federation_request(
origin,
get_event::v1::Request::new((*next_id).to_owned()),
)
.await
{
| Ok(res) => {
@@ -31,7 +31,10 @@ where
let res = self
.services
.sending
.send_federation_request(origin, get_room_state_ids::v1::Request::new(event_id.to_owned(), room_id.to_owned()))
.send_federation_request(
origin,
get_room_state_ids::v1::Request::new(event_id.to_owned(), room_id.to_owned()),
)
.await
.inspect_err(|e| debug_warn!("Fetching state for event failed: {e}"))?;
@@ -182,7 +182,8 @@ pub async fn handle_incoming_pdu<'a>(
// copied from https://github.com/element-hq/synapse/blob/7e4588a/synapse/handlers/federation_event.py#L255-L300
if value.get("type").and_then(|t| t.as_str()) == Some("m.room.member") {
if let Some(pdu) =
should_rescind_invite(&self.services, &mut value.clone(), &sender, room_id).await?
should_rescind_invite(&self.services, &mut value.clone(), &sender, room_id)
.await?
{
debug_info!(
"Invite to {room_id} appears to have been rescinded by {sender}, marking as \
@@ -42,7 +42,9 @@ where
// 2. Check signatures, otherwise drop
// 3. check content hash, redact if doesn't match
let room_version = get_room_version(create_event)?;
let room_rules = room_version.rules().expect("room version should have defined rules");
let room_rules = room_version
.rules()
.expect("room version should have defined rules");
let mut incoming_pdu = match self
.services
.server_keys
+1 -1
View File
@@ -119,4 +119,4 @@ fn get_room_version<Pdu: Event>(create_event: &Pdu) -> Result<RoomVersionId> {
let room_version = content.room_version;
Ok(room_version)
}
}
@@ -5,7 +5,8 @@ use conduwuit::{
matrix::event::{gen_event_id, gen_event_id_canonical_json},
};
use itertools::Itertools;
use ruma::{CanonicalJsonObject, CanonicalJsonValue, OwnedEventId, OwnedRoomId, RoomVersionId};
use ruma::{
CanonicalJsonObject, CanonicalJsonValue, OwnedEventId, OwnedRoomId, RoomVersionId, };
use serde_json::value::RawValue as RawJsonValue;
type Parsed = (OwnedRoomId, OwnedEventId, CanonicalJsonObject);
@@ -10,16 +10,17 @@ use conduwuit::{
warn,
};
use ruma::{
CanonicalJsonObject, CanonicalJsonValue, KeyId, OwnedKeyId, RoomId, ServerName, SigningKeyId, events::StateEventType
CanonicalJsonObject, CanonicalJsonValue, KeyId, OwnedKeyId, RoomId, ServerName, SigningKeyId,
events::StateEventType,
};
use ruminuwuity::policy::{
policy_check::unstable::Request as PolicyCheckRequest,
event::RoomPolicyEventContent, policy_check::unstable::Request as PolicyCheckRequest,
policy_sign::unstable::Request as PolicySignRequest,
event::RoomPolicyEventContent
};
use serde_json::value::RawValue;
static POLICY_EVENT_TYPE_UNSTABLE: LazyLock<StateEventType> = LazyLock::new(|| StateEventType::from("org.matrix.msc4284.policy"));
static POLICY_EVENT_TYPE_UNSTABLE: LazyLock<StateEventType> =
LazyLock::new(|| StateEventType::from("org.matrix.msc4284.policy"));
/// Asks a remote policy server if the event is allowed.
///
@@ -88,7 +89,12 @@ pub async fn ask_policy_server(
return Ok(true);
},
};
if !self.services.state_cache.server_in_room(&via, room_id).await {
if !self
.services
.state_cache
.server_in_room(&via, room_id)
.await
{
debug!(
via = %via,
"Policy server is not in the room, skipping spam check"
@@ -132,15 +138,13 @@ pub async fn ask_policy_server(
via = %via,
"Checking event for spam with policy server via legacy check"
);
let mut request = PolicyCheckRequest::new(pdu.event_id().to_owned());
request.pdu = Some(outgoing);
let response = tokio::time::timeout(
Duration::from_secs(self.services.server.config.policy_server_request_timeout),
self.services
.sending
.send_federation_request(&via, request),
self.services.sending.send_federation_request(&via, request),
)
.await;
let response = match response {
@@ -112,7 +112,13 @@ where
{
let event_fetch = |event_id| self.event_fetch(event_id);
let event_exists = |event_id| self.event_exists(event_id);
state_res::resolve(room_version_rules, state_sets, auth_chain_sets, &event_fetch, &event_exists)
.map_err(|e| err!(error!("State resolution failed: {e:?}")))
.await
state_res::resolve(
room_version_rules,
state_sets,
auth_chain_sets,
&event_fetch,
&event_exists,
)
.map_err(|e| err!(error!("State resolution failed: {e:?}")))
.await
}
@@ -53,7 +53,9 @@ where
);
let timer = Instant::now();
let room_version_id = get_room_version(create_event)?;
let room_version_rules = room_version_id.rules().expect("room version should have defined rules");
let room_version_rules = room_version_id
.rules()
.expect("room version should have defined rules");
// 10. Fetch missing state and auth chain events by calling /state_ids at
// backwards extremities doing all the checks in this list starting at 1.