mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2026-05-26 20:49:55 +00:00
refactor: Fix errors in admin/debug/commands.rs
This commit is contained in:
@@ -573,18 +573,6 @@
|
|||||||
#
|
#
|
||||||
#allow_public_room_directory_over_federation = false
|
#allow_public_room_directory_over_federation = false
|
||||||
|
|
||||||
# Allow guests/unauthenticated users to access TURN credentials.
|
|
||||||
#
|
|
||||||
# This is the equivalent of Synapse's `turn_allow_guests` config option.
|
|
||||||
# This allows any unauthenticated user to call the endpoint
|
|
||||||
# `/_matrix/client/v3/voip/turnServer`.
|
|
||||||
#
|
|
||||||
# It is unlikely you need to enable this as all major clients support
|
|
||||||
# authentication for this endpoint and prevents misuse of your TURN server
|
|
||||||
# from potential bots.
|
|
||||||
#
|
|
||||||
#turn_allow_guests = false
|
|
||||||
|
|
||||||
# Set this to true to lock down your server's public room directory and
|
# Set this to true to lock down your server's public room directory and
|
||||||
# only allow admins to publish rooms to the room directory. Unpublishing
|
# only allow admins to publish rooms to the room directory. Unpublishing
|
||||||
# is still allowed by all users with this enabled.
|
# is still allowed by all users with this enabled.
|
||||||
|
|||||||
+34
-18
@@ -79,12 +79,14 @@ pub(super) async fn parse_pdu(&self) -> Result {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let string = self.body[1..self.body.len().saturating_sub(1)].join("\n");
|
let string = self.body[1..self.body.len().saturating_sub(1)].join("\n");
|
||||||
|
let room_version_rules = RoomVersionId::V12.rules().unwrap();
|
||||||
|
|
||||||
match serde_json::from_str(&string) {
|
match serde_json::from_str(&string) {
|
||||||
| Err(e) => return Err!("Invalid json in command body: {e}"),
|
| Err(e) => return Err!("Invalid json in command body: {e}"),
|
||||||
| Ok(value) => match ruma::signatures::reference_hash(&value, &RoomVersionId::V6) {
|
| Ok(value) => match ruma::signatures::reference_hash(&value, &room_version_rules) {
|
||||||
| Err(e) => return Err!("Could not parse PDU JSON: {e:?}"),
|
| Err(e) => return Err!("Could not parse PDU JSON: {e:?}"),
|
||||||
| Ok(hash) => {
|
| Ok(hash) => {
|
||||||
let event_id = OwnedEventId::parse(format!("${hash}"));
|
let event_id = EventId::parse(format!("${hash}"));
|
||||||
match serde_json::from_value::<PduEvent>(serde_json::to_value(value)?) {
|
match serde_json::from_value::<PduEvent>(serde_json::to_value(value)?) {
|
||||||
| Err(e) => return Err!("EventId: {event_id:?}\nCould not parse event: {e}"),
|
| Err(e) => return Err!("EventId: {event_id:?}\nCould not parse event: {e}"),
|
||||||
| Ok(pdu) => write!(self, "EventId: {event_id:?}\n{pdu:#?}"),
|
| Ok(pdu) => write!(self, "EventId: {event_id:?}\n{pdu:#?}"),
|
||||||
@@ -237,10 +239,10 @@ pub(super) async fn get_remote_pdu(
|
|||||||
match self
|
match self
|
||||||
.services
|
.services
|
||||||
.sending
|
.sending
|
||||||
.send_federation_request(&server, ruma::api::federation::event::get_event::v1::Request {
|
.send_federation_request(
|
||||||
event_id: event_id.clone(),
|
&server,
|
||||||
include_unredacted_content: None,
|
ruma::api::federation::event::get_event::v1::Request::new(event_id.clone()),
|
||||||
})
|
)
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
| Err(e) => {
|
| Err(e) => {
|
||||||
@@ -330,9 +332,9 @@ pub(super) async fn ping(&self, server: OwnedServerName) -> Result {
|
|||||||
match self
|
match self
|
||||||
.services
|
.services
|
||||||
.sending
|
.sending
|
||||||
.send_federation_request(
|
.send_unauthenticated_request(
|
||||||
&server,
|
&server,
|
||||||
ruma::api::federation::discovery::get_server_version::v1::Request {},
|
ruma::api::federation::discovery::get_server_version::v1::Request::new(),
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
@@ -361,7 +363,7 @@ pub(super) async fn force_device_list_updates(&self) -> Result {
|
|||||||
self.services
|
self.services
|
||||||
.users
|
.users
|
||||||
.stream()
|
.stream()
|
||||||
.for_each(|user_id| self.services.users.mark_device_key_update(user_id))
|
.for_each(async |user_id| self.services.users.mark_device_key_update(&user_id).await)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
write!(self, "Marked all devices for all users as having new keys to update").await
|
write!(self, "Marked all devices for all users as having new keys to update").await
|
||||||
@@ -430,9 +432,16 @@ pub(super) async fn verify_json(&self) -> Result {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let string = self.body[1..self.body.len().checked_sub(1).unwrap()].join("\n");
|
let string = self.body[1..self.body.len().checked_sub(1).unwrap()].join("\n");
|
||||||
|
let room_version_rules = RoomVersionId::V12.rules().unwrap();
|
||||||
|
|
||||||
match serde_json::from_str::<CanonicalJsonObject>(&string) {
|
match serde_json::from_str::<CanonicalJsonObject>(&string) {
|
||||||
| Err(e) => return Err!("Invalid json: {e}"),
|
| Err(e) => return Err!("Invalid json: {e}"),
|
||||||
| Ok(value) => match self.services.server_keys.verify_json(&value, None).await {
|
| Ok(value) => match self
|
||||||
|
.services
|
||||||
|
.server_keys
|
||||||
|
.verify_json(&value, &room_version_rules)
|
||||||
|
.await
|
||||||
|
{
|
||||||
| Err(e) => return Err!("Signature verification failed: {e}"),
|
| Err(e) => return Err!("Signature verification failed: {e}"),
|
||||||
| Ok(()) => write!(self, "Signature correct"),
|
| Ok(()) => write!(self, "Signature correct"),
|
||||||
},
|
},
|
||||||
@@ -445,9 +454,15 @@ pub(super) async fn verify_pdu(&self, event_id: OwnedEventId) -> Result {
|
|||||||
use ruma::signatures::Verified;
|
use ruma::signatures::Verified;
|
||||||
|
|
||||||
let mut event = self.services.rooms.timeline.get_pdu_json(&event_id).await?;
|
let mut event = self.services.rooms.timeline.get_pdu_json(&event_id).await?;
|
||||||
|
let room_version_rules = RoomVersionId::V12.rules().unwrap();
|
||||||
|
|
||||||
event.remove("event_id");
|
event.remove("event_id");
|
||||||
let msg = match self.services.server_keys.verify_event(&event, None).await {
|
let msg = match self
|
||||||
|
.services
|
||||||
|
.server_keys
|
||||||
|
.verify_event(&event, &room_version_rules)
|
||||||
|
.await
|
||||||
|
{
|
||||||
| Err(e) => return Err(e),
|
| Err(e) => return Err(e),
|
||||||
| Ok(Verified::Signatures) => "signatures OK, but content hash failed (redaction).",
|
| Ok(Verified::Signatures) => "signatures OK, but content hash failed (redaction).",
|
||||||
| Ok(Verified::All) => "signatures and hashes OK.",
|
| Ok(Verified::All) => "signatures and hashes OK.",
|
||||||
@@ -544,16 +559,17 @@ pub(super) async fn force_set_room_state_from_server(
|
|||||||
};
|
};
|
||||||
|
|
||||||
let room_version = self.services.rooms.state.get_room_version(&room_id).await?;
|
let room_version = self.services.rooms.state.get_room_version(&room_id).await?;
|
||||||
|
let room_version_rules = room_version.rules().unwrap();
|
||||||
|
|
||||||
let mut state: HashMap<u64, OwnedEventId> = HashMap::new();
|
let mut state: HashMap<u64, OwnedEventId> = HashMap::new();
|
||||||
|
|
||||||
let remote_state_response = self
|
let remote_state_response = self
|
||||||
.services
|
.services
|
||||||
.sending
|
.sending
|
||||||
.send_federation_request(&server_name, get_room_state::v1::Request {
|
.send_federation_request(
|
||||||
room_id: room_id.clone(),
|
&server_name,
|
||||||
event_id: at_event_id,
|
get_room_state::v1::Request::new(at_event_id, room_id.clone()),
|
||||||
})
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
for pdu in remote_state_response.pdus.clone() {
|
for pdu in remote_state_response.pdus.clone() {
|
||||||
@@ -576,7 +592,7 @@ pub(super) async fn force_set_room_state_from_server(
|
|||||||
for result in remote_state_response.pdus.iter().map(|pdu| {
|
for result in remote_state_response.pdus.iter().map(|pdu| {
|
||||||
self.services
|
self.services
|
||||||
.server_keys
|
.server_keys
|
||||||
.validate_and_add_event_id(pdu, &room_version)
|
.validate_and_add_event_id(pdu, &room_version_rules)
|
||||||
}) {
|
}) {
|
||||||
let Ok((event_id, value)) = result.await else {
|
let Ok((event_id, value)) = result.await else {
|
||||||
continue;
|
continue;
|
||||||
@@ -608,7 +624,7 @@ pub(super) async fn force_set_room_state_from_server(
|
|||||||
for result in remote_state_response.auth_chain.iter().map(|pdu| {
|
for result in remote_state_response.auth_chain.iter().map(|pdu| {
|
||||||
self.services
|
self.services
|
||||||
.server_keys
|
.server_keys
|
||||||
.validate_and_add_event_id(pdu, &room_version)
|
.validate_and_add_event_id(pdu, &room_version_rules)
|
||||||
}) {
|
}) {
|
||||||
let Ok((event_id, value)) = result.await else {
|
let Ok((event_id, value)) = result.await else {
|
||||||
continue;
|
continue;
|
||||||
@@ -625,7 +641,7 @@ pub(super) async fn force_set_room_state_from_server(
|
|||||||
.services
|
.services
|
||||||
.rooms
|
.rooms
|
||||||
.event_handler
|
.event_handler
|
||||||
.resolve_state(&room_id, &room_version, state)
|
.resolve_state(&room_id, &room_version_rules, state)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
info!("Compressing new room state");
|
info!("Compressing new room state");
|
||||||
|
|||||||
Reference in New Issue
Block a user