diff --git a/idevice/src/usbmuxd/mod.rs b/idevice/src/usbmuxd/mod.rs index 5f6f8e7..32b8f19 100644 --- a/idevice/src/usbmuxd/mod.rs +++ b/idevice/src/usbmuxd/mod.rs @@ -1,6 +1,9 @@ // Jackson Coxson -use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4}; +use std::{ + net::{AddrParseError, IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4}, + str::FromStr, +}; use log::debug; use tokio::io::{AsyncReadExt, AsyncWriteExt}; @@ -52,6 +55,19 @@ impl UsbmuxdAddr { let socket = self.to_socket().await?; Ok(UsbmuxdConnection::new(socket, tag)) } + + pub fn from_env_var() -> Result { + Ok(match std::env::var("USBMUXD_SOCKET_ADDRESS") { + Ok(var) => { + if var.contains(':') { + Self::TcpSocket(SocketAddr::from_str(&var)?) + } else { + Self::UnixSocket(var) + } + } + Err(_) => Self::default(), + }) + } } impl Default for UsbmuxdAddr {