Mercurial > prosody-hg
view plugins/mod_server_info.lua @ 13976:a2d4c71f5066
mod_admin_shell: Add debug:ping() which prints debug logs until pong
Essentially a verbose version of xmpp:ping(), but more useful for
debugging s2s issues without having to watch (and have enabled) debug
logs at the same time and try to pick out where the start and end are.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 05 Oct 2025 11:08:27 +0200 |
| parents | 1ce18cb3e6cc |
| children |
line wrap: on
line source
local dataforms = require "prosody.util.dataforms"; local server_info_config = module:get_option("server_info", {}); local server_info_custom_fields = module:get_option_array("server_info_extensions"); -- Source: http://xmpp.org/registrar/formtypes.html#http:--jabber.org-network-serverinfo local form_layout = dataforms.new({ { var = "FORM_TYPE"; type = "hidden"; value = "http://jabber.org/network/serverinfo" }; }); if server_info_custom_fields then for _, field in ipairs(server_info_custom_fields) do table.insert(form_layout, field); end end local generated_form; function update_form() local new_form = form_layout:form(server_info_config, "result"); if generated_form then module:remove_item("extension", generated_form); end generated_form = new_form; module:add_item("extension", generated_form); end function add_fields(event) local fields = event.item; for _, field in ipairs(fields) do table.insert(form_layout, field); end update_form(); end function remove_fields(event) local removed_fields = event.item; for _, removed_field in ipairs(removed_fields) do local removed_var = removed_field.var or removed_field.name; for i, field in ipairs(form_layout) do local var = field.var or field.name if var == removed_var then table.remove(form_layout, i); break; end end end update_form(); end module:handle_items("server-info-fields", add_fields, remove_fields); function module.load() update_form(); end
