Add SMTP whitelist alerts

This commit is contained in:
“Naeel”
2026-08-26 13:17:58 +03:00
parent 987336395c
commit 71977d5398
2 changed files with 41 additions and 0 deletions
+12
View File
@@ -122,3 +122,15 @@ Found. Redirecting to /v2/login
WHITELIST_URL=https://whitelist.nodejsk8s.services.ngcloud.ru/v2/app
WHITELIST_TIMEOUT=10
```
## SMTP-алерты
После включения IMAP в настройках Яндекс Почты SMTP-аутентификация успешно прошла для адресов аккаунта через `smtp.yandex.ru:465` с SSL.
В KUMA добавлен `POST /alert`: он получает ответ whitelist и отправляет его по SMTP на `SMTP_TO`. Пароль SMTP хранится только в `.env`.
Добавлена переменная:
```text
SMTP_TO=tazet@narod.ru
```
+29
View File
@@ -1,5 +1,8 @@
#!/usr/bin/env python3
import os
import smtplib
import ssl
from email.message import EmailMessage
from flask import Flask, jsonify
import requests
@@ -44,6 +47,22 @@ def check_whitelist():
}
def send_alert(subject, body):
message = EmailMessage()
message["Subject"] = subject
message["From"] = os.environ["SMTP_FROM"]
message["To"] = os.environ["SMTP_TO"]
message.set_content(body)
with smtplib.SMTP_SSL(
os.getenv("SMTP_HOST", "smtp.yandex.ru"),
int(os.getenv("SMTP_PORT", "465")),
context=ssl.create_default_context(),
timeout=10,
) as smtp:
smtp.login(os.environ["SMTP_USER"], os.environ["SMTP_PASSWORD"])
smtp.send_message(message)
@app.get("/")
def index():
return jsonify({
@@ -69,6 +88,16 @@ def check():
return jsonify({"ok": False, "url": WHITELIST_URL, "error": str(exc)}), 502
@app.post("/alert")
def alert():
payload = requests.get(WHITELIST_URL, timeout=10).text
try:
send_alert("KUMA whitelist alert", payload)
return jsonify({"ok": True, "sent": True})
except (KeyError, OSError, smtplib.SMTPException) as exc:
return jsonify({"ok": False, "sent": False, "error": str(exc)}), 502
@app.get("/mariadb")
def mariadb():
return jsonify(mariadb_configuration())