diff --git a/src/webserver.rs b/src/webserver.rs index d0fa0c8..499b055 100644 --- a/src/webserver.rs +++ b/src/webserver.rs @@ -59,18 +59,23 @@ fn authenticate(tokens: HashMap) -> impl Filter()) - .and_then(|tokens: Arc>, token: AuthToken| { - async move { - if let Some(token) = token.token { - if tokens.contains(&token) { - return Ok(()); + .and(filters::addr::remote()) + .and_then( + |tokens: Arc>, token: AuthToken, peer_addr: Option| { + async move { + if let Some(addr) = peer_addr { + if let Some(token) = token.token { + if addr.ip().is_loopback() && tokens.contains(&token) { + return Ok(()); + } + } } + Err(warp::reject::custom(ActionStatus::Err { + reason: "Access Denied".into(), + })) } - Err(warp::reject::custom(ActionStatus::Err { - reason: "Access Denied".into(), - })) - } - }) + }, + ) .untuple_one() }