limit mdns addresses

This commit is contained in:
Robin Appelman 2022-08-25 18:52:04 +02:00
commit 70bba8ed2c
3 changed files with 11 additions and 2 deletions

1
Cargo.lock generated
View file

@ -852,6 +852,7 @@ dependencies = [
"futures-util",
"hostname",
"iai",
"if-addrs",
"libc",
"libmdns",
"nvml-wrapper",

View file

@ -21,6 +21,7 @@ libmdns = "0.7.0"
tracing = "0.1.35"
tracing-subscriber = "0.3.11"
nvml-wrapper = "0.8.0"
if-addrs = "0.7.0"
[dev-dependencies]
iai = "0.1.1"

View file

@ -11,7 +11,7 @@ use std::time::Duration;
use tokio::runtime::Handle;
use tokio::spawn;
use tokio::time::sleep;
use tracing::warn;
use tracing::{info, warn};
use warp::reject::Reject;
use warp::{Filter, Rejection};
@ -88,8 +88,15 @@ async fn main() -> Result<()> {
}
async fn setup_mdns(hostname: String, port: u16) {
let interfaces = if_addrs::get_if_addrs().unwrap_or_default();
let ip_list: Vec<_> = interfaces
.into_iter()
.filter(|interface| !interface.name.contains("docker") && !interface.name.contains("br-"))
.map(|interface| interface.addr.ip())
.collect();
let mdns = loop {
match Responder::spawn(&Handle::current()) {
match Responder::spawn_with_ip_list(&Handle::current(), ip_list.clone()) {
Ok(mdns) => break mdns,
Err(e) => {
warn!(error = display(e), "Failed to register mdns responder");