From f360ae79e84bf34636ecf83f99e2b995cf3253f1 Mon Sep 17 00:00:00 2001 From: Yaro Kasear Date: Wed, 30 Apr 2025 14:34:11 -0500 Subject: [PATCH] Refactor settings loading to use auto-detection and improve error handling --- listener.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/listener.py b/listener.py index 718b6c5..9b47bda 100755 --- a/listener.py +++ b/listener.py @@ -1,19 +1,31 @@ -#!/usr/bin/env python3 import os import signal import time from collections import defaultdict from scapy.all import sniff, Dot11, RadioTap -from dotenv import dotenv_values +from dotenv import load_dotenv +from pathlib import Path -settings_path = os.path.expanduser("~/wifi_test/settings.env") -config = dotenv_values(settings_path) +# --- Settings.env auto-detection logic --- +SCRIPT_DIRECTORY = Path(__file__).resolve().parent -if not config: - print(f"[!] Failed to load settings from {settings_path}") +# Try intelligent guess of real user home even under sudo +SUDO_USER = os.environ.get("SUDO_USER") +USER_HOME = Path(f"/home/{SUDO_USER}") if SUDO_USER else Path.home() +ENV_PATH = USER_HOME / "wifi_test" / "settings.env" + +# Fallback if all else fails +if not ENV_PATH.exists(): + ENV_PATH = Path("/home/yaro/wifi_test/settings.env") + +if not ENV_PATH.exists(): + print(f"[!] Failed to load settings from {ENV_PATH}") exit(1) -LISTEN_INTERFACE = config.get("LISTEN_INTERFACE", "wlan0") +load_dotenv(dotenv_path=ENV_PATH) + +# Now load settings +LISTEN_INTERFACE = os.getenv("LISTEN_INTERFACE", "wlan0") print(f"[+] Using LISTEN_INTERFACE = {LISTEN_INTERFACE}") # === Globals ===