Diff

mod_nodeinfo2/mod_nodeinfo2.lua @ 3705:5d3d8b75dee9

mod_nodeinfo2: Expose service metadata per NodeInfo2 https://git.feneas.org/jaywink/nodeinfo2
author Kim Alvefur <zash@zash.se>
date Tue, 25 Jun 2019 09:05:59 +0200
child 3706:36b645e94325
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_nodeinfo2/mod_nodeinfo2.lua	Tue Jun 25 09:05:59 2019 +0200
@@ -0,0 +1,58 @@
+local json = require "util.json";
+local array = require "util.array";
+
+module:depends("http");
+
+local total_users = 0;
+for _ in require "core.usermanager".users(module.host) do
+	total_users = total_users + 1;
+end
+
+module:provides("http", {
+	default_path = "/.well-known/x-nodeinfo2";
+	route = {
+		GET = function (event)
+			event.response.headers.content_type = "application/json";
+			return json.encode({
+				version = "1.0";
+				server = {
+					baseUrl = module:http_url("","/");
+					name = module.host;
+					software = "Prosody";
+					version = prosody.version;
+				};
+				--[[
+				organization = {
+					name = "";
+					contact = "";
+					account = "";
+				};
+				--]]
+				protocols = array {
+					"xmpp",
+				};
+				--[[
+				services = {
+					inbound = array {
+						"irc";
+					};
+					outbound = array {
+					};
+				};
+				--]]
+				openRegistrations = module:get_option_boolean("allow_registration", false);
+				usage = {
+					users = {
+						total = total_users;
+						-- activeHalfyear = 1;
+						-- activeMonth = 1;
+						-- activeWeek = 1;
+					};
+					-- localPosts = 0;
+					-- localComments = 0;
+				};
+			});
+		end;
+	}
+});
+