From: asonix Date: Mon, 20 Apr 2020 18:02:25 +0000 (-0500) Subject: Use get_ip in ratelimit middleware X-Git-Url: http://these/git/%22https:/image.com/readmes/README.ru.md?a=commitdiff_plain;h=d058db95e5d642ff79416ad6a11c2707b667517f;p=lemmy.git Use get_ip in ratelimit middleware --- diff --git a/server/src/lib.rs b/server/src/lib.rs index 2d0ecc3a..79a1437e 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -34,7 +34,7 @@ pub mod settings; pub mod version; pub mod websocket; -use actix_web::HttpRequest; +use actix_web::dev::ConnectionInfo; use chrono::{DateTime, NaiveDateTime, Utc}; use isahc::prelude::*; use lettre::smtp::authentication::{Credentials, Mechanism}; @@ -233,9 +233,8 @@ pub fn markdown_to_html(text: &str) -> String { comrak::markdown_to_html(text, &comrak::ComrakOptions::default()) } -pub fn get_ip(req: &HttpRequest) -> String { - req - .connection_info() +pub fn get_ip(conn_info: &ConnectionInfo) -> String { + conn_info .remote() .unwrap_or("127.0.0.1:12345") .split(':') diff --git a/server/src/rate_limit/mod.rs b/server/src/rate_limit/mod.rs index bb77db29..de45002e 100644 --- a/server/src/rate_limit/mod.rs +++ b/server/src/rate_limit/mod.rs @@ -2,6 +2,7 @@ pub mod rate_limiter; use super::{IPAddr, Settings}; use crate::api::APIError; +use crate::get_ip; use crate::settings::RateLimitConfig; use actix_web::dev::{Service, ServiceRequest, ServiceResponse, Transform}; use failure::Error; @@ -181,14 +182,7 @@ where } fn call(&mut self, req: S::Request) -> Self::Future { - let ip_addr = req - .connection_info() - .remote() - .unwrap_or("127.0.0.1:12345") - .split(':') - .next() - .unwrap_or("127.0.0.1") - .to_string(); + let ip_addr = get_ip(&req.connection_info()); let fut = self .rate_limited diff --git a/server/src/routes/websocket.rs b/server/src/routes/websocket.rs index e1efdc0f..80885945 100644 --- a/server/src/routes/websocket.rs +++ b/server/src/routes/websocket.rs @@ -18,7 +18,7 @@ pub async fn chat_route( cs_addr: chat_server.get_ref().to_owned(), id: 0, hb: Instant::now(), - ip: get_ip(&req), + ip: get_ip(&req.connection_info()), }, &req, stream,