Software / code / prosody-modules
Comparison
mod_delay/mod_delay.lua @ 2393:3b2c94ea0c2e
mod_delay: initial commit
| author | tmolitor <thilo@eightysoft.de> |
|---|---|
| date | Tue, 22 Nov 2016 21:15:01 +0100 |
| child | 2435:05248d5a7166 |
comparison
equal
deleted
inserted
replaced
| 2392:d1e975c24545 | 2393:3b2c94ea0c2e |
|---|---|
| 1 local add_filter = require "util.filters".add_filter; | |
| 2 local remove_filter = require "util.filters".remove_filter; | |
| 3 local datetime = require "util.datetime"; | |
| 4 | |
| 5 local xmlns_delay = "urn:xmpp:delay"; | |
| 6 | |
| 7 -- Raise an error if the modules has been loaded as a component in prosody's config | |
| 8 if module:get_host_type() == "component" then | |
| 9 error(module.name.." should NOT be loaded as a component, check out http://prosody.im/doc/components", 0); | |
| 10 end | |
| 11 | |
| 12 local add_delay = function(stanza, session) | |
| 13 if stanza and stanza.name == "message" and stanza:get_child("delay", xmlns_delay) == nil then | |
| 14 -- session.log("debug", "adding delay to message %s", tostring(stanza)); | |
| 15 stanza = stanza:tag("delay", { xmlns = xmlns_delay, from = session.host, stamp = datetime.datetime()}); | |
| 16 end | |
| 17 return stanza; | |
| 18 end | |
| 19 | |
| 20 module:hook("resource-bind", function(event) | |
| 21 add_filter(event.session, "stanzas/in", add_delay, 1); | |
| 22 end); | |
| 23 | |
| 24 module:hook("pre-resource-unbind", function (event) | |
| 25 remove_filter(event.session, "stanzas/in", add_delay); | |
| 26 end); |