aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/mod_server_contact_info.lua
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/mod_server_contact_info.lua')
-rw-r--r--plugins/mod_server_contact_info.lua38
1 files changed, 26 insertions, 12 deletions
diff --git a/plugins/mod_server_contact_info.lua b/plugins/mod_server_contact_info.lua
index b7f4c7f3..67fed752 100644
--- a/plugins/mod_server_contact_info.lua
+++ b/plugins/mod_server_contact_info.lua
@@ -7,21 +7,22 @@
--
local array = require "prosody.util.array";
-local dataforms = require "prosody.util.dataforms";
+local it = require "prosody.util.iterators";
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 +31,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 it.sorted_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);