diff --git a/broker/src/mqtt.rs b/broker/src/mqtt.rs index 301a0d4..9d08aaa 100644 --- a/broker/src/mqtt.rs +++ b/broker/src/mqtt.rs @@ -28,8 +28,8 @@ pub fn start_broker( let (mut link_tx, mut link_rx) = broker.link("localclient")?; - link_tx.subscribe(format!("+/{}", topics::HELLO)); - link_tx.subscribe(format!("+/{}", topics::BYE)); + let _ = link_tx.subscribe(format!("+/{}", topics::HELLO)); + let _ = link_tx.subscribe(format!("+/{}", topics::BYE)); let auth_sender_ = auth_sender.clone(); std::thread::spawn(move || { diff --git a/broker/src/util.rs b/broker/src/util.rs index 3e42ffa..49328c9 100644 --- a/broker/src/util.rs +++ b/broker/src/util.rs @@ -41,6 +41,9 @@ pub fn read_broker_config() -> Settings { if let Some(http_port) = read_http_port_setting(&table) { settings.http_port = http_port; } + if let Some(ws_port) = read_ws_port_setting(&table) { + settings.websocket_port = Some(ws_port); + } } else { log::info!("File broker.conf not found, using default settings"); } @@ -63,6 +66,13 @@ pub fn read_broker_config() -> Settings { } } } + if let Ok(env_port) = env::var("BROKER_WS_PORT") { + if let Ok(ws_port) = env_port.parse::() { + if ws_port > 1023 { + settings.websocket_port = Some(ws_port); + } + } + } settings } @@ -157,3 +167,23 @@ fn read_http_port_setting(table: &Value) -> Option { Some(temp.try_into().unwrap()) } } + +fn read_ws_port_setting(table: &Value) -> Option { + if let None = table.get("ws_port") { + log::info!("Broker ws port not specified, setting to default 8083"); + None + } else { + let temp = table["ws_port"] + .as_integer() + .expect("The ws port number is not an integer greater than 1023"); + if temp <= 1023 { + panic!("The ws port number is not an integer greater than 1023") + } + let max: i64 = u16::MAX.into(); + if temp > max { + panic!("The ws port number is way too big!") + } + log::info!("Read broker ws port setting: {}", temp); + Some(temp.try_into().unwrap()) + } +}