mirror of
https://github.com/bjc/prosody.git
synced 2025-04-01 20:27:39 +03:00
The unstable hash table order caused the tests to fail and I don't know how to tell scansion to ignore the order.
47 lines
1.3 KiB
Lua
47 lines
1.3 KiB
Lua
-- XEP-0157: Contact Addresses for XMPP Services for Prosody
|
|
--
|
|
-- Copyright (C) 2011-2018 Kim Alvefur
|
|
--
|
|
-- This project is MIT/X11 licensed. Please see the
|
|
-- COPYING file in the source package for more information.
|
|
--
|
|
|
|
local array = require "prosody.util.array";
|
|
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 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", {});
|
|
|
|
local contact_config = module:get_option("contact_info", {
|
|
admin = array.collect(admins / jid.prep / function(admin) return url.build({scheme = "xmpp"; path = admin}); end);
|
|
});
|
|
|
|
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);
|