File

mod_http_user_count/mod_http_user_count.lua @ 5442:7480dde4cd2e

mod_auth_oauth_external: Stub not implemented auth module methods Not providing some of these may trigger errors on use, which is something that would be nice to fix on the Prosody side, one day.
author Kim Alvefur <zash@zash.se>
date Wed, 10 May 2023 19:11:25 +0200
parent 1830:a45f2f79e99b
line wrap: on
line source

local it = require "util.iterators";
local jid_split = require "util.jid".prepped_split;

module:depends("http");

local function check_muc(jid)
	local room_name, host = jid_split(jid);
	if not hosts[host] then
		return nil, "No such host: "..host;
	elseif not hosts[host].modules.muc then
		return nil, "Host '"..host.."' is not a MUC service";
	end
	return room_name, host;
end

module:provides("http", {
    route = {
        ["GET /sessions"] = function () return tostring(it.count(it.keys(prosody.full_sessions))); end;
        ["GET /users"] = function () return tostring(it.count(it.keys(prosody.bare_sessions))); end;
        ["GET /host"] = function () return tostring(it.count(it.keys(prosody.hosts[module.host].sessions))); end;
        ["GET /room/*"] = function (request, room_jid)
        	local name, host = check_muc(room_jid);
        	if not name then
        		return "0";
        	end
       		local room = prosody.hosts[host].modules.muc.rooms[name.."@"..host];
       		if not room then
       			return "0";
       		end
        	return tostring(it.count(it.keys(room._occupants)));
        end;
    };
});