diff options
Diffstat (limited to 'plugins/mod_server_contact_info.lua')
-rw-r--r-- | plugins/mod_server_contact_info.lua | 56 |
1 files changed, 18 insertions, 38 deletions
diff --git a/plugins/mod_server_contact_info.lua b/plugins/mod_server_contact_info.lua index 7ee8a08f..0110ceaf 100644 --- a/plugins/mod_server_contact_info.lua +++ b/plugins/mod_server_contact_info.lua @@ -1,49 +1,29 @@ -- XEP-0157: Contact Addresses for XMPP Services for Prosody -- --- Copyright (C) 2011-2016 Kim Alvefur +-- Copyright (C) 2011-2018 Kim Alvefur -- --- This file is MIT/X11 licensed. +-- This project is MIT/X11 licensed. Please see the +-- COPYING file in the source package for more information. -- -local t_insert = table.insert; local array = require "util.array"; -local df_new = require "util.dataforms".new; -- Source: http://xmpp.org/registrar/formtypes.html#http:--jabber.org-network-serverinfo -local valid_types = { - abuse = true; - admin = true; - feedback = true; - sales = true; - security = true; - support = true; -} +local form_layout = require "util.dataforms".new({ + { var = "FORM_TYPE"; type = "hidden"; value = "http://jabber.org/network/serverinfo"; }; + { 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 = "support", var = "support-addresses", type = "list-multi" }, +}); -local contact_config = module:get_option("contact_info"); -if not contact_config or not next(contact_config) then -- we'll use admins from the config as default - local admins = module:get_option_inherited_set("admins", {}); - if admins:empty() then - module:log("error", "No contact_info or admins set in config"); - return -- Nothing to attach, so we'll just skip it. - end - module:log("info", "No contact_info in config, using admins as fallback"); - contact_config = { - admin = array.collect( admins / function(admin) return "xmpp:" .. admin; end); - }; -end +-- JIDs of configured service admins are used as fallback +local admins = module:get_option_inherited_set("admins", {}); -local form_layout = { - { value = "http://jabber.org/network/serverinfo"; type = "hidden"; name = "FORM_TYPE"; }; -}; +local contact_config = module:get_option("contact_info", { + admin = array.collect( admins / function(admin) return "xmpp:" .. admin; end); +}); -local form_values = {}; - -for t in pairs(valid_types) do - local addresses = contact_config[t]; - if addresses then - t_insert(form_layout, { name = t .. "-addresses", type = "list-multi" }); - form_values[t .. "-addresses"] = addresses; - end -end - -module:add_extension(df_new(form_layout):form(form_values, "result")); +module:add_extension(form_layout:form(contact_config, "result")); |