fix(client-ip): Fall back to peer IP instead of returning 500

This commit is contained in:
Erwan Leboucher authored and Ellis Git committed 2026-07-17 12:46:11 +00:00
1 parent eff454218c
commit 3a74ce6151
28 files changed
+163 -48

No files matched your search

+1 -2
View File
@@ -1,5 +1,4 @@
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{
Err, Result, err, info,
pdu::PartialPdu,
@@ -27,7 +26,7 @@ use ruma::{
use service::{mailer::messages, uiaa::UiaaInitiator, users::HashedPassword};
use super::DEVICE_ID_LENGTH;
use crate::{Ruma, router::ClientIdentity};
use crate::{Ruma, client_ip::ClientIp, router::ClientIdentity};
pub(crate) mod register;
pub(crate) mod threepid;
+1 -2
View File
@@ -1,7 +1,6 @@
use std::collections::HashMap;
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{
Err, Result, debug_info, info,
utils::{self},
@@ -26,7 +25,7 @@ use service::{
};
use super::DEVICE_ID_LENGTH;
use crate::Ruma;
use crate::{Ruma, client_ip::ClientIp};
/// # `POST /_matrix/client/v3/register`
///
+1 -2
View File
@@ -1,5 +1,4 @@
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{Err, Result, at};
use futures::StreamExt;
use ruma::{
@@ -12,7 +11,7 @@ use ruma::{
assign,
};
use crate::Ruma;
use crate::{Ruma, client_ip::ClientIp};
const MAX_BATCH_EVENTS: usize = 50;
+1 -2
View File
@@ -1,5 +1,4 @@
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{Err, Result, debug, err, utils};
use futures::StreamExt;
use ruma::{
@@ -9,7 +8,7 @@ use ruma::{
},
};
use crate::{Ruma, client::DEVICE_ID_LENGTH};
use crate::{Ruma, client::DEVICE_ID_LENGTH, client_ip::ClientIp};
/// # `GET /_matrix/client/r0/devices`
///
+1 -2
View File
@@ -1,5 +1,4 @@
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{
Err, Result, err, info,
utils::{
@@ -28,7 +27,7 @@ use ruma::{
};
use tokio::join;
use crate::Ruma;
use crate::{Ruma, client_ip::ClientIp};
/// # `POST /_matrix/client/v3/publicRooms`
///
+1 -2
View File
@@ -1,7 +1,6 @@
use std::time::Duration;
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{
Err, Result, err,
utils::{self, content_disposition::make_content_disposition, math::ruma_from_usize},
@@ -24,7 +23,7 @@ use ruma::{
};
use service::media::mxc::Mxc;
use crate::Ruma;
use crate::{Ruma, client_ip::ClientIp};
/// # `GET /_matrix/client/v1/media/config`
pub(crate) async fn get_media_config_route(
+1 -2
View File
@@ -1,7 +1,6 @@
#![allow(deprecated)]
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{
Err, Result, err,
utils::{content_disposition::make_content_disposition, math::ruma_from_usize},
@@ -17,7 +16,7 @@ use ruma::{
};
use service::media::mxc::Mxc;
use crate::{Ruma, RumaResponse, client::create_content_route};
use crate::{Ruma, RumaResponse, client::create_content_route, client_ip::ClientIp};
/// # `GET /_matrix/media/v3/config`
///
+1 -2
View File
@@ -1,5 +1,4 @@
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{
Err, Result, debug_error, err, info,
matrix::{event::gen_event_id_canonical_json, pdu::PartialPdu},
@@ -18,7 +17,7 @@ use ruminuwuity::invite_permission_config::FilterLevel;
use service::Services;
use super::banned_room_check;
use crate::Ruma;
use crate::{Ruma, client_ip::ClientIp};
/// # `POST /_matrix/client/r0/rooms/{roomId}/invite`
///
+1 -2
View File
@@ -1,5 +1,4 @@
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{
Err, Result, debug,
result::FlatOk,
@@ -12,7 +11,7 @@ use ruma::{
};
use super::banned_room_check;
use crate::Ruma;
use crate::{Ruma, client_ip::ClientIp};
/// # `POST /_matrix/client/r0/rooms/{roomId}/join`
///
+1 -2
View File
@@ -1,7 +1,6 @@
use std::{borrow::Borrow, collections::HashMap, iter::once, sync::Arc};
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{
Err, Result, debug, debug_info, debug_warn, err, info,
matrix::{
@@ -40,7 +39,7 @@ use service::{
};
use super::banned_room_check;
use crate::Ruma;
use crate::{Ruma, client_ip::ClientIp};
/// # `POST /_matrix/client/*/knock/{roomIdOrAlias}`
///
+1 -2
View File
@@ -1,5 +1,4 @@
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{
Err, Error, Result, at, debug_warn,
matrix::{
@@ -38,7 +37,7 @@ use ruma::{
};
use ruminuwuity::invite_permission_config::FilterLevel;
use crate::Ruma;
use crate::{Ruma, client_ip::ClientIp};
/// list of safe and common non-state events to ignore if the user is ignored
const IGNORED_MESSAGE_TYPES: &[TimelineEventType] = &[
+1 -2
View File
@@ -1,7 +1,6 @@
use std::collections::BTreeMap;
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{Err, PduCount, Result, err};
use ruma::{
MilliSecondsSinceUnixEpoch,
@@ -13,7 +12,7 @@ use ruma::{
},
};
use crate::Ruma;
use crate::{Ruma, client_ip::ClientIp};
/// # `POST /_matrix/client/r0/rooms/{roomId}/read_markers`
///
+1 -2
View File
@@ -1,11 +1,10 @@
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{Err, Result, matrix::pdu::PartialPdu};
use ruma::{
api::client::redact::redact_event, assign, events::room::redaction::RoomRedactionEventContent,
};
use crate::Ruma;
use crate::{Ruma, client_ip::ClientIp};
/// # `PUT /_matrix/client/r0/rooms/{roomId}/redact/{eventId}/{txnId}`
///
+1 -2
View File
@@ -1,7 +1,6 @@
use std::{fmt::Write as _, time::Duration};
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{Err, Event, Result, debug_info, info, matrix::pdu::PduEvent, utils::ReadyExt};
use conduwuit_service::Services;
use ruma::{
@@ -14,7 +13,7 @@ use ruma::{
};
use tokio::time::sleep;
use crate::Ruma;
use crate::{Ruma, client_ip::ClientIp};
struct Report {
sender: OwnedUserId,
+1 -2
View File
@@ -1,10 +1,9 @@
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{Err, Result};
use ruma::api::client::room::get_summary;
use service::rooms::summary::Accessibility;
use crate::{Ruma, router::ClientIdentity};
use crate::{Ruma, client_ip::ClientIp, router::ClientIdentity};
/// # `GET /_matrix/client/v1/room_summary/{roomIdOrAlias}`
///
+1 -2
View File
@@ -1,12 +1,11 @@
use std::collections::BTreeMap;
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{Err, Result, err, matrix::pdu::PartialPdu, utils};
use ruma::{api::client::message::send_message_event, events::MessageLikeEventType};
use serde_json::from_str;
use crate::Ruma;
use crate::{Ruma, client_ip::ClientIp};
/// # `PUT /_matrix/client/v3/rooms/{roomId}/send/{eventType}/{txnId}`
///
+1 -2
View File
@@ -1,7 +1,6 @@
use std::time::Duration;
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{
Err, Result, debug, err, info,
utils::{self, ReadyExt, stream::BroadbandExt},
@@ -32,7 +31,7 @@ use ruma::{
use service::users::DeviceToken;
use super::DEVICE_ID_LENGTH;
use crate::Ruma;
use crate::{Ruma, client_ip::ClientIp};
/// # `GET /_matrix/client/v3/login`
///
+1 -2
View File
@@ -1,7 +1,6 @@
#[cfg(test)]
mod tests;
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{
Err, Result, err,
matrix::{Event, pdu::PartialPdu},
@@ -28,7 +27,7 @@ use ruma::{
};
use serde_json::{json, value::to_raw_value};
use crate::{Ruma, RumaResponse};
use crate::{Ruma, RumaResponse, client_ip::ClientIp};
/// # `PUT /_matrix/client/*/rooms/{roomId}/state/{eventType}/{stateKey}`
///
+1 -1
View File
@@ -9,7 +9,6 @@ use std::{
};
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{
Err, Result, at, error, extract_variant,
utils::{
@@ -48,6 +47,7 @@ use crate::{
is_ignored_invite,
sync::v3::{joined::load_joined_room, left::load_left_room},
},
client_ip::ClientIp,
};
/// The default maximum number of events to return in the `timeline` key of
+1 -1
View File
@@ -6,7 +6,6 @@ use std::{
};
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{
Err, Error, Result, at, error, extract_variant, is_equal_to,
matrix::{Event, TypeStateKey, pdu::PduCount},
@@ -49,6 +48,7 @@ use crate::{
client::{
DEFAULT_BUMP_TYPES, TimelinePdus, ignored_filter, is_ignored_invite, sync::load_timeline,
},
client_ip::ClientIp,
};
type SyncInfo<'a> = (&'a UserId, &'a DeviceId, u64, &'a sync_events::v5::Request);
+1 -2
View File
@@ -1,9 +1,8 @@
use axum::extract::State;
use axum_client_ip::ClientIp;
use conduwuit::{Err, Result, utils, utils::math::Tried};
use ruma::api::client::typing::create_typing_event::{self, v3::TypingInfo};
use crate::Ruma;
use crate::{Ruma, client_ip::ClientIp};
/// # `PUT /_matrix/client/r0/rooms/{roomId}/typing/{userId}`
///