Software / code / prosody-modules
Annotate
mod_csi/mod_csi.lua @ 1496:cccb151a4cc5
mod_list_inactive: Delay joining JIDs until they are used
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Tue, 26 Aug 2014 16:15:23 +0200 |
| parent | 1483:90fe03e65d2c |
| child | 1590:fbb4cd2922a1 |
| rev | line source |
|---|---|
|
1483
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 local st = require "util.stanza"; |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 local csi_feature = st.stanza("csi", { xmlns = "urn:xmpp:csi" }); |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 module:hook("stream-features", function (event) |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 if event.origin.username then |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 event.features:add_child(csi_feature); |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 end |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 end); |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 function refire_event(name) |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 return function (event) |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 if event.origin.username then |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 module:fire_event(name, event); |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 return true; |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 end |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 end; |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 end |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 module:hook("stanza/urn:xmpp:csi:active", refire_event("csi-client-active")); |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 module:hook("stanza/urn:xmpp:csi:inactive", refire_event("csi-client-inactive")); |
|
90fe03e65d2c
mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 |