plugins/mod_server_contact_info.lua
author Kim Alvefur <zash@zash.se>
Tue, 14 May 2024 17:07:47 +0200
changeset 13494 6f840763fc73
parent 13479 c14659710747
permissions -rw-r--r--
net.server_epoll: Add support for systemd socket activation Allows creating listening sockets and accepting client connections before Prosody starts. This is unlike normal Prosody dynamic resource management, where ports may added and removed at any time, and the ports defined by the config. Weird things happen if these are closed (e.g. due to reload) so here we prevent closing and ensure sockets are reused when opened again.
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";
13479
c14659710747 mod_server_contact_info: Sort form fields to please scansion
Kim Alvefur <zash@zash.se>
parents: 13441
diff changeset
    10
local it = require "prosody.util.iterators";
12981
74b9e05af71e plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 11588
diff changeset
    11
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
    12
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
    13
13441
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    14
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
    15
8260
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    16
-- 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
    17
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
    18
	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
    19
	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
    20
	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
    21
	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
    22
	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
    23
	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
    24
	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
    25
};
8260
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    26
9431
8e7feec95e8d mod_server_contact_info: Comment on fallback to using 'admins'
Kim Alvefur <zash@zash.se>
parents: 9337
diff changeset
    27
-- 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
    28
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
    29
9336
fd704adc62e1 mod_server_contact_info: Simplify
Kim Alvefur <zash@zash.se>
parents: 8260
diff changeset
    30
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
    31
	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
    32
});
8260
c24837f57259 mod_server_contact_info: Import from prosody-modules 2c59f2f0c37d (fixes #778)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    33
13441
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    34
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
    35
13479
c14659710747 mod_server_contact_info: Sort form fields to please scansion
Kim Alvefur <zash@zash.se>
parents: 13441
diff changeset
    36
for key, field_var in it.sorted_pairs(address_types) do
13441
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    37
	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
    38
		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
    39
			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
    40
			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
    41
			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
    42
			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
    43
		});
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
end
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    46
1ba323d6f35c mod_server_contact_info: Update to publish fields via new mod_server_info
Matthew Wild <mwild1@gmail.com>
parents: 12985
diff changeset
    47
module:add_item("server-info-fields", fields);