From d058db95e5d642ff79416ad6a11c2707b667517f Mon Sep 17 00:00:00 2001 From: asonix Date: Mon, 20 Apr 2020 13:02:25 -0500 Subject: [PATCH] Use get_ip in ratelimit middleware --- server/src/lib.rs | 7 +++---- server/src/rate_limit/mod.rs | 10 ++-------- server/src/routes/websocket.rs | 2 +- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/server/src/lib.rs b/server/src/lib.rs index 2d0ecc3a3..79a1437e7 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 bb77db29c..de45002eb 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 e1efdc0f5..808859451 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,