Mercurial > prosody-modules
annotate mod_fallback_vcard/mod_fallback_vcard.lua @ 5149:fa56ed2bacab
mod_unified_push: Add support for multiple token backends, including stoage
Now that we have ACLs by default, it is no longer necessary to be completely
stateless. On 0.12, using storage has benefits over JWT, because it does not
expose client JIDs to the push apps/services. In trunk, PASETO is stateless
and does not expose client JIDs.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sat, 14 Jan 2023 14:31:37 +0000 |
parents | ceb594a14a18 |
children |
rev | line source |
---|---|
1899
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 local datamanager = require "util.datamanager"; |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 local usermanager = require "core.usermanager"; |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 local st = require "util.stanza"; |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 local host = module.host; |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 local jid_split = require "util.jid".split; |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 local orgname = module:get_option_string("default_vcard_orgname"); |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 local orgmail = module:get_option_boolean("default_vcard_orgmail"); |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 module:hook("iq/bare/vcard-temp:vCard", function(event) |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 local session, stanza = event.origin, event.stanza; |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 local to = stanza.attr.to; |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 local username = jid_split(to); |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 if not username then return end |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 local vcard = datamanager.load(username, host, "vcard"); |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 local data = datamanager.load(username, host, "account_details"); |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 local exists = usermanager.user_exists(username, host); |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 module:log("debug", "has %s: %s", "vcard", tostring(vcard)); |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 module:log("debug", "has %s: %s", "data", tostring(data)); |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 module:log("debug", "has %s: %s", "exists", tostring(exists)); |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 data = data or {}; |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 if not(vcard) and data and exists then |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 -- MAYBE |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 -- first .. " " .. last |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 -- first, last = name:match("^(%w+) (%w+)$") |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 local vcard = st.reply(stanza):tag("vCard", { xmlns = "vcard-temp" }) |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 :tag("VERSION"):text("3.0"):up() |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 :tag("N") |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 :tag("FAMILY"):text(data.last or ""):up() |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 :tag("GIVEN"):text(data.first or ""):up() |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 :up() |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 :tag("FN"):text(data.name or ""):up() |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 :tag("NICKNAME"):text(data.nick or username):up() |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 :tag("JABBERID"):text(username.."@"..host):up(); |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 if orgmail then |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 vcard:tag("EMAIL"):tag("USERID"):text(username.."@"..host):up():up(); |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
39 elseif data.email then |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
40 vcard:tag("EMAIL"):tag("USERID"):text(data.email):up():up(); |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
41 end |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
42 if orgname then |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
43 vcard:tag("ORG"):tag("ORGNAME"):text(orgname):up():up(); |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
44 end |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
45 session.send(vcard); |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
46 return true; |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
47 end |
ceb594a14a18
mod_fallback_vcard: Generates missing vcards from a template
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
48 end, 1); |