Software /
code /
prosody
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); |