Mercurial > prosody-modules
annotate mod_xmllang_check/mod_xmllang_check.lua @ 6562:5da6fb562df9 default tip
mod_unified_push: Fix push error handling (fixes #2000)
Use the error object that send_iq() passes
as an argument to it's reject callback instead of attempting
and failing to do the parsing in the callback itself.
| author | kmq |
|---|---|
| date | Mon, 06 Jul 2026 14:23:57 +0200 |
| parents | de3dc4297035 |
| children |
| rev | line source |
|---|---|
|
6401
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
1 -- Strip invalid xml:lang values from outgoing s2s stanzas. |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
2 -- |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
3 -- xmpplang.lib.lua must return a function that validates xml:lang strings. |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
4 local is_valid_xml_lang = module:require "xmpplang"; |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
5 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
6 local function strip_invalid_xml_lang(element) |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
7 local xml_lang = element.attr["xml:lang"]; |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
8 if xml_lang ~= nil and not is_valid_xml_lang(xml_lang, element) then |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
9 element.attr["xml:lang"] = nil; |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
10 end |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
11 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
12 for child in element:childtags() do |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
13 strip_invalid_xml_lang(child); |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
14 end |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
15 end |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
16 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
17 module:hook("route/remote", function (event) |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
18 -- FIXME should we clone the stanza vs modifying in place? |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
19 -- FIXME should we replace recursively vs checking a specific subset of elements? |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
20 -- FIXME instead of outgoing, should we clean incoming stanzas from everywhere, so invalid xml:lang stanzas are never sent or stored? |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
21 strip_invalid_xml_lang(event.stanza); |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
22 end, 500); |
