Send alert emails from alert script
This commit is contained in:
+79
-4
@@ -1,8 +1,83 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
CONFIG_FILE="/opt/appfactory/config/appfactory.env"
|
||||||
|
|
||||||
|
if [ -f "$CONFIG_FILE" ]; then
|
||||||
|
set -a
|
||||||
|
source "$CONFIG_FILE"
|
||||||
|
set +a
|
||||||
|
fi
|
||||||
|
|
||||||
|
EVENT_TYPE="${APPFACTORY_ALERT_EVENT_TYPE:-unknown}"
|
||||||
|
SERVICE_ID="${APPFACTORY_ALERT_SERVICE_ID:-unknown}"
|
||||||
|
INCIDENT_ID="${APPFACTORY_ALERT_INCIDENT_ID:-unknown}"
|
||||||
|
PAYLOAD="${APPFACTORY_ALERT_PAYLOAD_JSON:-{}}"
|
||||||
|
|
||||||
echo "ALERT"
|
echo "ALERT"
|
||||||
echo "EVENT_TYPE=${APPFACTORY_ALERT_EVENT_TYPE:-}"
|
echo "EVENT_TYPE=$EVENT_TYPE"
|
||||||
echo "SERVICE_ID=${APPFACTORY_ALERT_SERVICE_ID:-}"
|
echo "SERVICE_ID=$SERVICE_ID"
|
||||||
echo "INCIDENT_ID=${APPFACTORY_ALERT_INCIDENT_ID:-}"
|
echo "INCIDENT_ID=$INCIDENT_ID"
|
||||||
echo "PAYLOAD=${APPFACTORY_ALERT_PAYLOAD_JSON:-}"
|
echo "PAYLOAD=$PAYLOAD"
|
||||||
|
|
||||||
|
if [ "${ALERT_EMAIL_ENABLED:-0}" != "1" ]; then
|
||||||
|
echo "Email alert disabled."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
python3 - <<'PY'
|
||||||
|
import os
|
||||||
|
import smtplib
|
||||||
|
from email.message import EmailMessage
|
||||||
|
|
||||||
|
event_type = os.getenv("APPFACTORY_ALERT_EVENT_TYPE", "unknown")
|
||||||
|
service_id = os.getenv("APPFACTORY_ALERT_SERVICE_ID", "unknown")
|
||||||
|
incident_id = os.getenv("APPFACTORY_ALERT_INCIDENT_ID", "unknown")
|
||||||
|
payload = os.getenv("APPFACTORY_ALERT_PAYLOAD_JSON", "{}")
|
||||||
|
|
||||||
|
smtp_host = os.getenv("SMTP_HOST")
|
||||||
|
smtp_port = int(os.getenv("SMTP_PORT", "587"))
|
||||||
|
smtp_username = os.getenv("SMTP_USERNAME")
|
||||||
|
smtp_password = os.getenv("SMTP_PASSWORD")
|
||||||
|
smtp_from = os.getenv("SMTP_FROM") or smtp_username
|
||||||
|
alert_to = os.getenv("ALERT_EMAIL_TO")
|
||||||
|
|
||||||
|
missing = [
|
||||||
|
name for name, value in {
|
||||||
|
"SMTP_HOST": smtp_host,
|
||||||
|
"SMTP_USERNAME": smtp_username,
|
||||||
|
"SMTP_PASSWORD": smtp_password,
|
||||||
|
"SMTP_FROM": smtp_from,
|
||||||
|
"ALERT_EMAIL_TO": alert_to,
|
||||||
|
}.items()
|
||||||
|
if not value
|
||||||
|
]
|
||||||
|
|
||||||
|
if missing:
|
||||||
|
raise SystemExit("Missing email config: " + ", ".join(missing))
|
||||||
|
|
||||||
|
subject = f"[CSBot Alert] {event_type} - {service_id}"
|
||||||
|
|
||||||
|
body = f"""CSBot Services Portal alert
|
||||||
|
|
||||||
|
Událost: {event_type}
|
||||||
|
Služba: {service_id}
|
||||||
|
Incident ID: {incident_id}
|
||||||
|
|
||||||
|
Payload:
|
||||||
|
{payload}
|
||||||
|
"""
|
||||||
|
|
||||||
|
msg = EmailMessage()
|
||||||
|
msg["From"] = smtp_from
|
||||||
|
msg["To"] = alert_to
|
||||||
|
msg["Subject"] = subject
|
||||||
|
msg.set_content(body)
|
||||||
|
|
||||||
|
with smtplib.SMTP(smtp_host, smtp_port, timeout=20) as smtp:
|
||||||
|
smtp.starttls()
|
||||||
|
smtp.login(smtp_username, smtp_password)
|
||||||
|
smtp.send_message(msg)
|
||||||
|
|
||||||
|
print(f"Email sent to {alert_to}")
|
||||||
|
PY
|
||||||
Reference in New Issue
Block a user