Diff

mod_http_health/mod_http_health.lua @ 5690:9bcd257dea4e

mod_http_health: Provide a health check HTTP endpoint Someone in the chat asked about a health check endpoint, which reminded me of mod_http_status, which was simplified to produce this module.
author Kim Alvefur <zash@zash.se>
date Fri, 06 Oct 2023 16:49:57 +0200
parent 5161:6af2d74daa15
child 5712:09233b625cb9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_http_health/mod_http_health.lua	Fri Oct 06 16:49:57 2023 +0200
@@ -0,0 +1,21 @@
+module:set_global();
+
+
+local modulemanager = require "core.modulemanager";
+
+module:provides("http", {
+	route = {
+		GET = function()
+			for host in pairs(prosody.hosts) do
+				local mods = modulemanager.get_modules(host);
+				for _, mod in pairs(mods) do
+					if mod.module.status_type == "error" then
+						return { status_code = 500; headers = { content_type = "text/plain" }; body = "HAS ERRORS\n" };
+					end
+				end
+			end
+
+			return { status_code = 200; headers = { content_type = "text/plain" }; body = "OK\n" };
+		end;
+	};
+});