Comparison

mod_mam/mod_mam.lua @ 1698:55bc42c1d8c5

mod_mam: Semicolons!
author Kim Alvefur <zash@zash.se>
date Tue, 05 May 2015 15:36:57 +0200
parent 1685:cd87a2eba8f2
child 1737:2ee9725c7fc6
comparison
equal deleted inserted replaced
1697:27aa58ed3e2e 1698:55bc42c1d8c5
37 37
38 local archive_store = "archive2"; 38 local archive_store = "archive2";
39 local archive = module:open_store(archive_store, "archive"); 39 local archive = module:open_store(archive_store, "archive");
40 if not archive or archive.name == "null" then 40 if not archive or archive.name == "null" then
41 module:log("error", "Could not open archive storage"); 41 module:log("error", "Could not open archive storage");
42 return 42 return;
43 elseif not archive.find then 43 elseif not archive.find then
44 module:log("error", "mod_%s does not support archiving, switch to mod_storage_sql2", archive._provided_by); 44 module:log("error", "mod_%s does not support archiving, switch to mod_storage_sql2", archive._provided_by);
45 return 45 return;
46 end 46 end
47 47
48 -- Handle prefs. 48 -- Handle prefs.
49 module:hook("iq/self/"..xmlns_mam..":prefs", function(event) 49 module:hook("iq/self/"..xmlns_mam..":prefs", function(event)
50 local origin, stanza = event.origin, event.stanza; 50 local origin, stanza = event.origin, event.stanza;
91 local form = query:get_child("x", "jabber:x:data"); 91 local form = query:get_child("x", "jabber:x:data");
92 if form then 92 if form then
93 local err; 93 local err;
94 form, err = query_form:data(form); 94 form, err = query_form:data(form);
95 if err then 95 if err then
96 origin.send(st.error_reply(stanza, "modify", "bad-request", select(2, next(err)))) 96 origin.send(st.error_reply(stanza, "modify", "bad-request", select(2, next(err))));
97 return true; 97 return true;
98 end 98 end
99 qwith, qstart, qend = form["with"], form["start"], form["end"]; 99 qwith, qstart, qend = form["with"], form["start"], form["end"];
100 qwith = qwith and jid_bare(qwith); -- dataforms does jidprep 100 qwith = qwith and jid_bare(qwith); -- dataforms does jidprep
101 end 101 end
102 102
103 if qstart or qend then -- Validate timestamps 103 if qstart or qend then -- Validate timestamps
104 local vstart, vend = (qstart and timestamp_parse(qstart)), (qend and timestamp_parse(qend)) 104 local vstart, vend = (qstart and timestamp_parse(qstart)), (qend and timestamp_parse(qend));
105 if (qstart and not vstart) or (qend and not vend) then 105 if (qstart and not vstart) or (qend and not vend) then
106 origin.send(st.error_reply(stanza, "modify", "bad-request", "Invalid timestamp")) 106 origin.send(st.error_reply(stanza, "modify", "bad-request", "Invalid timestamp"))
107 return true 107 return true;
108 end 108 end
109 qstart, qend = vstart, vend; 109 qstart, qend = vstart, vend;
110 end 110 end
111 111
112 module:log("debug", "Archive query, id %s with %s from %s until %s)", 112 module:log("debug", "Archive query, id %s with %s from %s until %s)",
134 origin.send(st.error_reply(stanza, "cancel", "internal-server-error", err)); 134 origin.send(st.error_reply(stanza, "cancel", "internal-server-error", err));
135 return true; 135 return true;
136 end 136 end
137 local total = err; 137 local total = err;
138 138
139 origin.send(st.reply(stanza)) 139 origin.send(st.reply(stanza));
140 local msg_reply_attr = { to = stanza.attr.from, from = stanza.attr.to }; 140 local msg_reply_attr = { to = stanza.attr.from, from = stanza.attr.to };
141 141
142 local results = {}; 142 local results = {};
143 143
144 -- Wrap it in stuff and deliver 144 -- Wrap it in stuff and deliver
196 196
197 local function shall_store(user, who) 197 local function shall_store(user, who)
198 -- TODO Cache this? 198 -- TODO Cache this?
199 local prefs = get_prefs(user); 199 local prefs = get_prefs(user);
200 local rule = prefs[who]; 200 local rule = prefs[who];
201 module:log("debug", "%s's rule for %s is %s", user, who, tostring(rule)) 201 module:log("debug", "%s's rule for %s is %s", user, who, tostring(rule));
202 if rule ~= nil then 202 if rule ~= nil then
203 return rule; 203 return rule;
204 else -- Below could be done by a metatable 204 else -- Below could be done by a metatable
205 local default = prefs[false]; 205 local default = prefs[false];
206 module:log("debug", "%s's default rule is %s", user, tostring(default)) 206 module:log("debug", "%s's default rule is %s", user, tostring(default));
207 if default == nil then 207 if default == nil then
208 default = global_default_policy; 208 default = global_default_policy;
209 module:log("debug", "Using global default rule, %s", tostring(default)) 209 module:log("debug", "Using global default rule, %s", tostring(default));
210 end 210 end
211 if default == "roster" then 211 if default == "roster" then
212 return has_in_roster(user, who); 212 return has_in_roster(user, who);
213 end 213 end
214 return default; 214 return default;