#api #pi-hole #api-bindings

pi-hole-api

与Pi Hole PHP API交互的库

9个版本

0.3.3 2022年8月16日
0.3.2 2022年8月16日
0.2.2 2022年8月8日
0.1.1 2020年5月16日

1301#api

每月下载量:48
2 个crates中使用

MIT 许可证

41KB
891

Pi Hole API

Rust库,用于与Pi Hole PHP API交互。

示例

简单

use pi_hole_api::{PiHoleAPIConfig, UnauthenticatedPiHoleAPI};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let api = PiHoleAPIConfig::new("http://192.168.0.19".to_string());

    let status = api.get_summary();
    println!("{:?}", status);
    Ok(())
}

身份验证

use pi_hole_api::{AuthenticatedPiHoleAPI, PiHoleAPIConfigWithKey};

fn main() {
    // Replace the address and key with those of your Pi Hole
    let api = PiHoleAPIConfigWithKey::new(
        "http://192.168.0.100".to_string(),
        "0123456789abcedf0123456789abcedf0123456789abcedf0123456789abcedf".to_string(),
    );

    match api.get_queries_count() {
        Ok(status) => println!("Total number of queries: {:?}", status),
        Err(e) => panic!("Request failed, check your address and api key: {:?}", e),
    };
}

限制

  • 由于API返回类型的变化,仅支持Pi-Hole v5.0+。
  • 目前通过API从黑名单/白名单中删除域名是损坏的,因此没有实现。 已解决: PR

测试

docker-compose文件创建了一个Pi-Hole实例。您需要实例的API密钥来运行测试。将密钥存储在环境变量 PI_HOLE_API_TEST_API_KEY 中。

环境变量 PI_HOLE_API_TEST_TARGET_HTTP_ADDRESSPI_HOLE_API_TEST_TARGET_DNS_ADDRESS 应包含http地址(例如 https://127.0.0.1)和DNS IP:端口对(例如 127.0.0.1:53)。

.envrc-example 中提供了包含这些变量的envrc示例。

配置好环境变量后,可以使用 cargo test 运行测试。

依赖项

~5.5MB
~130K SLoC