diff --git a/src/diplonat.rs b/src/diplonat.rs index 798a678..7ad327d 100644 --- a/src/diplonat.rs +++ b/src/diplonat.rs @@ -19,7 +19,7 @@ impl Diplonat { let consul_actor = ConsulActor::new(config.consul); - let firewall_actor = FirewallActor::new(config.firewall, &consul_actor.rx_open_ports).await?; + let firewall_actor = FirewallActor::new(config.firewall, &consul_actor.rx_open_ports)?; let igd_actor = IgdActor::new(config.igd, &consul_actor.rx_open_ports).await?; diff --git a/src/fw_actor.rs b/src/fw_actor.rs index 0333785..97de1c3 100644 --- a/src/fw_actor.rs +++ b/src/fw_actor.rs @@ -21,25 +21,24 @@ pub struct FirewallActor { } impl FirewallActor { - pub async fn new( + pub fn new( config: Option, rxp: &watch::Receiver, ) -> Result> { - if config.is_none() { - return Ok(None) + match config { + None => Ok(None), + Some(c) => { + let ctx = Self { + ipt: iptables::new(false)?, + last_ports: messages::PublicExposedPorts::new(), + refresh: c.refresh_time, + rx_ports: rxp.clone(), + }; + fw::setup(&ctx.ipt)?; + + Ok(Some(ctx)) + } } - let config = config.unwrap(); - - let ctx = Self { - ipt: iptables::new(false)?, - last_ports: messages::PublicExposedPorts::new(), - refresh: config.refresh_time, - rx_ports: rxp.clone(), - }; - - fw::setup(&ctx.ipt)?; - - return Ok(Some(ctx)) } pub async fn listen(&mut self) -> Result<()> { diff --git a/src/igd_actor.rs b/src/igd_actor.rs index e965ce2..ffd71dd 100644 --- a/src/igd_actor.rs +++ b/src/igd_actor.rs @@ -26,26 +26,24 @@ impl IgdActor { config: Option, rxp: &watch::Receiver, ) -> Result> { - if config.is_none() { - return Ok(None) + match config { + None => Ok(None), + Some(c) => { + let gw = search_gateway(Default::default()) + .await + .context("Failed to find IGD gateway")?; + info!("IGD gateway: {}", gw); + + Ok(Some(Self { + expire: c.expiration_time, + gateway: gw, + last_ports: messages::PublicExposedPorts::new(), + private_ip: c.private_ip, + refresh: c.refresh_time, + rx_ports: rxp.clone(), + })) + } } - let config = config.unwrap(); - - let gw = search_gateway(Default::default()) - .await - .context("Failed to find IGD gateway")?; - info!("IGD gateway: {}", gw); - - let ctx = Self { - expire: config.expiration_time, - gateway: gw, - last_ports: messages::PublicExposedPorts::new(), - private_ip: config.private_ip, - refresh: config.refresh_time, - rx_ports: rxp.clone(), - }; - - return Ok(Some(ctx)) } pub async fn listen(&mut self) -> Result<()> {