From 56fc17cdf04d9eff6a833a250c9181a43f6a7da2 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Tue, 27 May 2025 14:21:03 +0000 Subject: feat(router): Add set_listener_address --- src/router.rs | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/src/router.rs b/src/router.rs index ed4b9ee..40dac61 100644 --- a/src/router.rs +++ b/src/router.rs @@ -107,6 +107,7 @@ pub struct Router { async_modules: Arc>>>, modules: Arc>>>, fix_path: bool, + listener_address: String, } impl Router { @@ -319,12 +320,17 @@ impl Router { } #[cfg(feature = "tokio")] - let listener = - tokio::net::TcpListener::bind(format!("0.0.0.0:{}", self.port)).await?; + let listener = tokio::net::TcpListener::bind(format!( + "{}:{}", + self.listener_address, self.port + )) + .await?; #[cfg(feature = "async-std")] - let listener = - async_std::net::TcpListener::bind(format!("0.0.0.0:{}", self.port)) - .await?; + let listener = async_std::net::TcpListener::bind(format!( + "{}:{}", + self.listener_address, self.port + )) + .await?; #[cfg(feature = "logger")] info!("windmark is listening for connections"); @@ -975,7 +981,26 @@ impl Router { self } + + /// Specify a custom listener address. + /// + /// Defaults to `"0.0.0.0"`. + /// + /// # Examples + /// + /// ```rust + /// windmark::router::Router::new().set_listener_address("[::]"); + /// ``` + pub fn set_listener_address( + &mut self, + address: impl Into + AsRef, + ) -> &mut Self { + self.listener_address = address.into(); + + self + } } + impl Default for Router { fn default() -> Self { Self { @@ -1010,6 +1035,7 @@ impl Default for Router { fix_path: false, private_key_content: None, certificate_content: None, + listener_address: "0.0.0.0".to_string(), } } } -- cgit v1.2.3