actix-ipquery 0.1.3

A Rust library to retrieve info about IP of incoming requests for actix-web.
Documentation
actix-ipquery-0.1.3 has been yanked.

actix-ipquery

Overview

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.

Features

  • Query IP information using a specified endpoint.
  • Store IP information using a custom store.
  • Option to use the X-Forwarded-For header for IP address extraction.

Installation

Add the following to your Cargo.toml:

[dependencies]
actix-web = "4"
actix-ipquery = "*"

Usage

Here is a basic example of how to use actix-ipquery:

use actix_web::{web, App, HttpServer};
use actix_ipquery::{IPQuery, IPQueryStore};

#[derive(Clone)]
struct MyStore;

impl IPQueryStore for MyStore {
    fn store(&self, ip_info: ipapi::IPInfo) -> Result<(), std::io::Error> {
        println!("{:?}", ip_info);
        Ok(())
    }
}

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| {
        App::new()
            .wrap(IPQuery::new(MyStore).finish())
            .route("/", web::get().to(|| async { "Hello, world!" }))
    })
    .bind("127.0.0.1:8080")?
    .run()
    .await
}

Configuration

You can configure the middleware to use a custom endpoint and the X-Forwarded-For header:

let ip_query = IPQuery::new(MyStore)
    .endpoint("https://custom.endpoint/")
    .forwarded_for(true)
    .finish();

License

This project is licensed under the MIT License.