mod_server_contact_info: Update to publish fields via new mod_server_info

This commit is contained in:
Matthew Wild 2024-02-23 21:14:14 +00:00
parent 96898e05a6
commit fa5346d756

View file

@ -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 @@ local contact_config = module:get_option("contact_info", {
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);