mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2026-05-26 20:49:55 +00:00
refactor: Ruma upstraming, bake a little more
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user