annotate mod_delay/mod_delay.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 05248d5a7166
children 5e94061c1aa7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2393
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
1 local add_filter = require "util.filters".add_filter;
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
2 local remove_filter = require "util.filters".remove_filter;
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
3 local datetime = require "util.datetime";
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
4
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
5 local xmlns_delay = "urn:xmpp:delay";
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
6
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
7 -- Raise an error if the modules has been loaded as a component in prosody's config
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
8 if module:get_host_type() == "component" then
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
9 error(module.name.." should NOT be loaded as a component, check out http://prosody.im/doc/components", 0);
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
10 end
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
11
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
12 local add_delay = function(stanza, session)
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
13 if stanza and stanza.name == "message" and stanza:get_child("delay", xmlns_delay) == nil then
2435
05248d5a7166 mod_delay: Only add delay to messages of type chat or groupchat (fixes #811)
tmolitor <thilo@eightysoft.de>
parents: 2393
diff changeset
14 -- only add delay tag to chat or groupchat messages (should we add a delay to anything else, too???)
05248d5a7166 mod_delay: Only add delay to messages of type chat or groupchat (fixes #811)
tmolitor <thilo@eightysoft.de>
parents: 2393
diff changeset
15 if stanza.attr.type == "chat" or stanza.attr.type == "groupchat" then
05248d5a7166 mod_delay: Only add delay to messages of type chat or groupchat (fixes #811)
tmolitor <thilo@eightysoft.de>
parents: 2393
diff changeset
16 -- session.log("debug", "adding delay to message %s", tostring(stanza));
05248d5a7166 mod_delay: Only add delay to messages of type chat or groupchat (fixes #811)
tmolitor <thilo@eightysoft.de>
parents: 2393
diff changeset
17 stanza = stanza:tag("delay", { xmlns = xmlns_delay, from = session.host, stamp = datetime.datetime()});
05248d5a7166 mod_delay: Only add delay to messages of type chat or groupchat (fixes #811)
tmolitor <thilo@eightysoft.de>
parents: 2393
diff changeset
18 end
2393
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
19 end
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
20 return stanza;
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
21 end
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
22
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
23 module:hook("resource-bind", function(event)
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
24 add_filter(event.session, "stanzas/in", add_delay, 1);
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
25 end);
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
26
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
27 module:hook("pre-resource-unbind", function (event)
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
28 remove_filter(event.session, "stanzas/in", add_delay);
3b2c94ea0c2e mod_delay: initial commit
tmolitor <thilo@eightysoft.de>
parents:
diff changeset
29 end);