wip
This commit is contained in:
parent
950d72aba1
commit
eac9d2f510
2 changed files with 31 additions and 8 deletions
29
agent.py
29
agent.py
|
@ -12,16 +12,17 @@ from datetime import datetime, timedelta
|
||||||
from watchdog.observers import Observer
|
from watchdog.observers import Observer
|
||||||
from watchdog.events import FileSystemEventHandler
|
from watchdog.events import FileSystemEventHandler
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
import sys
|
||||||
|
|
||||||
# Load environment variables
|
# Load environment variables
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
|
|
||||||
# Configuration (with environment variable support)
|
# Configuration
|
||||||
CADDYFILE_PATH = os.getenv('CADDYFILE_PATH', '/opt/docker/caddy/conf/Caddyfile')
|
CADDYFILE_PATH = os.getenv('CADDYFILE_PATH')
|
||||||
DASHBOARD_URL = os.getenv('DASHBOARD_URL', 'https://dashboard.example.com/api/update')
|
DASHBOARD_URL = os.getenv('DASHBOARD_URL')
|
||||||
SERVER_NAME = os.getenv('SERVER_NAME', socket.gethostname())
|
SERVER_NAME = os.getenv('SERVER_NAME', socket.gethostname()) # Hostname is a reasonable default
|
||||||
API_KEY = os.getenv('API_KEY') # Required for authentication
|
API_KEY = os.getenv('API_KEY')
|
||||||
CHECK_INTERVAL = int(os.getenv('CHECK_INTERVAL', '60')) # Seconds between checks even if no file change
|
CHECK_INTERVAL = int(os.getenv('CHECK_INTERVAL', '60')) # Default check interval is reasonable
|
||||||
|
|
||||||
# Setup logging
|
# Setup logging
|
||||||
logging.basicConfig(
|
logging.basicConfig(
|
||||||
|
@ -30,6 +31,22 @@ logging.basicConfig(
|
||||||
)
|
)
|
||||||
logger = logging.getLogger('caddy-agent')
|
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 to avoid unnecessary updates
|
||||||
last_data_sent = None
|
last_data_sent = None
|
||||||
last_send_time = datetime.min
|
last_send_time = datetime.min
|
||||||
|
|
10
app.py
10
app.py
|
@ -12,9 +12,9 @@ from dotenv import load_dotenv
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
|
|
||||||
# Configuration
|
# 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'
|
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
|
# Setup logging
|
||||||
logging.basicConfig(
|
logging.basicConfig(
|
||||||
|
@ -26,6 +26,12 @@ logger = logging.getLogger('caddy-dashboard')
|
||||||
# Determine if we should use local Caddyfile reading
|
# Determine if we should use local Caddyfile reading
|
||||||
USE_LOCAL_CADDYFILE = CADDYFILE_PATH and os.path.exists(CADDYFILE_PATH)
|
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 = Flask(__name__)
|
||||||
app.config['SECRET_KEY'] = os.urandom(24)
|
app.config['SECRET_KEY'] = os.urandom(24)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue