mirror of
https://github.com/stalwartlabs/mail-server.git
synced 2025-09-10 05:54:16 +08:00
Revert forwarded-for fixes
This commit is contained in:
parent
d5de5d0e79
commit
f64a098fae
2 changed files with 393 additions and 367 deletions
742
Cargo.lock
generated
742
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -666,7 +666,6 @@ impl ParseHttp for Server {
|
|||
async fn handle_session<T: SessionStream>(inner: Arc<Inner>, session: SessionData<T>) {
|
||||
let _in_flight = session.in_flight;
|
||||
let is_tls = session.stream.is_tls();
|
||||
let mut remote_ip = session.remote_ip;
|
||||
|
||||
if let Err(http_err) = http1::Builder::new()
|
||||
.keep_alive(true)
|
||||
|
@ -680,12 +679,14 @@ async fn handle_session<T: SessionStream>(inner: Arc<Inner>, session: SessionDat
|
|||
let server = inner.build_server();
|
||||
|
||||
// Obtain remote IP
|
||||
if !server.core.jmap.http_use_forwarded {
|
||||
let remote_ip = if !server.core.jmap.http_use_forwarded {
|
||||
trc::event!(
|
||||
Http(trc::HttpEvent::RequestUrl),
|
||||
SpanId = session.session_id,
|
||||
Url = req.uri().to_string(),
|
||||
);
|
||||
|
||||
session.remote_ip
|
||||
} else if let Some(forwarded_for) = req
|
||||
.headers()
|
||||
.get(header::FORWARDED)
|
||||
|
@ -746,13 +747,14 @@ async fn handle_session<T: SessionStream>(inner: Arc<Inner>, session: SessionDat
|
|||
Url = req.uri().to_string(),
|
||||
);
|
||||
|
||||
remote_ip = forwarded_for;
|
||||
forwarded_for
|
||||
} else {
|
||||
trc::event!(
|
||||
Http(trc::HttpEvent::XForwardedMissing),
|
||||
SpanId = session.session_id,
|
||||
);
|
||||
}
|
||||
session.remote_ip
|
||||
};
|
||||
|
||||
// Parse HTTP request
|
||||
let response = match Box::pin(server.parse_http_request(
|
||||
|
@ -812,12 +814,16 @@ async fn handle_session<T: SessionStream>(inner: Arc<Inner>, session: SessionDat
|
|||
.await
|
||||
{
|
||||
if http_err.is_parse() {
|
||||
match inner.build_server().is_scanner_fail2banned(remote_ip).await {
|
||||
match inner
|
||||
.build_server()
|
||||
.is_scanner_fail2banned(session.remote_ip)
|
||||
.await
|
||||
{
|
||||
Ok(true) => {
|
||||
trc::event!(
|
||||
Security(SecurityEvent::ScanBan),
|
||||
SpanId = session.session_id,
|
||||
RemoteIp = remote_ip,
|
||||
RemoteIp = session.remote_ip,
|
||||
Reason = http_err.to_string(),
|
||||
);
|
||||
return;
|
||||
|
|
Loading…
Add table
Reference in a new issue