fix: derive wifi interface dynamically from gateway info instead of detecting at startup

Remove static wifi_interface/ethernet_interface fields from RpcContextSeed. Instead, look up
the wifi interface from the DB (populated by gateway sync) and check ethernet connectivity
by querying gateway entries. This ensures the wifi manager always uses the correct interface
even if network devices change after boot.
This commit is contained in:
Aiden McClelland
2026-03-18 15:59:58 -06:00
parent 5cf70dc8f5
commit 9ed6c1263c
5 changed files with 164 additions and 139 deletions

View File

@@ -23,7 +23,6 @@ use crate::middleware::auth::local::LocalAuthContext;
use crate::net::gateway::WildcardListener;
use crate::net::net_controller::{NetController, NetService};
use crate::net::socks::DEFAULT_SOCKS_LISTEN;
use crate::net::utils::find_wifi_iface;
use crate::net::web_server::WebServerAcceptorSetter;
use crate::prelude::*;
use crate::progress::{
@@ -280,20 +279,17 @@ pub async fn init(
load_ca_cert.complete();
load_wifi.start();
let wifi_interface = find_wifi_iface().await?;
let wifi = db
.mutate(|db| {
let wifi = db
.as_public_mut()
.as_server_info_mut()
.as_network_mut()
.as_wifi_mut();
wifi.as_interface_mut().ser(&wifi_interface)?;
wifi.de()
})
.await
.result?;
crate::net::wifi::synchronize_network_manager(MAIN_DATA, &wifi).await?;
crate::net::wifi::synchronize_network_manager(
MAIN_DATA,
&peek
.as_public()
.as_server_info()
.as_network()
.as_wifi()
.de()
.unwrap_or_default(),
)
.await?;
load_wifi.complete();
init_tmp.start();