diff --git a/Cargo.lock b/Cargo.lock index c2d2ec2..20de2c3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -618,5 +618,6 @@ name = "xmpp-blackbox-exporter" version = "0.1.0" dependencies = [ "axum", + "serde", "tokio", ] diff --git a/Cargo.toml b/Cargo.toml index fe1d7ec..2557432 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,4 +5,5 @@ edition = "2021" [dependencies] axum = "0.8.4" +serde = { version = "1.0.219", features = ["derive"] } tokio = { version = "1.45.1", features = ["rt-multi-thread"] } diff --git a/src/main.rs b/src/main.rs index 53cd537..27cdcca 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,17 @@ use axum::{ + extract::Query, routing::get, Router, }; +use serde::Deserialize; + +#[derive(Deserialize)] +struct ProbeClientToServerQuery { + domain: String, + hostname: String, + port: u16, +} + #[tokio::main] async fn main() { @@ -31,11 +41,12 @@ async fn main() { let app = Router::new() .route("/", get(route_index)) - .route("/probe", get(route_probe)); + .route("/probe-client-to-server", get(route_probe_client_to_server)); let listener = tokio::net::TcpListener::bind(listen).await.unwrap(); println!("Server listening on: http://{}", listener.local_addr().unwrap()); - println!("Probe with: http://{}/probe", listener.local_addr().unwrap()); + println!("Probe with:"); + println!(" http://{}/probe-client-to-server?domain=fem-net.de&hostname=xmpp-2.net.clerie.de&port=5222", listener.local_addr().unwrap()); axum::serve(listener, app).await.unwrap(); } @@ -44,9 +55,11 @@ async fn route_index() -> String { return String::from("Prometheus exporter for checking XMPP server availability"); } -async fn route_probe() -> Result { +async fn route_probe_client_to_server( + Query(query): Query, +) -> Result { let mut out = String::new(); - out.push_str("hallo welt"); + out.push_str(&format!("{} {}:{}", query.domain, query.hostname, query.port)); return Ok(out); }