diff --git a/Cargo.lock b/Cargo.lock index 216114af..d3c39aca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3652,7 +3652,7 @@ dependencies = [ [[package]] name = "ruma" version = "0.10.1" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=652cc4864203ab7ca60cf9c47b931c0385304cc7#652cc4864203ab7ca60cf9c47b931c0385304cc7" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "assign", "js_int", @@ -3672,7 +3672,7 @@ dependencies = [ [[package]] name = "ruma-appservice-api" version = "0.10.0" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=652cc4864203ab7ca60cf9c47b931c0385304cc7#652cc4864203ab7ca60cf9c47b931c0385304cc7" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "js_int", "ruma-common", @@ -3684,7 +3684,7 @@ dependencies = [ [[package]] name = "ruma-client-api" version = "0.18.0" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=652cc4864203ab7ca60cf9c47b931c0385304cc7#652cc4864203ab7ca60cf9c47b931c0385304cc7" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "as_variant", "assign", @@ -3707,7 +3707,7 @@ dependencies = [ [[package]] name = "ruma-common" version = "0.13.0" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=652cc4864203ab7ca60cf9c47b931c0385304cc7#652cc4864203ab7ca60cf9c47b931c0385304cc7" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "as_variant", "base64 0.22.1", @@ -3739,7 +3739,7 @@ dependencies = [ [[package]] name = "ruma-events" version = "0.28.1" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=652cc4864203ab7ca60cf9c47b931c0385304cc7#652cc4864203ab7ca60cf9c47b931c0385304cc7" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "as_variant", "indexmap 2.8.0", @@ -3764,7 +3764,7 @@ dependencies = [ [[package]] name = "ruma-federation-api" version = "0.9.0" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=652cc4864203ab7ca60cf9c47b931c0385304cc7#652cc4864203ab7ca60cf9c47b931c0385304cc7" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "bytes", "headers", @@ -3786,7 +3786,7 @@ dependencies = [ [[package]] name = "ruma-identifiers-validation" version = "0.9.5" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=652cc4864203ab7ca60cf9c47b931c0385304cc7#652cc4864203ab7ca60cf9c47b931c0385304cc7" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "js_int", "thiserror 2.0.12", @@ -3795,7 +3795,7 @@ dependencies = [ [[package]] name = "ruma-identity-service-api" version = "0.9.0" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=652cc4864203ab7ca60cf9c47b931c0385304cc7#652cc4864203ab7ca60cf9c47b931c0385304cc7" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "js_int", "ruma-common", @@ -3805,7 +3805,7 @@ dependencies = [ [[package]] name = "ruma-macros" version = "0.13.0" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=652cc4864203ab7ca60cf9c47b931c0385304cc7#652cc4864203ab7ca60cf9c47b931c0385304cc7" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "cfg-if", "proc-macro-crate", @@ -3820,7 +3820,7 @@ dependencies = [ [[package]] name = "ruma-push-gateway-api" version = "0.9.0" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=652cc4864203ab7ca60cf9c47b931c0385304cc7#652cc4864203ab7ca60cf9c47b931c0385304cc7" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "js_int", "ruma-common", @@ -3832,7 +3832,7 @@ dependencies = [ [[package]] name = "ruma-signatures" version = "0.15.0" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=652cc4864203ab7ca60cf9c47b931c0385304cc7#652cc4864203ab7ca60cf9c47b931c0385304cc7" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "base64 0.22.1", "ed25519-dalek", diff --git a/Cargo.toml b/Cargo.toml index c0f857c6..c5e70762 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -350,7 +350,7 @@ version = "0.1.2" [workspace.dependencies.ruma] git = "https://forgejo.ellis.link/continuwuation/ruwuma" #branch = "conduwuit-changes" -rev = "652cc4864203ab7ca60cf9c47b931c0385304cc7" +rev = "b3cb85becae3c1ecabe2c93138312ebb3632b728" features = [ "compat", "rand", diff --git a/src/api/server/invite.rs b/src/api/server/invite.rs index f53e1a15..d6f925f1 100644 --- a/src/api/server/invite.rs +++ b/src/api/server/invite.rs @@ -4,13 +4,8 @@ use base64::{Engine as _, engine::general_purpose}; use conduwuit::{ Err, Error, PduEvent, Result, err, pdu::gen_event_id, utils, utils::hash::sha256, warn, }; -use ruma::{ - CanonicalJsonValue, OwnedUserId, UserId, - api::{client::error::ErrorKind, federation::membership::create_invite}, - events::room::member::{MembershipState, RoomMemberEventContent}, - serde::JsonObject, -}; - +use ruma::{CanonicalJsonValue, OwnedUserId, UserId, api::{client::error::ErrorKind, federation::membership::create_invite}, events::room::member::{MembershipState, RoomMemberEventContent}, serde::JsonObject, RoomId, OwnedRoomId}; +use ruma::api::OutgoingRequest; use crate::Ruma; /// # `PUT /_matrix/federation/v2/invite/{roomId}/{eventId}` @@ -113,6 +108,22 @@ pub(crate) async fn create_invite_route( invite_state.push(pdu.to_stripped_state_event()); + // Check the invite against any user_may_invite callbacks + // let mut user_may_invite = UserMayInvitePayload { + // inviter: sender.to_owned(), + // invitee: invited_user, + // room_id: body.room_id.clone(), + // }; + for appservice in services.appservice.read().await.values() { + if let Some(callbacks) = &appservice.registration.callbacks { + if callbacks.user_may_invite.is_some() { + // let resp = services.sending.send_appservice_request(appservice.registration.clone(), + // &user_may_invite + // ); + } + } + } + // If we are active in the room, the remote server will notify us about the // join/invite through /send. If we are not in the room, we need to manually // record the invited state for client /sync through update_membership(), and