diff options
author | Shav Kinderlehrer <[email protected]> | 2024-04-07 14:59:07 -0400 |
---|---|---|
committer | Shav Kinderlehrer <[email protected]> | 2024-04-07 14:59:07 -0400 |
commit | 2405c9cf315f3bba470a2d373089ff011a20572e (patch) | |
tree | 41a0ebc0c14b47d0956a9c6961d1bb7bd111ee4c /src/get.rs | |
parent | 1075ab0ed187a10f2eb3faf1247da8661531bbdb (diff) | |
download | chela-2405c9cf315f3bba470a2d373089ff011a20572e.tar.gz chela-2405c9cf315f3bba470a2d373089ff011a20572e.zip |
Use correct IP in logs
Diffstat (limited to 'src/get.rs')
-rw-r--r-- | src/get.rs | 37 |
1 files changed, 22 insertions, 15 deletions
@@ -43,7 +43,10 @@ pub async fn id( Path(id): Path<String>, ) -> impl IntoResponse { let mut show_request = false; - log!("Request for '{}' from {}", id.clone(), addr.ip()); + let ip = get_ip(headers.clone(), addr, state.clone()) + .await + .unwrap_or_default(); + log!("Request for '{}' from {}", id.clone(), ip); let mut use_id = id; if use_id.ends_with('+') { show_request = true; @@ -93,20 +96,7 @@ pub async fn id( async fn save_analytics(headers: HeaderMap, item: UrlRow, addr: SocketAddr, state: ServerState) { let id = item.id; - let ip: Option<String> = if state.behind_proxy { - match headers.get("x-real-ip") { - Some(it) => { - if let Ok(i) = it.to_str() { - Some(i.to_string()) - } else { - None - } - } - None => None, - } - } else { - Some(addr.ip().to_string()) - }; + let ip = get_ip(headers.clone(), addr, state.clone()).await; let referer = match headers.get("referer") { Some(it) => { if let Ok(i) = it.to_str() { @@ -146,6 +136,23 @@ VALUES ($1,$2,$3,$4) } } +async fn get_ip(headers: HeaderMap, addr: SocketAddr, state: ServerState) -> Option<String> { + if state.behind_proxy { + match headers.get("x-real-ip") { + Some(it) => { + if let Ok(i) = it.to_str() { + Some(i.to_string()) + } else { + None + } + } + None => None, + } + } else { + Some(addr.ip().to_string()) + } +} + pub async fn create_id(Extension(state): Extension<ServerState>) -> Html<String> { Html(format!( r#" |