use super::CmdResult; use crate::wrap_err; use network_interface::NetworkInterface; use serde_yaml::Mapping; use sysproxy::{Autoproxy, Sysproxy}; /// get the system proxy #[tauri::command] pub fn get_sys_proxy() -> CmdResult { let current = wrap_err!(Sysproxy::get_system_proxy())?; let mut map = Mapping::new(); map.insert("enable".into(), current.enable.into()); map.insert( "server".into(), format!("{}:{}", current.host, current.port).into(), ); map.insert("bypass".into(), current.bypass.into()); Ok(map) } /// get the system proxy #[tauri::command] pub fn get_auto_proxy() -> CmdResult { let current = wrap_err!(Autoproxy::get_auto_proxy())?; let mut map = Mapping::new(); map.insert("enable".into(), current.enable.into()); map.insert("url".into(), current.url.into()); Ok(map) } /// 获取网络接口列表 #[tauri::command] pub fn get_network_interfaces() -> Vec { use sysinfo::Networks; let mut result = Vec::new(); let networks = Networks::new_with_refreshed_list(); for (interface_name, _) in &networks { result.push(interface_name.clone()); } result } /// 获取网络接口详细信息 #[tauri::command] pub fn get_network_interfaces_info() -> CmdResult> { use network_interface::{NetworkInterface, NetworkInterfaceConfig}; let names = get_network_interfaces(); let interfaces = wrap_err!(NetworkInterface::show())?; let mut result = Vec::new(); for interface in interfaces { if names.contains(&interface.name) { result.push(interface); } } Ok(result) }