Specify server to probe against using query string
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -618,5 +618,6 @@ name = "xmpp-blackbox-exporter"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"axum",
|
"axum",
|
||||||
|
"serde",
|
||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
@@ -5,4 +5,5 @@ edition = "2021"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
axum = "0.8.4"
|
axum = "0.8.4"
|
||||||
|
serde = { version = "1.0.219", features = ["derive"] }
|
||||||
tokio = { version = "1.45.1", features = ["rt-multi-thread"] }
|
tokio = { version = "1.45.1", features = ["rt-multi-thread"] }
|
||||||
|
21
src/main.rs
21
src/main.rs
@@ -1,7 +1,17 @@
|
|||||||
use axum::{
|
use axum::{
|
||||||
|
extract::Query,
|
||||||
routing::get,
|
routing::get,
|
||||||
Router,
|
Router,
|
||||||
};
|
};
|
||||||
|
use serde::Deserialize;
|
||||||
|
|
||||||
|
#[derive(Deserialize)]
|
||||||
|
struct ProbeClientToServerQuery {
|
||||||
|
domain: String,
|
||||||
|
hostname: String,
|
||||||
|
port: u16,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
@@ -31,11 +41,12 @@ async fn main() {
|
|||||||
|
|
||||||
let app = Router::new()
|
let app = Router::new()
|
||||||
.route("/", get(route_index))
|
.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();
|
let listener = tokio::net::TcpListener::bind(listen).await.unwrap();
|
||||||
println!("Server listening on: http://{}", listener.local_addr().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();
|
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");
|
return String::from("Prometheus exporter for checking XMPP server availability");
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn route_probe() -> Result<String, String> {
|
async fn route_probe_client_to_server(
|
||||||
|
Query(query): Query<ProbeClientToServerQuery>,
|
||||||
|
) -> Result<String, String> {
|
||||||
let mut out = String::new();
|
let mut out = String::new();
|
||||||
out.push_str("hallo welt");
|
out.push_str(&format!("{} {}:{}", query.domain, query.hostname, query.port));
|
||||||
|
|
||||||
return Ok(out);
|
return Ok(out);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user