annotate mod_vjud/vcard.lib.lua @ 5298:12f7d8b901e0

mod_audit: Support for adding location (GeoIP) to audit events This can be more privacy-friendly than logging full IP addresses, and also more informative to a user - IP addresses don't mean much to the average person, however if they see activity from outside their expected country, they can immediately identify suspicious activity. As with IPs, this field is configurable for deployments that would like to disable it. Location is also not logged when the geoip library is not available.
author Matthew Wild <mwild1@gmail.com>
date Sat, 01 Apr 2023 13:11:53 +0100
parents 7dbde05b48a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 -- Copyright (C) 2011-2012 Kim Alvefur
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
2 --
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 -- This project is MIT/X11 licensed. Please see the
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 -- COPYING file in the source package for more information.
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 --
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 -- TODO
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
8 -- Fix folding.
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 local st = require "util.stanza";
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 local t_insert, t_concat = table.insert, table.concat;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 local type = type;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 local next, pairs, ipairs = next, pairs, ipairs;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
15 local from_text, to_text, from_xep54, to_xep54;
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
16
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
17 local line_sep = "\n";
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
18
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
19 local vCard_dtd; -- See end of file
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
21 local function fold_line()
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
22 error "Not implemented" --TODO
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
23 end
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
24 local function unfold_line()
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
25 error "Not implemented"
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
26 -- gsub("\r?\n[ \t]([^\r\n])", "%1");
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
27 end
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 local function vCard_esc(s)
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 return s:gsub("[,:;\\]", "\\%1"):gsub("\n","\\n");
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 local function vCard_unesc(s)
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 return s:gsub("\\?[\\nt:;,]", {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 ["\\\\"] = "\\",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
36 ["\\n"] = "\n",
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
37 ["\\r"] = "\r",
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
38 ["\\t"] = "\t",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
39 ["\\:"] = ":", -- FIXME Shouldn't need to espace : in values, just params
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
40 ["\\;"] = ";",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
41 ["\\,"] = ",",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
42 [":"] = "\29",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
43 [";"] = "\30",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
44 [","] = "\31",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
45 });
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
46 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
47
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
48 local function item_to_xep54(item)
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
49 local t = st.stanza(item.name, { xmlns = "vcard-temp" });
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
50
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
51 local prop_def = vCard_dtd[item.name];
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
52 if prop_def == "text" then
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
53 t:text(item[1]);
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
54 elseif type(prop_def) == "table" then
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
55 if prop_def.types and item.TYPE then
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
56 if type(item.TYPE) == "table" then
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
57 for _,v in pairs(prop_def.types) do
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
58 for _,typ in pairs(item.TYPE) do
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
59 if typ:upper() == v then
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
60 t:tag(v):up();
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
61 break;
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
62 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
63 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
64 end
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
65 else
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
66 t:tag(item.TYPE:upper()):up();
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
67 end
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
68 end
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
69
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
70 if prop_def.props then
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
71 for _,v in pairs(prop_def.props) do
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
72 if item[v] then
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
73 t:tag(v):up();
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
74 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
75 end
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
76 end
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
77
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
78 if prop_def.value then
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
79 t:tag(prop_def.value):text(item[1]):up();
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
80 elseif prop_def.values then
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
81 local prop_def_values = prop_def.values;
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
82 local repeat_last = prop_def_values.behaviour == "repeat-last" and prop_def_values[#prop_def_values];
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
83 for i=1,#item do
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
84 t:tag(prop_def.values[i] or repeat_last):text(item[i]):up();
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
85 end
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
86 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
87 end
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
88
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
89 return t;
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
90 end
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
91
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
92 local function vcard_to_xep54(vCard)
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
93 local t = st.stanza("vCard", { xmlns = "vcard-temp" });
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
94 for i=1,#vCard do
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
95 t:add_child(item_to_xep54(vCard[i]));
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
96 end
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
97 return t;
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
98 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
99
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
100 function to_xep54(vCards)
806
d15a9eaa63ea mod_vjud/vcard.lib: Handle empty vcards (thanks mva)
Kim Alvefur <zash@zash.se>
parents: 788
diff changeset
101 if not vCards[1] or vCards[1].name then
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
102 return vcard_to_xep54(vCards)
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
103 else
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
104 local t = st.stanza("xCard", { xmlns = "vcard-temp" });
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
105 for i=1,#vCards do
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
106 t:add_child(vcard_to_xep54(vCards[i]));
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
107 end
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
108 return t;
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
109 end
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
110 end
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
111
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
112 function from_text(data)
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
113 data = data -- unfold and remove empty lines
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
114 :gsub("\r\n","\n")
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
115 :gsub("\n ", "")
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
116 :gsub("\n\n+","\n");
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
117 local vCards = {};
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
118 local c; -- current item
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
119 for line in data:gmatch("[^\n]+") do
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
120 local line = vCard_unesc(line);
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
121 local name, params, value = line:match("^([-%a]+)(\30?[^\29]*)\29(.*)$");
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
122 value = value:gsub("\29",":");
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
123 if #params > 0 then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
124 local _params = {};
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
125 for k,isval,v in params:gmatch("\30([^=]+)(=?)([^\30]*)") do
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
126 k = k:upper();
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
127 local _vt = {};
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
128 for _p in v:gmatch("[^\31]+") do
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
129 _vt[#_vt+1]=_p
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
130 _vt[_p]=true;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
131 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
132 if isval == "=" then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
133 _params[k]=_vt;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
134 else
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
135 _params[k]=true;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
136 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
137 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
138 params = _params;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
139 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
140 if name == "BEGIN" and value == "VCARD" then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
141 c = {};
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
142 vCards[#vCards+1] = c;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
143 elseif name == "END" and value == "VCARD" then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
144 c = nil;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
145 elseif vCard_dtd[name] then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
146 local dtd = vCard_dtd[name];
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
147 local p = { name = name };
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
148 c[#c+1]=p;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
149 --c[name]=p;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
150 local up = c;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
151 c = p;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
152 if dtd.types then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
153 for _, t in ipairs(dtd.types) do
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
154 local t = t:lower();
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
155 if ( params.TYPE and params.TYPE[t] == true)
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
156 or params[t] == true then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
157 c.TYPE=t;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
158 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
159 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
160 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
161 if dtd.props then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
162 for _, p in ipairs(dtd.props) do
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
163 if params[p] then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
164 if params[p] == true then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
165 c[p]=true;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
166 else
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
167 for _, prop in ipairs(params[p]) do
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
168 c[p]=prop;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
169 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
170 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
171 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
172 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
173 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
174 if dtd == "text" or dtd.value then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
175 t_insert(c, value);
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
176 elseif dtd.values then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
177 local value = "\30"..value;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
178 for p in value:gmatch("\30([^\30]*)") do
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
179 t_insert(c, p);
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
180 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
181 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
182 c = up;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
183 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
184 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
185 return vCards;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
186 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
187
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
188 local function item_to_text(item)
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
189 local value = {};
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
190 for i=1,#item do
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
191 value[i] = vCard_esc(item[i]);
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
192 end
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
193 value = t_concat(value, ";");
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
194
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
195 local params = "";
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
196 for k,v in pairs(item) do
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
197 if type(k) == "string" and k ~= "name" then
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
198 params = params .. (";%s=%s"):format(k, type(v) == "table" and t_concat(v,",") or v);
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
199 end
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
200 end
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
201
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
202 return ("%s%s:%s"):format(item.name, params, value)
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
203 end
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
204
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
205 local function vcard_to_text(vcard)
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
206 local t={};
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
207 t_insert(t, "BEGIN:VCARD")
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
208 for i=1,#vcard do
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
209 t_insert(t, item_to_text(vcard[i]));
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
210 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
211 t_insert(t, "END:VCARD")
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
212 return t_concat(t, line_sep);
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
213 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
214
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
215 function to_text(vCards)
806
d15a9eaa63ea mod_vjud/vcard.lib: Handle empty vcards (thanks mva)
Kim Alvefur <zash@zash.se>
parents: 788
diff changeset
216 if vCards[1] and vCards[1].name then
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
217 return vcard_to_text(vCards)
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
218 else
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
219 local t = {};
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
220 for i=1,#vCards do
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
221 t[i]=vcard_to_text(vCards[i]);
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
222 end
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
223 return t_concat(t, line_sep);
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
224 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
225 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
226
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
227 local function from_xep54_item(item)
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
228 local prop_name = item.name;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
229 local prop_def = vCard_dtd[prop_name];
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
230
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
231 local prop = { name = prop_name };
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
232
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
233 if prop_def == "text" then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
234 prop[1] = item:get_text();
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
235 elseif type(prop_def) == "table" then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
236 if prop_def.value then --single item
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
237 prop[1] = item:get_child_text(prop_def.value) or "";
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
238 elseif prop_def.values then --array
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
239 local value_names = prop_def.values;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
240 if value_names.behaviour == "repeat-last" then
788
aeb0999f12fa mod_vjud/vcard.lib: Iterate on tags instead of items (thanks mva)
Kim Alvefur <zash@zash.se>
parents: 734
diff changeset
241 for i=1,#item.tags do
aeb0999f12fa mod_vjud/vcard.lib: Iterate on tags instead of items (thanks mva)
Kim Alvefur <zash@zash.se>
parents: 734
diff changeset
242 t_insert(prop, item.tags[i]:get_text() or "");
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
243 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
244 else
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
245 for i=1,#value_names do
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
246 t_insert(prop, item:get_child_text(value_names[i]) or "");
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
247 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
248 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
249 elseif prop_def.names then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
250 local names = prop_def.names;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
251 for i=1,#names do
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
252 if item:get_child(names[i]) then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
253 prop[1] = names[i];
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
254 break;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
255 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
256 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
257 end
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
258
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
259 if prop_def.props_verbatim then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
260 for k,v in pairs(prop_def.props_verbatim) do
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
261 prop[k] = v;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
262 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
263 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
264
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
265 if prop_def.types then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
266 local types = prop_def.types;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
267 prop.TYPE = {};
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
268 for i=1,#types do
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
269 if item:get_child(types[i]) then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
270 t_insert(prop.TYPE, types[i]:lower());
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
271 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
272 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
273 if #prop.TYPE == 0 then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
274 prop.TYPE = nil;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
275 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
276 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
277
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
278 -- A key-value pair, within a key-value pair?
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
279 if prop_def.props then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
280 local params = prop_def.props;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
281 for i=1,#params do
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
282 local name = params[i]
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
283 local data = item:get_child_text(name);
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
284 if data then
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
285 prop[name] = prop[name] or {};
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
286 t_insert(prop[name], data);
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
287 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
288 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
289 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
290 else
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
291 return nil
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
292 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
293
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
294 return prop;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
295 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
296
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
297 local function from_xep54_vCard(vCard)
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
298 local tags = vCard.tags;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
299 local t = {};
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
300 for i=1,#tags do
734
81de1e446bfe mod_vjud: Don't break on undefined properties.
Kim Alvefur <zash@zash.se>
parents: 732
diff changeset
301 t_insert(t, from_xep54_item(tags[i]));
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
302 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
303 return t
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
304 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
305
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
306 function from_xep54(vCard)
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
307 if vCard.attr.xmlns ~= "vcard-temp" then
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
308 return nil, "wrong-xmlns";
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
309 end
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
310 if vCard.name == "xCard" then -- A collection of vCards
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
311 local t = {};
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
312 local vCards = vCard.tags;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
313 for i=1,#vCards do
734
81de1e446bfe mod_vjud: Don't break on undefined properties.
Kim Alvefur <zash@zash.se>
parents: 732
diff changeset
314 t[i] = from_xep54_vCard(vCards[i]);
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
315 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
316 return t
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
317 elseif vCard.name == "vCard" then -- A single vCard
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
318 return from_xep54_vCard(vCard)
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
319 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
320 end
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
321
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
322 -- This was adapted from http://xmpp.org/extensions/xep-0054.html#dtd
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
323 vCard_dtd = {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
324 VERSION = "text", --MUST be 3.0, so parsing is redundant
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
325 FN = "text",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
326 N = {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
327 values = {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
328 "FAMILY",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
329 "GIVEN",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
330 "MIDDLE",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
331 "PREFIX",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
332 "SUFFIX",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
333 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
334 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
335 NICKNAME = "text",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
336 PHOTO = {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
337 props_verbatim = { ENCODING = { "b" } },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
338 props = { "TYPE" },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
339 value = "BINVAL", --{ "EXTVAL", },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
340 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
341 BDAY = "text",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
342 ADR = {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
343 types = {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
344 "HOME",
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
345 "WORK",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
346 "POSTAL",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
347 "PARCEL",
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
348 "DOM",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
349 "INTL",
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
350 "PREF",
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
351 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
352 values = {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
353 "POBOX",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
354 "EXTADD",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
355 "STREET",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
356 "LOCALITY",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
357 "REGION",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
358 "PCODE",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
359 "CTRY",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
360 }
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
361 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
362 LABEL = {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
363 types = {
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
364 "HOME",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
365 "WORK",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
366 "POSTAL",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
367 "PARCEL",
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
368 "DOM",
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
369 "INTL",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
370 "PREF",
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
371 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
372 value = "LINE",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
373 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
374 TEL = {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
375 types = {
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
376 "HOME",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
377 "WORK",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
378 "VOICE",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
379 "FAX",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
380 "PAGER",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
381 "MSG",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
382 "CELL",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
383 "VIDEO",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
384 "BBS",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
385 "MODEM",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
386 "ISDN",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
387 "PCS",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
388 "PREF",
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
389 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
390 value = "NUMBER",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
391 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
392 EMAIL = {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
393 types = {
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
394 "HOME",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
395 "WORK",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
396 "INTERNET",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
397 "PREF",
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 806
diff changeset
398 "X400",
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
399 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
400 value = "USERID",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
401 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
402 JABBERID = "text",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
403 MAILER = "text",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
404 TZ = "text",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
405 GEO = {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
406 values = {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
407 "LAT",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
408 "LON",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
409 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
410 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
411 TITLE = "text",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
412 ROLE = "text",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
413 LOGO = "copy of PHOTO",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
414 AGENT = "text",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
415 ORG = {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
416 values = {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
417 behaviour = "repeat-last",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
418 "ORGNAME",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
419 "ORGUNIT",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
420 }
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
421 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
422 CATEGORIES = {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
423 values = "KEYWORD",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
424 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
425 NOTE = "text",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
426 PRODID = "text",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
427 REV = "text",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
428 SORTSTRING = "text",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
429 SOUND = "copy of PHOTO",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
430 UID = "text",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
431 URL = "text",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
432 CLASS = {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
433 names = { -- The item.name is the value if it's one of these.
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
434 "PUBLIC",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
435 "PRIVATE",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
436 "CONFIDENTIAL",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
437 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
438 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
439 KEY = {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
440 props = { "TYPE" },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
441 value = "CRED",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
442 },
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
443 DESC = "text",
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
444 };
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
445 vCard_dtd.LOGO = vCard_dtd.PHOTO;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
446 vCard_dtd.SOUND = vCard_dtd.PHOTO;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
447
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
448 return {
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
449 from_text = from_text;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
450 to_text = to_text;
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
451
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
452 from_xep54 = from_xep54;
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
453 to_xep54 = to_xep54;
732
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
454
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
455 -- COMPAT:
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
456 lua_to_text = to_text;
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
457 lua_to_xep54 = to_xep54;
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
458
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
459 text_to_lua = from_text;
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
460 text_to_xep54 = function (...) return to_xep54(from_text(...)); end;
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
461
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
462 xep54_to_lua = from_xep54;
317e142fe6f1 mod_vjud: Update util.vcard from verse
Kim Alvefur <zash@zash.se>
parents: 716
diff changeset
463 xep54_to_text = function (...) return to_text(from_xep54(...)) end;
716
dac33b8f190b mod_vjud: Depends on vcard lib from verse, so add that.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
464 };