mod_server_contact_info: Update to publish fields via new mod_server_info
authorMatthew Wild <mwild1@gmail.com>
Fri, 23 Feb 2024 21:14:14 +0000
changeset 13441 1ba323d6f35c
parent 13440 1ce18cb3e6cc
child 13442 0a0dd2505baa
mod_server_contact_info: Update to publish fields via new mod_server_info
plugins/mod_server_contact_info.lua
--- a/plugins/mod_server_contact_info.lua	Fri Feb 23 21:13:10 2024 +0000
+++ b/plugins/mod_server_contact_info.lua	Fri Feb 23 21:14:14 2024 +0000
@@ -7,21 +7,21 @@
 --
 
 local array = require "prosody.util.array";
-local dataforms = require "prosody.util.dataforms";
 local jid = require "prosody.util.jid";
 local url = require "socket.url";
 
+module:depends("server_info");
+
 -- Source: http://xmpp.org/registrar/formtypes.html#http:--jabber.org-network-serverinfo
-local form_layout = dataforms.new({
-	{ var = "FORM_TYPE"; type = "hidden"; value = "http://jabber.org/network/serverinfo" };
-	{ type = "list-multi"; name = "abuse"; var = "abuse-addresses" };
-	{ type = "list-multi"; name = "admin"; var = "admin-addresses" };
-	{ type = "list-multi"; name = "feedback"; var = "feedback-addresses" };
-	{ type = "list-multi"; name = "sales"; var = "sales-addresses" };
-	{ type = "list-multi"; name = "security"; var = "security-addresses" };
-	{ type = "list-multi"; name = "status"; var = "status-addresses" };
-	{ type = "list-multi"; name = "support"; var = "support-addresses" };
-});
+local address_types = {
+	abuse = "abuse-addresses";
+	admin = "admin-addresses";
+	feedback = "feedback-addresses";
+	sales = "sales-addresses";
+	security = "security-addresses";
+	status = "status-addresses";
+	support = "support-addresses";
+};
 
 -- JIDs of configured service admins are used as fallback
 local admins = module:get_option_inherited_set("admins", {});
@@ -30,4 +30,17 @@
 	admin = array.collect(admins / jid.prep / function(admin) return url.build({scheme = "xmpp"; path = admin}); end);
 });
 
-module:add_extension(form_layout:form(contact_config, "result"));
+local fields = {};
+
+for key, field_var in pairs(address_types) do
+	if contact_config[key] then
+		table.insert(fields, {
+			type = "list-multi";
+			name = key;
+			var = field_var;
+			value = contact_config[key];
+		});
+	end
+end
+
+module:add_item("server-info-fields", fields);