view mod_xmllang_check/mod_xmllang_check.lua @ 6519:01d8bfbfc435

mod_pubsub_serverinfo: Fix check for local domain The module was checking whether a host exists, but this may be misleading if our host is loaded before the host that is being checked. This change makes it check the config. This will provide a false positive in the rare case that the host is defined but not activated/enabled. But we don't have an API currently for "is this host configured and enabled?"
author Matthew Wild <mwild1@gmail.com>
date Tue, 21 Apr 2026 19:54:19 +0100
parents de3dc4297035
children
line wrap: on
line source

-- Strip invalid xml:lang values from outgoing s2s stanzas.
--
-- xmpplang.lib.lua must return a function that validates xml:lang strings.
local is_valid_xml_lang = module:require "xmpplang";

local function strip_invalid_xml_lang(element)
	local xml_lang = element.attr["xml:lang"];
	if xml_lang ~= nil and not is_valid_xml_lang(xml_lang, element) then
		element.attr["xml:lang"] = nil;
	end

	for child in element:childtags() do
		strip_invalid_xml_lang(child);
	end
end

module:hook("route/remote", function (event)
	-- FIXME should we clone the stanza vs modifying in place?
	-- FIXME should we replace recursively vs checking a specific subset of elements?
	-- FIXME instead of outgoing, should we clean incoming stanzas from everywhere, so invalid xml:lang stanzas are never sent or stored?
	strip_invalid_xml_lang(event.stanza);
end, 500);