Mercurial > prosody-hg
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 |
| parents | d795e3bbc0e3 |
| children | 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); |
