annotate plugins/mod_server_contact_info.lua @ 13452:69faf3552d52

mod_posix: Move POSIX signal handling into util.startup to avoid race When libunbound is initialized, it spawns a thread to work in. In case a module initializes libunbound, e.g. by triggering a s2s connection, Prosody would not handle signals, instead immediately quit on e.g. the reload (SIGHUP) signal. Likely because the libunbound thread would not have inherited the signal mask from the main Prosody thread. Thanks Menel, riau and franck-x for reporting and help narrowing down
author Kim Alvefur <zash@zash.se>
date Sat, 02 Mar 2024 13:23:24 +0100
parents 1ba323d6f35c
children c14659710747
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8257
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 --
9334
a86736e0163c mod_server_contact_info: Update copyright header
Kim Alvefur <zash@zash.se>
parents: 9333
diff changeset
3 -- Copyright (C) 2011-2018 Kim Alvefur
8257
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 --
9334
a86736e0163c mod_server_contact_info: Update copyright header
Kim Alvefur <zash@zash.se>
parents: 9333
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: 9333
diff changeset
6 -- COPYING file in the source package for more information.
8257
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
12977
74b9e05af71e plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 11584
diff changeset
9 local array = require "prosody.util.array";
74b9e05af71e plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 11584
diff changeset
10 local jid = require "prosody.util.jid";
11584
8bea29d1f82d mod_server_contact_info: Generate properly escaped URIs from 'admins'
Kim Alvefur <zash@zash.se>
parents: 11583
diff changeset
11 local url = require "socket.url";
8257
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12
13437
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12981
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: 12981
diff changeset
14
8257
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
13437
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12981
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: 12981
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: 12981
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: 12981
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: 12981
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: 12981
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: 12981
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: 12981
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: 12981
diff changeset
24 };
8257
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25
9428
8e7feec95e8d mod_server_contact_info: Comment on fallback to using 'admins'
Kim Alvefur <zash@zash.se>
parents: 9334
diff changeset
26 -- JIDs of configured service admins are used as fallback
9333
fd704adc62e1 mod_server_contact_info: Simplify
Kim Alvefur <zash@zash.se>
parents: 8257
diff changeset
27 local admins = module:get_option_inherited_set("admins", {});
8257
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28
9333
fd704adc62e1 mod_server_contact_info: Simplify
Kim Alvefur <zash@zash.se>
parents: 8257
diff changeset
29 local contact_config = module:get_option("contact_info", {
11584
8bea29d1f82d mod_server_contact_info: Generate properly escaped URIs from 'admins'
Kim Alvefur <zash@zash.se>
parents: 11583
diff changeset
30 admin = array.collect(admins / jid.prep / function(admin) return url.build({scheme = "xmpp"; path = admin}); end);
9333
fd704adc62e1 mod_server_contact_info: Simplify
Kim Alvefur <zash@zash.se>
parents: 8257
diff changeset
31 });
8257
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32
13437
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12981
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: 12981
diff changeset
34
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12981
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: 12981
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: 12981
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: 12981
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: 12981
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: 12981
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: 12981
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: 12981
diff changeset
42 });
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12981
diff changeset
43 end
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12981
diff changeset
44 end
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12981
diff changeset
45
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12981
diff changeset
46 module:add_item("server-info-fields", fields);