From 0d48dc6cd706e0a700d25d4d954d1fc152f7eee5 Mon Sep 17 00:00:00 2001 From: Aleksander <170264518+t-aleksander@users.noreply.github.com> Date: Mon, 30 Jun 2025 10:49:16 +0200 Subject: [PATCH] bind address --- src/config.rs | 8 +++++++- src/http.rs | 14 ++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/config.rs b/src/config.rs index 4c64429e..a6367b01 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,4 +1,4 @@ -use std::{fs::read_to_string, path::PathBuf}; +use std::{fs::read_to_string, net::IpAddr, path::PathBuf}; use clap::Parser; use log::LevelFilter; @@ -53,6 +53,12 @@ pub struct Config { #[arg(long = "config", short)] #[serde(skip)] config_path: Option, + + #[arg(long, env = "DEFGUARD_HTTP_BIND_ADDRESS")] + pub http_bind_address: Option, + + #[arg(long, env = "DEFGUARD_GRPC_BIND_ADDRESS")] + pub grpc_bind_address: Option, } #[derive(thiserror::Error, Debug)] diff --git a/src/http.rs b/src/http.rs index 6c3c8da4..348ec7ac 100644 --- a/src/http.rs +++ b/src/http.rs @@ -149,7 +149,12 @@ pub async fn run_server(config: Config) -> anyhow::Result<()> { // Start gRPC server. debug!("Spawning gRPC server"); tasks.spawn(async move { - let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::UNSPECIFIED), config.grpc_port); + let addr = SocketAddr::new( + config + .grpc_bind_address + .unwrap_or(IpAddr::V4(Ipv4Addr::UNSPECIFIED)), + config.grpc_port, + ); info!("gRPC server is listening on {addr}"); let mut builder = if let (Some(cert), Some(key)) = (grpc_cert, grpc_key) { let identity = Identity::from_pem(cert, key); @@ -244,7 +249,12 @@ pub async fn run_server(config: Config) -> anyhow::Result<()> { // Start web server. debug!("Spawning API web server"); tasks.spawn(async move { - let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::UNSPECIFIED), config.http_port); + let addr = SocketAddr::new( + config + .http_bind_address + .unwrap_or(IpAddr::V4(Ipv4Addr::UNSPECIFIED)), + config.http_port, + ); let listener = TcpListener::bind(&addr).await?; info!("API web server is listening on {addr}"); serve(