annotate plugins/mod_server_contact_info.lua @ 13461:c673ff1075bd

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.
author Kim Alvefur <zash@zash.se>
date Sat, 23 Mar 2024 20:48:19 +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);