From aaf516bcd501bb10bfcc44d0cd00e13570cdfdcf Mon Sep 17 00:00:00 2001 From: Guy Van Sanden Date: Sat, 2 May 2026 12:49:40 +0200 Subject: [PATCH] Introduced transport and restructured hooks file --- server/src/tellmesrv.py | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/server/src/tellmesrv.py b/server/src/tellmesrv.py index eb025fb..d38a1be 100644 --- a/server/src/tellmesrv.py +++ b/server/src/tellmesrv.py @@ -6,7 +6,6 @@ import yaml import random import logging import os -import os.path from pprint import pprint __version__ = "2.2.0" @@ -33,14 +32,14 @@ config = {} def read_configs(): - global hooks + global hooks, config with open(r'/etc/tellme/hooks.yml') as hooksfile: hooks = yaml.load(hooksfile, Loader=yaml.FullLoader) if os.path.isfile('/etc/tellme/config.yml'): with open(r'/etc/tellme/config.yml') as configfile: - config = yaml.load(configfile, Loader=yaml.FullLoader) + config = yaml.load(configfile, Loader=yaml.FullLoader) def send_smp_message(target, message): @@ -71,13 +70,8 @@ def send_smp_message(target, message): return False -def get(hook_id) - target = None - for key, value in hooks.items(): - if str(key) == str(id): - target = value - - return target +def get_hook(hook_id): + return hooks.get(str(hook_id)) @app.route("/webhook/", methods=['POST']) @@ -101,7 +95,7 @@ def webhook_receiver(id): type = data.get('Type') if type == 'Verification': - message = ("GoAlert verification code: %s" % (data.get('Code`'))) + message = ("GoAlert verification code: %s" % (data.get('Code'))) if type == 'Alert': message = ("Alert %s: %s\n%s" % (data.get('AlertID'), data.get('Summary'), data.get('Details'))) @@ -111,15 +105,26 @@ def webhook_receiver(id): hook = get_hook(id) + if hook is None: + return jsonify({'message': 'Hook not found'}), 404 + + transport = hook.get('transport') target = hook.get('target') - if target is not None: - log.info(target) - if message is not None: - send_smp_message(target, message) - else: - log.error("No message, dropping") + + if transport is not None: + if transport == 'simplex': + if target is not None: + log.info(target) + if message is not None: + send_smp_message(target, message) + else: + log.error("No message, dropping") + else: + log.error("No target found, dropping message") + return jsonify({'message': 'No target found, dropping message'}), 400 else: - log.error("No target found, dropping message") + log.error("No transport found, dropping message") + return jsonify({'message': 'No transport found, dropping message'}), 400 return jsonify({'message': 'Webhook received successfully'}), 200