From 03e94e2f26acd0f0cd08d6d65b80285a5b5d79cc Mon Sep 17 00:00:00 2001 From: Demmie <2e3s19@gmail.com> Date: Wed, 15 Jan 2025 14:43:41 -0500 Subject: [PATCH] Make bundle server host configurable --- src/bundle.rs | 4 ++-- src/bundle/menu.rs | 14 +++++++++++++- src/bundle/server.rs | 12 +++++++++--- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/bundle.rs b/src/bundle.rs index e272d8e..3093d05 100644 --- a/src/bundle.rs +++ b/src/bundle.rs @@ -19,10 +19,10 @@ pub async fn run( ); if !no_tray { - let tray = Tray::new(host, port, config_file, shutdown_sender, manager); + let tray = Tray::new(host.clone(), port, config_file, shutdown_sender, manager); let service = ksni::TrayService::new(tray); service.spawn(); } - server::run(port).await; + server::run(host.clone(), port).await; } diff --git a/src/bundle/menu.rs b/src/bundle/menu.rs index 9dd37a7..2684424 100644 --- a/src/bundle/menu.rs +++ b/src/bundle/menu.rs @@ -1,6 +1,7 @@ use std::collections::HashMap; +use std::net::Ipv4Addr; use std::path::PathBuf; - +use std::str::FromStr; use tokio::sync::mpsc::UnboundedSender; use super::modules::Manager; @@ -22,6 +23,17 @@ impl Tray { shutdown_sender: UnboundedSender<()>, watchers_manager: Manager, ) -> Self { + let is_zero_first_octet = match Ipv4Addr::from_str(&server_host) { + Ok(ip) => ip.octets()[0] == 0, + Err(_) => false, + }; + + let server_host = if is_zero_first_octet { + "localhost".to_string() + } else { + server_host + }; + let checks = watchers_manager .path_watchers .iter() diff --git a/src/bundle/server.rs b/src/bundle/server.rs index 3b6c3d4..ad54967 100644 --- a/src/bundle/server.rs +++ b/src/bundle/server.rs @@ -1,8 +1,9 @@ use anyhow::anyhow; use aw_server::endpoints::{build_rocket, AssetResolver, ServerState}; +use std::net::ToSocketAddrs; use std::sync::Mutex; -pub async fn run(port: u16) { +pub async fn run(host: String, port: u16) { let db_path = aw_server::dirs::db_path(false) .map_err(|()| anyhow!("DB path is not found")) .unwrap() @@ -11,8 +12,13 @@ pub async fn run(port: u16) { .to_string(); let device_id = aw_server::device_id::get_device_id(); let mut config = aw_server::config::create_config(false); - config.address = "127.0.0.1".to_string(); - config.port = port; + + let mut addrs_iter = (host + ":" + &port.to_string()).to_socket_addrs().unwrap(); + let address = addrs_iter.next().unwrap(); + + info!("Starting server on {}", address); + config.address = address.ip().to_string(); + config.port = address.port(); let legacy_import = false; let server_state = ServerState {