From eac9d2f510f4b3e501a700c57e7584d8b701bb5a Mon Sep 17 00:00:00 2001 From: pika Date: Mon, 24 Mar 2025 17:59:09 +0100 Subject: [PATCH] wip --- agent.py | 29 +++++++++++++++++++++++------ app.py | 10 ++++++++-- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/agent.py b/agent.py index d48e130..a5b2192 100644 --- a/agent.py +++ b/agent.py @@ -12,16 +12,17 @@ from datetime import datetime, timedelta from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler from dotenv import load_dotenv +import sys # Load environment variables load_dotenv() -# Configuration (with environment variable support) -CADDYFILE_PATH = os.getenv('CADDYFILE_PATH', '/opt/docker/caddy/conf/Caddyfile') -DASHBOARD_URL = os.getenv('DASHBOARD_URL', 'https://dashboard.example.com/api/update') -SERVER_NAME = os.getenv('SERVER_NAME', socket.gethostname()) -API_KEY = os.getenv('API_KEY') # Required for authentication -CHECK_INTERVAL = int(os.getenv('CHECK_INTERVAL', '60')) # Seconds between checks even if no file change +# Configuration +CADDYFILE_PATH = os.getenv('CADDYFILE_PATH') +DASHBOARD_URL = os.getenv('DASHBOARD_URL') +SERVER_NAME = os.getenv('SERVER_NAME', socket.gethostname()) # Hostname is a reasonable default +API_KEY = os.getenv('API_KEY') +CHECK_INTERVAL = int(os.getenv('CHECK_INTERVAL', '60')) # Default check interval is reasonable # Setup logging logging.basicConfig( @@ -30,6 +31,22 @@ logging.basicConfig( ) logger = logging.getLogger('caddy-agent') +# Validate required configuration +if not CADDYFILE_PATH: + logger.error("CADDYFILE_PATH environment variable not set - cannot monitor Caddyfile") + sys.exit(1) + +if not os.path.exists(CADDYFILE_PATH): + logger.error(f"Caddyfile not found at {CADDYFILE_PATH}") + sys.exit(1) + +if not DASHBOARD_URL: + logger.error("DASHBOARD_URL environment variable not set - cannot send updates") + sys.exit(1) + +if not API_KEY: + logger.warning("API_KEY environment variable not set - authentication will fail!") + # Last data sent to avoid unnecessary updates last_data_sent = None last_send_time = datetime.min diff --git a/app.py b/app.py index 59c3277..6a707ef 100644 --- a/app.py +++ b/app.py @@ -12,9 +12,9 @@ from dotenv import load_dotenv load_dotenv() # Configuration -API_KEY = os.getenv('API_KEY') # Must match agent configuration +API_KEY = os.getenv('API_KEY') DEBUG_MODE = os.getenv('DEBUG_MODE', 'false').lower() == 'true' -CADDYFILE_PATH = os.getenv('CADDYFILE_PATH') # Optional - for direct file reading +CADDYFILE_PATH = os.getenv('CADDYFILE_PATH') # No default - if not set, we don't use local file # Setup logging logging.basicConfig( @@ -26,6 +26,12 @@ logger = logging.getLogger('caddy-dashboard') # Determine if we should use local Caddyfile reading USE_LOCAL_CADDYFILE = CADDYFILE_PATH and os.path.exists(CADDYFILE_PATH) +if CADDYFILE_PATH and not USE_LOCAL_CADDYFILE: + logger.warning(f"CADDYFILE_PATH is set but file not found at: {CADDYFILE_PATH}") + +if not API_KEY: + logger.warning("API_KEY not set - running without authentication! This is insecure.") + app = Flask(__name__) app.config['SECRET_KEY'] = os.urandom(24)