util.pposix: Compatibility with Solaris systems (thanks Filip)
[prosody.git] / plugins / mod_pep.lua
index 0be681fbcae4a5f390a2017d8192f30fc94f431a..842f1fcec04af2609b2513b28f25eaef64957edf 100644 (file)
@@ -1,3 +1,11 @@
+-- Prosody IM
+-- Copyright (C) 2008-2009 Matthew Wild
+-- Copyright (C) 2008-2009 Waqas Hussain
+-- 
+-- This project is MIT/X11 licensed. Please see the
+-- COPYING file in the source package for more information.
+--
+
 
 local jid_bare = require "util.jid".bare;
 local jid_split = require "util.jid".split;
@@ -17,11 +25,12 @@ local data = {};
 local recipients = {};
 local hash_map = {};
 
-module:add_identity("pubsub", "pep");
+module:add_identity("pubsub", "pep", "Prosody");
 module:add_feature("http://jabber.org/protocol/pubsub#publish");
 
 local function publish(session, node, item)
        local disable = #item.tags ~= 1 or #item.tags[1].tags == 0;
+       if #item.tags == 0 then item.name = "retract"; end
        local bare = session.username..'@'..session.host;
        local stanza = st.message({from=bare, type='headline'})
                :tag('event', {xmlns='http://jabber.org/protocol/pubsub#event'})
@@ -120,11 +129,12 @@ module:hook("iq/bare/http://jabber.org/protocol/pubsub:pubsub", function(event)
                local payload = stanza.tags[1];
                if payload.name == 'pubsub' then -- <pubsub xmlns='http://jabber.org/protocol/pubsub'>
                        payload = payload.tags[1];
-                       if payload and payload.name == 'publish' and payload.attr.node then -- <publish node='http://jabber.org/protocol/tune'>
+                       if payload and (payload.name == 'publish' or payload.name == 'retract') and payload.attr.node then -- <publish node='http://jabber.org/protocol/tune'>
                                local node = payload.attr.node;
                                payload = payload.tags[1];
                                if payload then -- <item>
                                        publish(session, node, payload);
+                                       session.send(st.reply(stanza));
                                        return true;
                                end
                        end