From b4e1877e3618b660bf68df7f3be26930c5e8034e Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Thu, 21 Aug 2025 13:37:34 +0200 Subject: [PATCH] =?UTF-8?q?Ref:=20=C3=9Cberarbeitet=20Erreichbarkeitspr?= =?UTF-8?q?=C3=BCfung,=20erg=C3=A4nzt=20Unterst=C3=BCtzung=20f=C3=BCr=20HT?= =?UTF-8?q?TP(s)-Zugriffe=20und=20verbessert=20Logging.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/network/utils.rs | 54 ++++++++++++++++++++++++++++++++------------ 1 file changed, 40 insertions(+), 14 deletions(-) diff --git a/src/network/utils.rs b/src/network/utils.rs index a77d063..fddc686 100644 --- a/src/network/utils.rs +++ b/src/network/utils.rs @@ -24,29 +24,55 @@ pub fn is_reachable(address: &str) -> bool { #[cfg(target_os = "linux")] { - let output = Command::new("ping") - .args(["-c", "1", "-W", "2", addr]) - .output(); + if addr.parse::().is_ok() { + let output = Command::new("ping") + .args(["-c", "1", "-W", "2", addr]) + .output(); - if let Ok(out) = output { - out.status.success() + if let Ok(out) = output { + out.status.success() + } else { + log::log("network_utils", &*format!("Couldn't reach address {}!", addr), LogLevel::Error); + false + } } else { - log::log("network_utils", &*format!("Couldn't reach address {}!", addr), LogLevel::Error); - false + let output = Command::new("curl") + .args(["--head", "--silent", "--fail", addr]) + .output(); + + if let Ok(out) = output { + out.status.success() + } else { + log::log("network_utils", &*format!("Couldn't reach address {}!", addr), LogLevel::Error); + false + } } } #[cfg(target_os = "windows")] { - let output = Command::new("ping") - .args(["-n", "1", "-w", "2000", addr]) - .output(); + if addr.parse::().is_ok() { + let output = Command::new("ping") + .args(["-n", "1", "-w", "2000", addr]) + .output(); - if let Ok(out) = output { - out.status.success() + if let Ok(out) = output { + out.status.success() + } else { + log::log("network_utils", &*format!("Couldn't reach address {}!", addr), LogLevel::Error); + false + } } else { - log::log("network_utils", &*format!("Couldn't reach address {}!", addr), LogLevel::Error); - false + let output = Command::new("powershell") + .args(["-Command", &format!("Invoke-WebRequest -Uri {} -Method HEAD -UseBasicParsing", addr)]) + .output(); + + if let Ok(out) = output { + out.status.success() + } else { + log::log("network_utils", &*format!("Couldn't reach address {}!", addr), LogLevel::Error); + false + } } }