Skip to content

Commit 1aaadc9

Browse files
GrantFlemingalexandrebrg
authored andcommitted
Allow listening on arbitrary IPv4/IPv6 addresses
1 parent 4fa9c50 commit 1aaadc9

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ Usage: fdbexporter [OPTIONS]
5555
5656
Options:
5757
-p, --port <PORT> Listening port of the web server [env: FDB_EXPORTER_PORT=] [default: 9090]
58+
-a, --addr Listening IPv4/IPv6 address of the web server [env: FDB_EXPORTER_ADDR=] [default: 0.0.0.0]
5859
-c, --cluster <CLUSTER> Location of fdb.cluster file [env: FDB_CLUSTER_FILE=]
5960
-d, --delay-sec <DELAY_SEC> Delay in seconds between two update of the status & metrics [env: FDB_EXPORTER_DELAY=] [default: 15]
6061
-h, --help Print help

src/main.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use hyper_util::rt::TokioIo;
99
use prometheus::{Encoder, TextEncoder};
1010

1111
use std::convert::Infallible;
12-
use std::net::SocketAddr;
12+
use std::net::{IpAddr, SocketAddr};
1313
use std::num::ParseIntError;
1414
use std::path::PathBuf;
1515

@@ -28,7 +28,7 @@ async fn metrics(_: Request<impl hyper::body::Body>) -> Result<Response<Full<Byt
2828
}
2929

3030
async fn run_http_server(config: &CommandArgs) -> Result<(), anyhow::Error> {
31-
let addr: SocketAddr = ([0, 0, 0, 0], config.port).into();
31+
let addr: SocketAddr = (config.addr, config.port).into();
3232
let listener = TcpListener::bind(addr).await?;
3333
info!("Listening on http://{}", addr);
3434
loop {
@@ -72,6 +72,10 @@ struct CommandArgs {
7272
#[arg(short, long, default_value_t = 9090, env = "FDB_EXPORTER_PORT")]
7373
port: u16,
7474

75+
/// Listen address of the web server, can be IPv4 or IPv6
76+
#[arg(short, long, default_value = "0.0.0.0", env = "FDB_EXPORTER_ADDR")]
77+
addr: IpAddr,
78+
7579
/// Location of fdb.cluster file
7680
#[arg(short, long, env = "FDB_CLUSTER_FILE")]
7781
cluster: Option<PathBuf>,
@@ -117,14 +121,15 @@ pub async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
117121

118122
#[cfg(test)]
119123
mod tests {
120-
use std::time::Duration;
124+
use std::{net::Ipv4Addr, time::Duration};
121125

122126
use crate::CommandArgs;
123127

124128
impl Default for CommandArgs {
125129
fn default() -> Self {
126130
CommandArgs {
127131
port: 9090,
132+
addr: std::net::IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)),
128133
cluster: None,
129134
delay_sec: Duration::from_secs(1),
130135
}

0 commit comments

Comments
 (0)