Mercurial > prosody-modules
annotate mod_export_skeletons/skeleton_filter.lua @ 5255:001c8fdc91a4
mod_http_oauth2: Add support for the "openid" scope
This "openid" scope is there to signal access to the userinfo endpoint,
which is needed for OIDC support.
We don't actually check this later because the userinfo endpoint only
returns info embedded in the token itself, but in the future we may want
to check this more carefully.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 16 Mar 2023 17:06:35 +0100 |
parents | b4cc6ee9fc8c |
children |
rev | line source |
---|---|
4822
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
1 #!/usr/bin/env lua |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
2 |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
3 package.path = package.path:gsub("([^;]*)(?[^;]*)", "%1prosody/%2;%1%2"); |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
4 package.cpath = package.cpath:gsub("([^;]*)(?[^;]*)", "%1prosody/%2;%1%2"); |
4815
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 local t_insert = table.insert; |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 local t_sort = table.sort; |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 local jid = require "util.jid"; |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 local st = require "util.stanza"; |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 |
4822
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
12 local xs = require "util.xmppstream"; |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
13 |
4815
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 local function skeleton(s) |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 local o = st.stanza(s.name, { xmlns = s.attr.xmlns }); |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 local children = {}; |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 for _, child in ipairs(s.tags) do t_insert(children, skeleton(child)) end |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 t_sort(children, function(a, b) |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 if a.attr.xmlns == b.attr.xmlns then return a.name < b.name; end |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 return (a.attr.xmlns or "") < (b.attr.xmlns or ""); |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 end); |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 for _, child in ipairs(children) do o:add_direct_child(child); end |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 return o; |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 end |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 local function classify_jid(s) |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 if not s then return "" end |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 local u, h, r = jid.split(s); |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 if r then |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 return "full" |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 elseif u then |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 return "bare" |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 elseif h then |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 return "host" |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 else |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 return "invalid" |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 end |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
39 end |
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
40 |
4822
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
41 local stream_session = { notopen = true }; |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
42 local stream_callbacks = { stream_ns = "jabber:client"; default_ns = "jabber:client" }; |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
43 function stream_callbacks:handlestanza(item) |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
44 local clean = skeleton(item); |
4815
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
45 |
4822
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
46 -- Normalize top level attributes |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
47 clean.attr.type = item.attr.type; |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
48 if clean.attr.type == nil and clean.name == "message" then clean.attr.type = "normal"; end |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
49 clean.attr.id = string.rep("x", math.floor(math.log(1 + #(item.attr.id or ""), 2))); |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
50 clean.attr.from = classify_jid(item.attr.from); |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
51 clean.attr.to = classify_jid(item.attr.to); |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
52 print(clean); |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
53 end |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
54 local stream = xs.new(stream_session, stream_callbacks); |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
55 assert(stream:feed(st.stanza("stream", { xmlns = "jabber:client" }):top_tag())); |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
56 stream_session.notopen = nil; |
4815
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
57 |
4822
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
58 local data = io.read(4096); |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
59 while data do |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
60 stream:feed(data); |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
61 data = io.read(4096); |
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
62 end |
4815
9c2af2146ee2
mod_export_skeletons: Command to aid in analysis of archive contents
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
63 |
4822
b4cc6ee9fc8c
mod_export_skeletons: Add a standalone filter script
Kim Alvefur <zash@zash.se>
parents:
4821
diff
changeset
|
64 assert(stream:feed("</stream>")); |