Mercurial > prosody-modules
annotate mod_xmllang_check/mod_xmllang_check.lua @ 6546:8a4e6421fd24
mod_storage_xmlarchive: Remove unnecessary percent-encoding of paths
Paths from lfs.dir() are already in the percent-encoded form.
Probably confusion left over since before 1b081c8fc1d9
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 24 May 2026 19:17:22 +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); |
