aboutsummaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/local_ip.rs28
-rw-r--r--src/utils/mod.rs2
2 files changed, 29 insertions, 1 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)
+}
diff --git a/src/utils/mod.rs b/src/utils/mod.rs
index 6e0d944..cf9ea0d 100644
--- a/src/utils/mod.rs
+++ b/src/utils/mod.rs
@@ -3,6 +3,7 @@ pub mod bitcoins;
pub mod cpu;
pub mod disk;
pub mod load_average;
+pub mod local_ip;
pub mod memory;
pub mod mpd;
pub mod netspeed;
@@ -12,4 +13,3 @@ pub mod time;
pub mod uptime;
pub mod volume;
pub mod weather;
-