Files
0012/scripts/sync-server-env.py
T
Frank Schwenk c007d5ebdc feat: external HTTPS monitoring pull via monitor.php
Add cron-ready pull checks for critical URLs with SSL expiry warnings,
retry-before-alert, JSON results in private/data, email alerts, and a
90-day target-list review reminder.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 10:05:43 +02:00

63 lines
1.5 KiB
Python
Executable File

#!/usr/bin/env python3
"""Copy server-relevant keys from local .env to server.env (never deploys .env)."""
from __future__ import annotations
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
SERVER_KEYS = [
"DOMAIN",
"SMTP_HOST",
"SMTP_PORT",
"SMTP_ENCRYPTION",
"SMTP_USER",
"SMTP_PASSWORD",
"SMTP_FROM",
"ALERT_EMAIL",
"TARGETS_REVIEW_INTERVAL_DAYS",
"MONITOR_INGEST_TOKEN",
"MONITOR_INGEST_URL",
"TELEGRAM_BOT_TOKEN",
"TELEGRAM_CHAT_ID",
]
def load_env(path: Path) -> dict[str, str]:
env: dict[str, str] = {}
for line in path.read_text(encoding="utf-8").splitlines():
line = line.strip()
if not line or line.startswith("#"):
continue
key, _, value = line.partition("=")
env[key.strip()] = value.strip()
return env
def main() -> None:
local = ROOT / ".env"
target = ROOT / "server.env"
if not local.is_file():
raise SystemExit(f"Missing {local}")
src = load_env(local)
lines = [
"# Generated by scripts/sync-server-env.py — do not commit",
"# Deploy: ./scripts/deploy.sh uploads this to private/server.env",
"",
]
for key in SERVER_KEYS:
if key in src:
lines.append(f"{key}={src[key]}")
target.write_text("\n".join(lines) + "\n", encoding="utf-8")
alert = src.get("ALERT_EMAIL", "?")
print(f"Wrote {target.name} (ALERT_EMAIL={alert})")
if __name__ == "__main__":
main()