aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/mod_csi.lua
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/mod_csi.lua')
-rw-r--r--plugins/mod_csi.lua23
1 files changed, 23 insertions, 0 deletions
diff --git a/plugins/mod_csi.lua b/plugins/mod_csi.lua
new file mode 100644
index 00000000..84476cac
--- /dev/null
+++ b/plugins/mod_csi.lua
@@ -0,0 +1,23 @@
+local st = require "util.stanza";
+local xmlns_csi = "urn:xmpp:csi:0";
+local csi_feature = st.stanza("csi", { xmlns = xmlns_csi });
+
+module:hook("stream-features", function (event)
+ if event.origin.username then
+ event.features:add_child(csi_feature);
+ end
+end);
+
+function refire_event(name)
+ return function (event)
+ if event.origin.username then
+ event.origin.state = event.stanza.name;
+ module:fire_event(name, event);
+ return true;
+ end
+ end;
+end
+
+module:hook("stanza/"..xmlns_csi..":active", refire_event("csi-client-active"));
+module:hook("stanza/"..xmlns_csi..":inactive", refire_event("csi-client-inactive"));
+