Diff

mod_http_status/mod_http_status.lua @ 5161:6af2d74daa15

mod_http_status: Report module statuses Uncommitted code from 2021
author Kim Alvefur <zash@zash.se>
date Mon, 30 Jan 2023 00:48:12 +0100
child 5702:e274431bf4ce
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_http_status/mod_http_status.lua	Mon Jan 30 00:48:12 2023 +0100
@@ -0,0 +1,36 @@
+module:set_global();
+
+local json = require "util.json";
+local datetime = require "util.datetime".datetime;
+
+local modulemanager = require "core.modulemanager";
+
+module:provides("http", {
+	route = {
+		GET = function(event)
+			local request, response = event.request, event.response;
+			response.headers.content_type = "application/json";
+
+			local resp = { ["*"] = true };
+
+			for host in pairs(prosody.hosts) do
+				resp[host] = true;
+			end
+
+			for host in pairs(resp) do
+				local hostmods = {};
+				local mods = modulemanager.get_modules(host);
+				for mod_name, mod in pairs(mods) do
+					hostmods[mod_name] = {
+						type = mod.module.status_type;
+						message = mod.module.status_message;
+						time = datetime(math.floor(mod.module.status_time));
+					};
+				end
+				resp[host] = hostmods;
+			end
+
+			return json.encode(resp);
+		end;
+	};
+});