diff options
Diffstat (limited to 'src/utils/local_ip.rs')
-rw-r--r-- | src/utils/local_ip.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/utils/local_ip.rs b/src/utils/local_ip.rs new file mode 100644 index 0000000..6df7016 --- /dev/null +++ b/src/utils/local_ip.rs @@ -0,0 +1,28 @@ +use crate::config::CONFIG; +use crate::types::ThreadsData; + +pub async fn get_local_ip() -> ThreadsData { + let addrs = nix::ifaddrs::getifaddrs().unwrap(); + let mut ip = String::new(); + for ifaddr in addrs { + match ifaddr.address { + Some(address) => { + if ifaddr.interface_name == CONFIG.local_ip.interface { + match address.family() { + nix::sys::socket::AddressFamily::Inet => { + ip = address.to_string().split(':').next().unwrap().to_string(); + break; + } + _ => continue, + }; + } + } + None => continue, + } + } + if ip.is_empty() { + ip = String::from("Error!") + } + let data = format!(" {} {} {}", CONFIG.local_ip.icon, ip, CONFIG.seperator); + ThreadsData::LocalIp(data) +} |