Mercurial > prosody-hg
view plugins/mod_server_contact_info.lua @ 14066:b085d32af140 13.0
prosody, prosodyctl: Load loader directly from source directory
This should ensure that loader.lua is loaded from the source directory
and does the right thing when installed with `make install`
There are currently three ways Prosody can be run:
- Directly from the source directory, like `./prosody`
- Installed with `make install`
- Installed into Lua paths with e.g. dh-lua or luarocks
In the first two cases, Lua search paths need to include the source
directory and ensure that `require "prosody.util.json"` ends up loading
`util/json.lua` relative to the installation (CFG_SOURCEDIR) or the
source checkout.
Finally, in the last case where Prosody resources are installed under the
'prosody.*' namespace in regular Lua search paths, then loader.lua should
activate the compatibility mode that makes sure that both
`require"util.json"` and `require"prosody.util.json"` both resolve to
`(one path from of package.path)/prosody/util/json.lua`
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Mon, 09 Feb 2026 16:59:42 +0100 |
| parents | c14659710747 |
| children |
line wrap: on
line source
-- XEP-0157: Contact Addresses for XMPP Services for Prosody -- -- Copyright (C) 2011-2018 Kim Alvefur -- -- This project is MIT/X11 licensed. Please see the -- COPYING file in the source package for more information. -- local array = require "prosody.util.array"; local it = require "prosody.util.iterators"; local jid = require "prosody.util.jid"; local url = require "socket.url"; module:depends("server_info"); -- Source: http://xmpp.org/registrar/formtypes.html#http:--jabber.org-network-serverinfo local address_types = { abuse = "abuse-addresses"; admin = "admin-addresses"; feedback = "feedback-addresses"; sales = "sales-addresses"; security = "security-addresses"; status = "status-addresses"; support = "support-addresses"; }; -- JIDs of configured service admins are used as fallback local admins = module:get_option_inherited_set("admins", {}); local contact_config = module:get_option("contact_info", { admin = array.collect(admins / jid.prep / function(admin) return url.build({scheme = "xmpp"; path = admin}); end); }); local fields = {}; for key, field_var in it.sorted_pairs(address_types) do if contact_config[key] then table.insert(fields, { type = "list-multi"; name = key; var = field_var; value = contact_config[key]; }); end end module:add_item("server-info-fields", fields);
