aboutsummaryrefslogtreecommitdiff
path: root/src/utils/local_ip.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/local_ip.rs')
-rw-r--r--src/utils/local_ip.rs28
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)
+}