view mod_server_contact_info/mod_server_contact_info.lua @ 1268:854a3933cfcd

mod_muc_log_http: URL-encode room names. This allows special characters in room names to work. Ideally this escaping shouldn’t be done in the user visible content, but the module’s template system doesn’t currently allow that.
author Waqas Hussain <waqas20@gmail.com>
date Sat, 04 Jan 2014 16:50:57 -0500
parents 4fdcb5c35021
children 465b34fdeb60
line wrap: on
line source

-- This plugin implements http://xmpp.org/extensions/xep-0157.html
local t_insert = table.insert;
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 contact_config = module:get_option("contact_info");
if not contact_config then -- we'll use admins from the config as default
	contact_config = { admin = {}; };
	local admins = module:get_option("admins");
	if not admins or #admins == 0 then
		module:log("debug", "No contact_info or admins in config");
		return -- Nothing to attach, so we'll just skip it.
	end
	module:log("debug", "No contact_info in config, using admins as fallback");
	--TODO fetch global admins too?
	for i = 1,#admins do
		t_insert(contact_config.admin, "xmpp:" .. admins[i])
		module:log("debug", "Added %s to admin-addresses", admins[i]);
	end
end
if not next(contact_config) then
	module:log("debug", "No contacts, skipping");
	return -- No use in serving an empty form.
end
local form_layout = {
	{ value = "http://jabber.org/network/serverinfo"; type = "hidden"; name = "FORM_TYPE"; };
};
local form_values = {};

for t,a in pairs(contact_config) do
	if valid_types[t] and a then
		t_insert(form_layout, { name = t .. "-addresses", type = "list-multi" });
		form_values[t .. "-addresses"] = type(a) == "table" and a or {a};
	end
end

module:add_extension(df_new(form_layout):form(form_values, "result"));