Switching from pnet to if-addrs for Windows support

This commit is contained in:
Matéo Duparc 2021-05-11 14:30:53 +02:00
parent 24231ba043
commit 79a3ad1790
Signed by: hardcoresushi
GPG Key ID: 007F84120107191E
4 changed files with 10 additions and 8 deletions

View File

@ -33,7 +33,7 @@ uuid = {version = "0.8", features = ["v4"]}
webbrowser = "0.5.5"
libmdns = "0.6" #mDNS advertiser
multicast_dns = "0.5" #mDNS browser
pnet_datalink = "0.27.2"
if-addrs = "0.6"
base64 = "0.13.0"
scrypt = "0.7.0"
zeroize = "1.2.0"

View File

@ -1,12 +1,13 @@
use std::{net::IpAddr, io};
use tokio::runtime::Handle;
use libmdns::{Responder, Service};
use multicast_dns::discovery::{DiscoveryManager, DiscoveryListeners, ResolveListeners};
use crate::{constants, print_error};
const SERVICE_TYPE: &str = "_aira._tcp";
pub fn advertise_me() -> io::Result<Service> {
Ok(Responder::new()?.register(
pub async fn advertise_me() -> io::Result<Service> {
Ok(Responder::spawn(&Handle::current())?.register(
SERVICE_TYPE.to_string(),
"AIRA Node".to_string(),
constants::PORT,

View File

@ -117,12 +117,13 @@ async fn websocket_worker(mut ui_connection: UiConnection, global_vars: Arc<RwLo
ui_connection.load_msgs(&msgs.0, &msgs.1);
});
let mut ips = Vec::new();
for interface in pnet_datalink::interfaces() {
if !interface.is_loopback() {
for ip in interface.ips {
ips.push(ip.ip());
match if_addrs::get_if_addrs() {
Ok(ifaces) => for iface in ifaces {
if !iface.is_loopback() {
ips.push(iface.ip());
}
}
Err(e) => print_error!(e)
}
ui_connection.set_local_ips(ips);
discover_peers(session_manager.clone());

View File

@ -528,7 +528,7 @@ impl SessionManager {
let server_v4 = TcpListener::bind(SocketAddr::new("0.0.0.0".parse().unwrap(), constants::PORT)).await?;
let (sender, mut receiver) = mpsc::channel(1);
*session_manager.listener_stop_signal.lock().unwrap() = Some(sender);
match discovery::advertise_me() {
match discovery::advertise_me().await {
Ok(service) => *session_manager.mdns_service.lock().unwrap() = Some(service),
Err(e) => {
print_error!("{}: you won't be discoverable by other peers.", e);