Add home-security-agent with PostgreSQL persistence for dashboard.
The autonomous agent writes all observations to agent.* tables consumed by Homelab Command on port 8765. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
"""Telegram — enige externe meldkanaal."""
|
||||
import os
|
||||
import httpx
|
||||
|
||||
|
||||
def send_message(text: str, parse_mode: str = "HTML") -> bool:
|
||||
token = os.environ.get("TELEGRAM_BOT_TOKEN", "").strip()
|
||||
chat_id = os.environ.get("TELEGRAM_CHAT_ID", "").strip()
|
||||
if not token or not chat_id:
|
||||
return False
|
||||
url = f"https://api.telegram.org/bot{token}/sendMessage"
|
||||
# Telegram max ~4096
|
||||
if len(text) > 4000:
|
||||
text = text[:3990] + "…"
|
||||
r = httpx.post(
|
||||
url,
|
||||
data={"chat_id": chat_id, "text": text, "parse_mode": parse_mode},
|
||||
timeout=30,
|
||||
)
|
||||
return r.status_code == 200
|
||||
|
||||
|
||||
def format_alert(severity: str, title: str, body: str, actions=None) -> str:
|
||||
icon = {"critical": "🔴", "high": "🟠", "medium": "🟡", "low": "🔵", "info": "⚪"}.get(
|
||||
severity, "⚪"
|
||||
)
|
||||
lines = [
|
||||
f"{icon} <b>EL-KADI SECURITY</b> · {severity.upper()}",
|
||||
f"<b>{_esc(title)}</b>",
|
||||
"",
|
||||
_esc(body),
|
||||
]
|
||||
if actions:
|
||||
lines.append("")
|
||||
lines.append("<b>Agent acties:</b>")
|
||||
for a in actions:
|
||||
lines.append(f"• {_esc(a)}")
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def _esc(s: str) -> str:
|
||||
return s.replace("&", "&").replace("<", "<").replace(">", ">")
|
||||
Reference in New Issue
Block a user