Comparison

plugins/mod_server_contact_info.lua @ 13437:1ba323d6f35c

mod_server_contact_info: Update to publish fields via new mod_server_info
author Matthew Wild <mwild1@gmail.com>
date Fri, 23 Feb 2024 21:14:14 +0000
parent 12981:d795e3bbc0e3
child 13475:c14659710747
comparison
equal deleted inserted replaced
13436:1ce18cb3e6cc 13437:1ba323d6f35c
5 -- This project is MIT/X11 licensed. Please see the 5 -- This project is MIT/X11 licensed. Please see the
6 -- COPYING file in the source package for more information. 6 -- COPYING file in the source package for more information.
7 -- 7 --
8 8
9 local array = require "prosody.util.array"; 9 local array = require "prosody.util.array";
10 local dataforms = require "prosody.util.dataforms";
11 local jid = require "prosody.util.jid"; 10 local jid = require "prosody.util.jid";
12 local url = require "socket.url"; 11 local url = require "socket.url";
13 12
13 module:depends("server_info");
14
14 -- Source: http://xmpp.org/registrar/formtypes.html#http:--jabber.org-network-serverinfo 15 -- Source: http://xmpp.org/registrar/formtypes.html#http:--jabber.org-network-serverinfo
15 local form_layout = dataforms.new({ 16 local address_types = {
16 { var = "FORM_TYPE"; type = "hidden"; value = "http://jabber.org/network/serverinfo" }; 17 abuse = "abuse-addresses";
17 { type = "list-multi"; name = "abuse"; var = "abuse-addresses" }; 18 admin = "admin-addresses";
18 { type = "list-multi"; name = "admin"; var = "admin-addresses" }; 19 feedback = "feedback-addresses";
19 { type = "list-multi"; name = "feedback"; var = "feedback-addresses" }; 20 sales = "sales-addresses";
20 { type = "list-multi"; name = "sales"; var = "sales-addresses" }; 21 security = "security-addresses";
21 { type = "list-multi"; name = "security"; var = "security-addresses" }; 22 status = "status-addresses";
22 { type = "list-multi"; name = "status"; var = "status-addresses" }; 23 support = "support-addresses";
23 { type = "list-multi"; name = "support"; var = "support-addresses" }; 24 };
24 });
25 25
26 -- JIDs of configured service admins are used as fallback 26 -- JIDs of configured service admins are used as fallback
27 local admins = module:get_option_inherited_set("admins", {}); 27 local admins = module:get_option_inherited_set("admins", {});
28 28
29 local contact_config = module:get_option("contact_info", { 29 local contact_config = module:get_option("contact_info", {
30 admin = array.collect(admins / jid.prep / function(admin) return url.build({scheme = "xmpp"; path = admin}); end); 30 admin = array.collect(admins / jid.prep / function(admin) return url.build({scheme = "xmpp"; path = admin}); end);
31 }); 31 });
32 32
33 module:add_extension(form_layout:form(contact_config, "result")); 33 local fields = {};
34
35 for key, field_var in pairs(address_types) do
36 if contact_config[key] then
37 table.insert(fields, {
38 type = "list-multi";
39 name = key;
40 var = field_var;
41 value = contact_config[key];
42 });
43 end
44 end
45
46 module:add_item("server-info-fields", fields);