diff --git a/hbd/server/http.py b/hbd/server/http.py index 5036bbf..d2fe421 100644 --- a/hbd/server/http.py +++ b/hbd/server/http.py @@ -264,6 +264,7 @@ async def start( get_now=None, VER="", threshold_checker=None, + reload_callback=None, ): """Start an aiohttp web server and block until cancelled. @@ -1319,9 +1320,11 @@ async def start( logger.error("Config write failed: %s", exc) return web.json_response({"error": str(exc)}, status=500) - if hasattr(config, "reload"): + if reload_callback: + await reload_callback() + elif hasattr(config, "reload"): await config.reload() - users_mod.load_users(config) + users_mod.load_users(config) return web.json_response({"ok": True}) @@ -1350,9 +1353,11 @@ async def start( logger.error("Rollback failed: %s", exc) return web.json_response({"error": str(exc)}, status=500) - if hasattr(config, "reload"): + if reload_callback: + await reload_callback() + elif hasattr(config, "reload"): await config.reload() - users_mod.load_users(config) + users_mod.load_users(config) return web.json_response({"ok": True}) @@ -1474,7 +1479,9 @@ async def start( logger.error("Channel create failed: %s", exc) return web.json_response({"error": str(exc)}, status=500) - if hasattr(config, "reload"): + if reload_callback: + await reload_callback() + elif hasattr(config, "reload"): await config.reload() return web.json_response({"ok": True, "name": name}) @@ -1540,7 +1547,9 @@ async def start( logger.error("Channel update failed: %s", exc) return web.json_response({"error": str(exc)}, status=500) - if hasattr(config, "reload"): + if reload_callback: + await reload_callback() + elif hasattr(config, "reload"): await config.reload() return web.json_response({"ok": True}) @@ -1572,7 +1581,9 @@ async def start( logger.error("Channel delete failed: %s", exc) return web.json_response({"error": str(exc)}, status=500) - if hasattr(config, "reload"): + if reload_callback: + await reload_callback() + elif hasattr(config, "reload"): await config.reload() return web.json_response({"ok": True}) @@ -1631,9 +1642,11 @@ async def start( logger.error("User self-update failed: %s", exc) return web.json_response({"error": str(exc)}, status=500) - if hasattr(config, "reload"): + if reload_callback: + await reload_callback() + elif hasattr(config, "reload"): await config.reload() - users_mod.load_users(config) + users_mod.load_users(config) return web.json_response({"ok": True}) diff --git a/hbd/server/main.py b/hbd/server/main.py index 01cd4d0..95c4183 100644 --- a/hbd/server/main.py +++ b/hbd/server/main.py @@ -242,6 +242,9 @@ async def _run_async(config, config_path=None): # upgrade or config change between runs). threshold_checker.purge_stale_alerts(hbdclass) + async def _http_reload_callback(): + await reload_configuration(config, config_path, components) + # HTTP server (asyncio-based via aiohttp) try: http_task = asyncio.create_task( @@ -255,6 +258,7 @@ async def _run_async(config, config_path=None): verbose=config.get("verbose", False), get_now=lambda: time.time(), VER="", + reload_callback=_http_reload_callback, ) ) logger.info( diff --git a/hbd/server/udp.py b/hbd/server/udp.py index afc4a3d..726477b 100644 --- a/hbd/server/udp.py +++ b/hbd/server/udp.py @@ -377,7 +377,7 @@ def handle_datagram(msg: dict, addr, transport, ctx: dict): default_owner = config_mod.get_default_owner(cfg) inferred_owner = plugin_data.get("owner", config_owner or default_owner) host.owner = inferred_owner - logger.info(f"owner for {uname} is '{host.owner}") + logger.info(f"owner for {uname} is {host.owner}") if DEBUG > 1: print(f"Stored plugin data for {uname}: {plugin_name}")