File

plugins/mod_server_contact_info.lua @ 13114:025c38ee885d

util.dependencies: Print tables itself to reduce number of imports Rationale: See diffstat When this module is imported, it ends up calling stty via term_width() in util.human.io.table(). When this happens outside of a terminal, the following message is sent to stdout: stty: 'standard input': Inappropriate ioctl for device Not importing this module avoids that. Furthermore three is value in this module having minimal dependencies as they might not be available when it does the checks. Ref a1fed82c44b9
author Kim Alvefur <zash@zash.se>
date Fri, 26 May 2023 21:18:27 +0200
parent 12981:d795e3bbc0e3
child 13437:1ba323d6f35c
line wrap: on
line source

-- 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 dataforms = require "prosody.util.dataforms";
local jid = require "prosody.util.jid";
local url = require "socket.url";

-- 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" };
});

-- 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);
});

module:add_extension(form_layout:form(contact_config, "result"));