Handle various recipients and multi-number alerts

This commit is contained in:
Théophile Bastian 2022-05-31 13:39:20 +02:00
parent 8f1495cf0c
commit a5576a83c7
3 changed files with 13 additions and 5 deletions

View file

@ -13,7 +13,8 @@ def root() -> t.Tuple[str, int]:
@app.route("/alertmanager", methods=["POST"]) @app.route("/alertmanager", methods=["POST"])
def alertmanager(): @app.route("/alertmanager/<recipient>", methods=["POST"])
def alertmanager(recipient=None):
data = request.get_json(cache=False) data = request.get_json(cache=False)
if "version" not in data or int(data["version"]) != 4: if "version" not in data or int(data["version"]) != 4:
@ -42,6 +43,13 @@ def alertmanager():
msg += "\n\n" msg += "\n\n"
msg += "\n".join(["* " + line for line in alert_lines]) msg += "\n".join(["* " + line for line in alert_lines])
signal.signal_send(configuration.RECIPIENTS[configuration.DEFAULT_RECIPIENT], msg) if recipient is None:
recipient = configuration.DEFAULT_RECIPIENT
try:
recipient_nums = configuration.RECIPIENTS[recipient]
except KeyError:
return "Bad recipient", 400
signal.signal_send(recipient_nums, msg)
return "OK", 200 return "OK", 200

View file

@ -1,5 +1,5 @@
# Signal 'address book' # Signal 'address book'
RECIPIENTS = {"foo": "+42..."} # FIXME RECIPIENTS = {"foo": ["+42..."]} # FIXME
# Recipient from the dict above to send to by default # Recipient from the dict above to send to by default
DEFAULT_RECIPIENT = "foo" # FIXME DEFAULT_RECIPIENT = "foo" # FIXME

View file

@ -5,14 +5,14 @@ from gi.repository.GLib import GError
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def signal_send(recipient, message): def signal_send(recipients, message):
try: try:
bus = SystemBus() bus = SystemBus()
signal_bus = bus.get("org.asamk.Signal") signal_bus = bus.get("org.asamk.Signal")
signal_bus.sendMessage( signal_bus.sendMessage(
message, message,
[], [],
[recipient], recipients,
) )
except GError as exn: except GError as exn:
logger.error("Cannot send Signal notification: %s", exn) logger.error("Cannot send Signal notification: %s", exn)