Mercurial > prosody-modules
annotate mod_mam/mamprefsxml.lib.lua @ 3568:6b3181fe5617
mod_auth_token: Timezone fix for TOTP checking
luatz.time() returns milliseconds since epoch which is in UTC time, so we don't
need to convert to UTC with gmtime.
By calling gmtime, TOTP validation was failing when this module wasn't running
on machine set to UTC time.
author | JC Brand <jc@opkode.com> |
---|---|
date | Thu, 02 May 2019 11:07:27 +0200 |
parents | 5941aac79f06 |
children |
rev | line source |
---|---|
1135
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 -- XEP-0313: Message Archive Management for Prosody |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 -- Copyright (C) 2011-2013 Kim Alvefur |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 -- |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 -- This file is MIT/X11 licensed. |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 local st = require"util.stanza"; |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 local default_attrs = { |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 always = true, [true] = "always", |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 never = false, [false] = "never", |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 roster = "roster", |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 } |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 |
2506
5941aac79f06
mod_mam: Add support for XEP-0313 v0.5
Kim Alvefur <zash@zash.se>
parents:
2014
diff
changeset
|
14 local function tostanza(prefs, xmlns_mam) |
1135
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 local default = prefs[false]; |
2014
dfa9c0cdd960
mod_mam: Remove application of defaults from preference xml encoding
Kim Alvefur <zash@zash.se>
parents:
1514
diff
changeset
|
16 default = default_attrs[default]; |
1135
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 local prefstanza = st.stanza("prefs", { xmlns = xmlns_mam, default = default }); |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 local always = st.stanza("always"); |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 local never = st.stanza("never"); |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 for jid, choice in pairs(prefs) do |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 if jid then |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 (choice and always or never):tag("jid"):text(jid):up(); |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 end |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 end |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 prefstanza:add_child(always):add_child(never); |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 return prefstanza; |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 end |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 local function fromstanza(prefstanza) |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 local prefs = {}; |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 local default = prefstanza.attr.default; |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 if default then |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 prefs[false] = default_attrs[default]; |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 end |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 local always = prefstanza:get_child("always"); |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 if always then |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 for rule in always:childtags("jid") do |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 local jid = rule:get_text(); |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
39 prefs[jid] = true; |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
40 end |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
41 end |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
42 |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
43 local never = prefstanza:get_child("never"); |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
44 if never then |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
45 for rule in never:childtags("jid") do |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
46 local jid = rule:get_text(); |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
47 prefs[jid] = false; |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
48 end |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
49 end |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
50 |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
51 return prefs; |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
52 end |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
53 |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
54 return { |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
55 tostanza = tostanza; |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
56 fromstanza = fromstanza; |
0d6ab5e4bc30
mod_mam: Break out routines for converting prefs between XML and our internal representation into a library
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
57 } |