File

plugins/mod_server_contact_info.lua @ 13264:9b720c38fee8

mod_cron: Revert bbd3ac65640d Maybe it is better to run daily and weekly tasks 'now' on the theory that people set these things up during times that are appropriate for maintenance already, so the same time next day or next week might be fine for periodic cleanup.
author Kim Alvefur <zash@zash.se>
date Sun, 30 Jul 2023 13:03:40 +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"));