Mercurial > prosody-modules
annotate mod_fallback_vcard/mod_fallback_vcard.lua @ 5553:67152838afbc
mod_http_oauth2: Improve error messages for URI properties
Since there are separate validation checks for URI properties, including
that they should use https, with better and more specific error reporting.
Reverts 'luaPattern' to 'pattern' which is not currently supported by
util.jsonschema, but allows anything that retrieves the schema over http
to validate against it, should they wish to do so.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 17 Jun 2023 18:15:00 +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); |
