first design for parse wireguard files

This commit is contained in:
Désiré Werner Menrath 2025-05-09 12:47:32 +02:00
parent 3ba56da806
commit 2de97aac9a
2 changed files with 92 additions and 0 deletions

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
debug.log
.venv
.idea
.vscode
__pycache__

View File

@ -0,0 +1,87 @@
#!/usr/bin/python3
import os
from pathlib import Path
for_check: list[str] = ["/home/punix/Downloads/itunnels/"]
def parse_files_to_dictionary(directorys: list[str]) -> str | None:
data = {}
# create a Path object for each element in the list.
for directory in directorys:
in_paths = Path(directory)
# Path object(s) created
if not in_paths.exists() or not in_paths.is_dir():
continue
# Get a list of all files in the directorys
files = [file for file in in_paths.iterdir() if file.is_file()]
if not files:
continue
# Search for the string in the files
for file in files:
try:
with open(file, "r") as f:
content = f.read()
# Hier parsen wir die relevanten Zeilen aus dem Inhalt
address_line = next(
line
for line in content.splitlines()
if line.startswith("Address")
)
dns_line = next(
line for line in content.splitlines() if line.startswith("DNS")
)
endpoint_line = next(
line
for line in content.splitlines()
if line.startswith("Endpoint")
)
# Extrahiere die Werte
address = address_line.split("=")[1].strip()
dns = dns_line.split("=")[1].strip()
endpoint = endpoint_line.split("=")[1].strip()
# Speichere im Dictionary
data[file.stem] = {
"Address": address,
"DNS": dns,
"Endpoint": endpoint,
}
except Exception:
# Ignore errors and continue to the next file
continue
return data
def print_data(data):
if not data:
print("No data found.")
return
for filename, values in data.items():
print(f"{filename}")
print()
tunnel = input("please entry name of Tunnel:\n\n")
if tunnel not in data:
print("Tunnel not found.")
return
values = data[tunnel]
os.system("clear")
print(f"Data for tunnel: {tunnel}")
print("-" * (17 + len(tunnel)) + "\n")
print(f"Address: {values['Address']}\n")
print(f"DNS: {values['DNS']}\n")
print(f"Endpoint: {values['Endpoint']}\n")
print()
data = parse_files_to_dictionary(for_check)
print_data(data)