Mercurial > prosody-modules
diff mod_server_contact_info/mod_server_contact_info.lua @ 5920:254a21a104aa
mod_server_contact_info: Backport from prosody trunk
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 07 Jun 2024 16:14:58 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_server_contact_info/mod_server_contact_info.lua Fri Jun 07 16:14:58 2024 +0100 @@ -0,0 +1,54 @@ +-- 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. +-- + +-- This module is backported from Prosody trunk for the benefit of +-- Prosody 0.12 deployments. The following line will ensure that it won't be +-- loaded in Prosody versions with built-in support for mod_server_info - +-- thus preferring the mod_server_contact_info shipped with Prosody instead. +--% conflicts: mod_server_info + + +local array = require "util.array"; +local it = require "util.iterators"; +local jid = require "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);