diff --git a/env/rustmailer.env b/env/rustmailer.env index c5caccd..5f79424 100644 --- a/env/rustmailer.env +++ b/env/rustmailer.env @@ -28,7 +28,7 @@ BICHON_ROOT_DIR=/data/bichon-data # Enable API access token validation BICHON_ENABLE_ACCESS_TOKEN=false -# IP address to bind the HTTP and gRPC servers to (default: 0.0.0.0) +# IP address to bind the HTTP and gRPC servers to (default: ::) BICHON_BIND_IP= # Comma-separated list of allowed CORS origins (e.g. https://app.example.com) diff --git a/src/modules/rest/mod.rs b/src/modules/rest/mod.rs index 541ff3d..d7d0014 100644 --- a/src/modules/rest/mod.rs +++ b/src/modules/rest/mod.rs @@ -51,7 +51,7 @@ pub type ApiResult = std::result::Result; pub async fn start_http_server() -> BichonResult<()> { let listener = TcpListener::bind(( - SETTINGS.bichon_bind_ip.clone().unwrap_or("0.0.0.0".into()), + SETTINGS.bichon_bind_ip.clone().unwrap_or("::".into()), SETTINGS.bichon_http_port as u16, )); diff --git a/src/modules/settings/cli.rs b/src/modules/settings/cli.rs index fbc58f7..822c814 100644 --- a/src/modules/settings/cli.rs +++ b/src/modules/settings/cli.rs @@ -46,16 +46,16 @@ pub struct Settings { )] pub bichon_http_port: i32, - /// The IP address that the node binds to, in IPv4 format (e.g., 192.168.1.1). + /// The IP address that the node binds to, in IPv4 or IPv6 format (e.g., 192.168.1.1 or ::1). #[clap( long, env, - default_value = "0.0.0.0", - help = "The IP address that the node binds to, in IPv4 format (e.g., 192.168.1.1). Required in cluster mode.", + default_value = "::", + help = "The IP address that the node binds to, in IPv4 or IPv6 format (e.g., 192.168.1.1 or ::1). Required in cluster mode.", value_parser = ValueParser::new(|s: &str| { - // Ensure the input is a valid IPv4 address - if s.parse::().is_err() { - return Err("The bind IP address must be a valid IPv4 address.".to_string()); + // Ensure the input is a valid IPv4 or IPv6 address + if s.parse::().is_err() && s.parse::().is_err() { + return Err("The bind IP address must be a valid IPv4 or IPv6 address.".to_string()); } // If the address is valid, return it