view plugins/mod_server_contact_info.lua @ 13147:e560f7c691ce

util.sqlite3: Don't cache prepared statements for one-off queries The :execute method is mainly used for one-off queries such as creating tables and indices. There is no need to cache this prepared statement, as those queries are only done on startup. Further, prepared statements can't be reused without being reset, so this was likely broken anyway.
author Kim Alvefur <zash@zash.se>
date Sat, 10 Jun 2023 22:20:26 +0200
parents d795e3bbc0e3
children 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"));