annotate mod_fallback_vcard/mod_fallback_vcard.lua @ 3965:2b10e51d85a6

mod_muc_limits: Add config option to limit to join stanzas only This is a bit more limited in pre-0.11 MUC modules, because it just detects stanzas sent to full JIDs (which would include all presence and nick changes). This option is useful for setups where users are typically unaffiliated, but trusted (e.g. if access to the room is gated through some other means such as password/token auth).
author Matthew Wild <mwild1@gmail.com>
date Fri, 03 Apr 2020 12:26:56 +0100
parents ceb594a14a18
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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);