| Crates.io | actix-ipquery |
| lib.rs | actix-ipquery |
| version | 0.1.5 |
| created_at | 2024-12-27 23:01:22.232398+00 |
| updated_at | 2024-12-27 23:28:56.228195+00 |
| description | A Rust library to retrieve info about IP of incoming requests for actix-web. |
| homepage | https://github.com/oblivisheee/actix-ipquery |
| repository | |
| max_upload_size | |
| id | 1496718 |
| size | 9,771 |
actix-ipquery is an Actix Web middleware that allows you to query IP information using the ipapi crate and store the results using a custom store that implements the IPQueryStore trait. It supports querying the IP address from either the X-Forwarded-For header or the peer address of the request.
X-Forwarded-For header for IP address extraction.Add the following to your Cargo.toml:
[dependencies]
actix-web = "4"
actix-ipquery = "*"
Here is a basic example of how to use actix-ipquery:
use actix_ipquery::{IPInfo, IPQuery, IPQueryStore};
use actix_web::{App, HttpServer};
#[actix_web::main]
async fn main() {
HttpServer::new(|| App::new().wrap(IPQuery::new(Store).finish()))
.bind("127.0.0.1:8080")
.unwrap()
.run()
.await
.unwrap()
}
#[derive(Clone)]
struct Store;
impl IPQueryStore for Store {
fn store(
&self,
ip_info: IPInfo,
) -> std::pin::Pin<
Box<dyn std::future::Future<Output = Result<(), std::io::Error>> + Send + 'static>,
> {
println!("{:?}", ip_info);
Box::pin(async { Ok(()) })
}
}
You can configure the middleware to use the X-Forwarded-For header:
let ip_query = IPQuery::new(MyStore)
.forwarded_for(true)
.finish();
This project is licensed under the MIT License.