From 72bfffd8c6264bc255143716f33b472765fd687a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=BCske?= Date: Fri, 13 Dec 2024 20:01:52 +0100 Subject: [PATCH] Update main.rs --- build/src/main.rs | 41 ++++++++++++++--------------------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/build/src/main.rs b/build/src/main.rs index a19b8e3..56ecb8c 100644 --- a/build/src/main.rs +++ b/build/src/main.rs @@ -78,10 +78,11 @@ async fn main() { } } -/// Funktion zum Aktualisieren der Dateien mit den neuen IPs +// Funktion zum Aktualisieren der Dateien mit den neuen IPs fn update_file_with_ips(file_path: &Path, ip_map: &BTreeMap) { // Datei öffnen für Lesen und Schreiben - let file = match OpenOptions::new().read(true).write(true).open(file_path) { + let file = OpenOptions::new().read(true).write(true).open(file_path); + let file = match file { Ok(f) => f, Err(e) => { eprintln!("Failed to open file {:?}: {:?}", file_path, e); @@ -93,8 +94,8 @@ fn update_file_with_ips(file_path: &Path, ip_map: &BTreeMap) { let mut new_lines = Vec::new(); let mut line_changed = false; - for line_result in reader.lines() { - let line = match line_result { + for line in reader.lines() { + let line = match line { Ok(l) => l, Err(e) => { eprintln!("Error reading line in {:?}: {:?}", file_path, e); @@ -102,29 +103,16 @@ fn update_file_with_ips(file_path: &Path, ip_map: &BTreeMap) { } }; - // Funktion zum Extrahieren der führenden Leerzeichen/Tabs - fn get_leading_whitespace(s: &str) -> &str { - s.split_at(s.find(|c: char| !c.is_whitespace()).unwrap_or(s.len())).0 - } - - if (line.contains("@allowedClients") && line.contains("remote_ip")) - || (line.contains("@disallowedClients") && line.contains("remote_ip")) - { - // Ermitteln der führenden Leerzeichen oder Tabs - let leading_whitespace = get_leading_whitespace(&line); - - // Bestimmen, ob es sich um allowed oder disallowed handelt - let is_allowed = line.contains("@allowedClients"); - - // Erstellen der neuen Zeile mit beibehaltenem Einzug - let directive = if is_allowed { - "@allowedClients remote_ip" - } else { - "@disallowedClients not remote_ip" - }; - + if line.contains("@allowedClients") && line.contains("remote_ip") { + // @allowedClients remote_ip aktualisieren let new_ips: Vec = ip_map.values().cloned().collect(); - let new_line = format!("{}{} {}", leading_whitespace, directive, new_ips.join(" ")); + let new_line = format!("@allowedClients remote_ip {}", new_ips.join(" ")); + new_lines.push(new_line); + line_changed = true; + } else if line.contains("@disallowedClients") && line.contains("remote_ip") { + // @disallowedClients not remote_ip aktualisieren + let new_ips: Vec = ip_map.values().cloned().collect(); + let new_line = format!("@disallowedClients not remote_ip {}", new_ips.join(" ")); new_lines.push(new_line); line_changed = true; } else { @@ -143,7 +131,6 @@ fn update_file_with_ips(file_path: &Path, ip_map: &BTreeMap) { return; } }; - for line in new_lines { if let Err(e) = writeln!(writer, "{}", line) { eprintln!("Failed to write to file {:?}: {:?}", file_path, e);