From efb67a6dea32add59ba9e18d23f643a8afbea592 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20K=C3=B6rber?= Date: Tue, 29 Aug 2023 21:34:00 +0200 Subject: [PATCH] allow port spec --- rust/src/main.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/rust/src/main.rs b/rust/src/main.rs index d436936..4b91a76 100644 --- a/rust/src/main.rs +++ b/rust/src/main.rs @@ -11,7 +11,8 @@ use serde::Deserialize; use uuid::Uuid; use std::fmt; -use std::net::SocketAddr; +use std::net::{IpAddr, SocketAddr}; +use std::str::FromStr; mod error; mod html; @@ -36,6 +37,8 @@ struct Args { database_url: String, #[arg(long, default_value_t = 3000)] port: u16, + #[arg(long)] + bind: String, } #[derive(Clone)] @@ -250,7 +253,12 @@ async fn main() -> Result<(), StartError> { }) .with_state(state); - let addr = SocketAddr::from(([127, 0, 0, 1], args.port)); + let addr = SocketAddr::from(( + IpAddr::from_str(&args.bind) + .map_err(|error| format!("error parsing bind address {}: {}", &args.bind, error)) + .unwrap(), + args.port, + )); tracing::debug!("listening on {}", addr); axum::Server::try_bind(&addr) .map_err(|error| format!("error binding to {}: {}", addr, error))