Mercurial > prosody-modules
annotate mod_fallback_vcard/mod_fallback_vcard.lua @ 6317:7b693a5539ad
mod_auth_http_async: Update documentation
The required async APIs were included in 0.10.0, but at the time of this
writing we only consider 0.12.x and later supported.
The fallback sync API would have made it work with even earlier
versions, but I don't remember specifically and it doesn't matter.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Tue, 02 Sep 2025 21:32:01 +0200 |
| 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); |
