Mercurial > prosody-modules
annotate mod_fallback_vcard/mod_fallback_vcard.lua @ 2670:6e01878103c0
mod_smacks: Ignore user when writing or reading session_cache on prosody 0.9
At least under some circumstances it seems that session.username is nil when
a user tries to resume his session in prosody 0.9.
The username is not relevant when no limiting is done (limiting the number of
entries in the session cache is only possible in prosody 0.10), so this
commit removes the usage of the username when accessing the prosody 0.9 session
cache.
author | tmolitor <thilo@eightysoft.de> |
---|---|
date | Thu, 06 Apr 2017 02:12:14 +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); |