plugins/mod_pep.lua

changeset 1622
1ca7a247d04f
parent 1619
ae3250783db2
child 1625
b6645fe7d89f
equal deleted inserted replaced
1618:ba2a92230b77 1622:1ca7a247d04f
28 module:add_identity("pubsub", "pep"); 28 module:add_identity("pubsub", "pep");
29 module:add_feature("http://jabber.org/protocol/pubsub#publish"); 29 module:add_feature("http://jabber.org/protocol/pubsub#publish");
30 30
31 local function publish(session, node, item) 31 local function publish(session, node, item)
32 local disable = #item.tags ~= 1 or #item.tags[1].tags == 0; 32 local disable = #item.tags ~= 1 or #item.tags[1].tags == 0;
33 if #item.tags == 0 then item.name = "retract"; end
33 local bare = session.username..'@'..session.host; 34 local bare = session.username..'@'..session.host;
34 local stanza = st.message({from=bare, type='headline'}) 35 local stanza = st.message({from=bare, type='headline'})
35 :tag('event', {xmlns='http://jabber.org/protocol/pubsub#event'}) 36 :tag('event', {xmlns='http://jabber.org/protocol/pubsub#event'})
36 :tag('items', {node=node}) 37 :tag('items', {node=node})
37 :add_child(item) 38 :add_child(item)
126 local session, stanza = event.origin, event.stanza; 127 local session, stanza = event.origin, event.stanza;
127 if stanza.attr.type == 'set' and (not stanza.attr.to or jid_bare(stanza.attr.from) == stanza.attr.to) then 128 if stanza.attr.type == 'set' and (not stanza.attr.to or jid_bare(stanza.attr.from) == stanza.attr.to) then
128 local payload = stanza.tags[1]; 129 local payload = stanza.tags[1];
129 if payload.name == 'pubsub' then -- <pubsub xmlns='http://jabber.org/protocol/pubsub'> 130 if payload.name == 'pubsub' then -- <pubsub xmlns='http://jabber.org/protocol/pubsub'>
130 payload = payload.tags[1]; 131 payload = payload.tags[1];
131 if payload and payload.name == 'publish' and payload.attr.node then -- <publish node='http://jabber.org/protocol/tune'> 132 if payload and (payload.name == 'publish' or payload.name == 'retract') and payload.attr.node then -- <publish node='http://jabber.org/protocol/tune'>
132 local node = payload.attr.node; 133 local node = payload.attr.node;
133 payload = payload.tags[1]; 134 payload = payload.tags[1];
134 if payload then -- <item> 135 if payload then -- <item>
135 publish(session, node, payload); 136 publish(session, node, payload);
136 return true; 137 return true;

mercurial