adacam-api/adacam_api/config.py
Sulkta 2f0d39baef Require AdaMaps API keys via env (no inline default)
Ingest and read keys are now read from environment variables
instead of inline defaults. Validators hard-fail at boot if either
env var is unset.
2026-05-27 09:17:22 -07:00

52 lines
1.2 KiB
Python

"""Config management for adacam-api."""
import json
import os
import uuid
CONFIG_PATH = "/data/adacam/config.json"
FIRMWARE_VERSION = "adacam-1.0.0"
_defaults = {
"device_id": None,
"adamaps_key": "",
"adamaps_api": "https://api.adamaps.org",
"ap_interface": "wlp1s0f0",
"tunnel_host": "",
"tunnel_user": "",
"tunnel_port": 2222,
}
_config = None
def load():
"""Load config from disk, creating defaults if needed."""
global _config
os.makedirs(os.path.dirname(CONFIG_PATH), exist_ok=True)
if os.path.exists(CONFIG_PATH):
with open(CONFIG_PATH) as f:
_config = {**_defaults, **json.load(f)}
else:
_config = _defaults.copy()
# Generate device_id on first run
if not _config.get("device_id"):
_config["device_id"] = str(uuid.uuid4())
save()
return _config
def save():
"""Persist config to disk."""
os.makedirs(os.path.dirname(CONFIG_PATH), exist_ok=True)
with open(CONFIG_PATH, "w") as f:
json.dump(_config, f, indent=2)
def get(key, default=None):
"""Get a config value."""
if _config is None:
load()
return _config.get(key, default)