🐛 — Fix mail and gotify alerting

This commit is contained in:
Luc Didry 2024-09-18 11:44:40 +02:00
parent 2c5420cc9d
commit c62bf82e0d
No known key found for this signature in database
GPG key ID: EA868E12D0257E3C
3 changed files with 13 additions and 8 deletions

View file

@ -3,6 +3,7 @@
## [Unreleased]
- 💄 — Use a custom User-Agent header
- 🐛 — Fix mail and gotify alerting
## 0.4.0

View file

@ -48,7 +48,8 @@ class ArgosAgent:
async def run(self):
headers = {
"Authorization": f"Bearer {self.auth}",
"User-Agent": f"Argos Panoptes {VERSION} (about: https://argos-monitoring.framasoft.org/)",
"User-Agent": f"Argos Panoptes {VERSION} "
"(about: https://argos-monitoring.framasoft.org/)",
}
self._http_client = httpx.AsyncClient(headers=headers)
logger.info("Running agent against %s", self.server)

View file

@ -1,5 +1,6 @@
import ssl
import smtplib
from email.message import EmailMessage
from typing import List
from urllib.parse import urlparse
@ -107,10 +108,10 @@ See result on {request.url_for('get_result_view', result_id=result.id)}
See results of task on {request.url_for('get_task_results_view', task_id=task.id)}#{result.id}
"""
mail = f"""\
Subject: [Argos] {icon} {urlparse(task.url).netloc}: status {severity}
{msg}"""
mail = EmailMessage()
mail["Subject"] = f"[Argos] {icon} {urlparse(task.url).netloc}: status {severity}"
mail["From"] = config.mailfrom
mail.set_content(msg)
if config.ssl:
logger.debug("Mail notification: SSL")
@ -133,7 +134,7 @@ Subject: [Argos] {icon} {urlparse(task.url).netloc}: status {severity}
for address in config.addresses:
logger.debug("Sending mail to %s", address)
logger.debug(msg)
smtp.sendmail(config.mailfrom, address, mail)
smtp.send_message(mail, to_addrs=address)
def notify_with_gotify(
@ -166,14 +167,16 @@ See results of task on <{request.url_for('get_task_results_view', task_id=task.i
extras = {
"client::display": {"contentType": "text/markdown"},
"client::notification": {
"click": {"url": request.url_for("get_result_view", result_id=result.id)}
"click": {
"url": f"{request.url_for('get_result_view', result_id=result.id)}"
}
},
}
payload = {"title": subject, "message": msg, "priority": priority, "extras": extras}
for url in config:
logger.debug("Sending gotify message(s) to %s", url)
logger.debug("Sending gotify message(s) to %s", url.url)
for token in url.tokens:
try:
res = httpx.post(