Annotate

plugins/mod_server_contact_info.lua @ 13471:afad3b2725bf

util.startup: Support systemd Type=notify service type This lets Prosody report its lifecycle status to systemd, so it knows when Prosody has completed its startup, when it's reloading and shutting down. Both Type=notify and Type=notify-reload is supported Example systemd .service configuration snippet: [Service] Type=notify
author Kim Alvefur <zash@zash.se>
date Thu, 04 Apr 2024 19:00:27 +0200
parent 13437:1ba323d6f35c
child 13475: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);