#![feature(slice_as_array)] use frontend::App; use joecalsend::{Config, error, models::Device}; use local_ip_address::local_ip; use network_interface::{Addr, NetworkInterface, NetworkInterfaceConfig, V4IfAddr}; mod frontend; fn main() -> error::Result<()> { let device = Device::default(); dbg!(&device); let std::net::IpAddr::V4(ip) = local_ip()? else { unreachable!() }; // for enumerating subnet peers when multicast fails (https://github.com/localsend/protocol?tab=readme-ov-file#32-http-legacy-mode) let mut _network_ip = ip; let nifs = NetworkInterface::show().unwrap(); for addr in nifs.into_iter().flat_map(|i| i.addr) { if let Addr::V4(V4IfAddr { ip: ifip, netmask: Some(netmask), .. }) = addr && ip == ifip { _network_ip = ip & netmask; break; } } let config = Config::default(); let mut app = App::new(); let mut terminal = ratatui::init(); let result = app.start_and_run(&mut terminal, config, device); ratatui::restore(); result }