plugins/mod_server_contact_info.lua
author Kim Alvefur <zash@zash.se>
Sat, 23 Mar 2024 20:48:19 +0100
changeset 13465 c673ff1075bd
parent 13441 1ba323d6f35c
child 13479 c14659710747
permissions -rw-r--r--
mod_posix: Move everything to util.startup This allows greater control over the order of events. Notably, the internal ordering between daemonization, initialization of libunbound and setup of signal handling is sensitive. libunbound starts a separate thread for processing DNS requests. If this thread is started before signal handling has been set up, it will not inherit the signal handlers and instead behave as it would have before signal handlers were set up, i.e. cause the whole process to immediately exit. libunbound is usually initialized on the first DNS request, usually triggered by an outgoing s2s connection attempt. If daemonization happens before signals have been set up, signals may not be processed at all.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8260
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     1
-- XEP-0157: Contact Addresses for XMPP Services for Prosody
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     2
--
9337
a86736e0163c mod_server_contact_info: Update copyright header
Kim Alvefur <zash@zash.se>
parents: 9336
diff changeset
     3
-- Copyright (C) 2011-2018 Kim Alvefur
8260
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     4
--
9337
a86736e0163c mod_server_contact_info: Update copyright header
Kim Alvefur <zash@zash.se>
parents: 9336
diff changeset
     5
-- This project is MIT/X11 licensed. Please see the
a86736e0163c mod_server_contact_info: Update copyright header
Kim Alvefur <zash@zash.se>
parents: 9336
diff changeset
     6
-- COPYING file in the source package for more information.
8260
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     7
--
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     8
12981
74b9e05af71e plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 11588
diff changeset
     9
local array = require "prosody.util.array";
74b9e05af71e plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 11588
diff changeset
    10
local jid = require "prosody.util.jid";
11588
8bea29d1f82d mod_server_contact_info: Generate properly escaped URIs from 'admins'
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
    11
local url = require "socket.url";
8260
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    12
13441
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    13
module:depends("server_info");
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    14
8260
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    15
-- Source: http://xmpp.org/registrar/formtypes.html#http:--jabber.org-network-serverinfo
13441
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    16
local address_types = {
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    17
	abuse = "abuse-addresses";
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    18
	admin = "admin-addresses";
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    19
	feedback = "feedback-addresses";
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    20
	sales = "sales-addresses";
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    21
	security = "security-addresses";
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    22
	status = "status-addresses";
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    23
	support = "support-addresses";
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    24
};
8260
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    25
9431
8e7feec95e8d mod_server_contact_info: Comment on fallback to using 'admins'
Kim Alvefur <zash@zash.se>
parents: 9337
diff changeset
    26
-- JIDs of configured service admins are used as fallback
9336
fd704adc62e1 mod_server_contact_info: Simplify
Kim Alvefur <zash@zash.se>
parents: 8260
diff changeset
    27
local admins = module:get_option_inherited_set("admins", {});
8260
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    28
9336
fd704adc62e1 mod_server_contact_info: Simplify
Kim Alvefur <zash@zash.se>
parents: 8260
diff changeset
    29
local contact_config = module:get_option("contact_info", {
11588
8bea29d1f82d mod_server_contact_info: Generate properly escaped URIs from 'admins'
Kim Alvefur <zash@zash.se>
parents: 11587
diff changeset
    30
	admin = array.collect(admins / jid.prep / function(admin) return url.build({scheme = "xmpp"; path = admin}); end);
9336
fd704adc62e1 mod_server_contact_info: Simplify
Kim Alvefur <zash@zash.se>
parents: 8260
diff changeset
    31
});
8260
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    32
13441
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    33
local fields = {};
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    34
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    35
for key, field_var in pairs(address_types) do
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    36
	if contact_config[key] then
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    37
		table.insert(fields, {
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    38
			type = "list-multi";
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    39
			name = key;
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    40
			var = field_var;
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    41
			value = contact_config[key];
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    42
		});
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    43
	end
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    44
end
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    45
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    46
module:add_item("server-info-fields", fields);