X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=plugins%2Fmod_iq.lua;h=e90af7814d7c8088f05b7ee925a17eed2b304459;hb=fc67a891781b47c31eda0c38f70fbd6908e77d26;hp=c1e9df6a8460ef72b249cd9e3a5cc10f8c19a6d3;hpb=4169603401b64ac8d78e2431016116bf814cb9ba;p=prosody.git diff --git a/plugins/mod_iq.lua b/plugins/mod_iq.lua index c1e9df6a..e90af781 100644 --- a/plugins/mod_iq.lua +++ b/plugins/mod_iq.lua @@ -1,5 +1,14 @@ +-- Prosody IM +-- Copyright (C) 2008-2010 Matthew Wild +-- Copyright (C) 2008-2010 Waqas Hussain +-- +-- This project is MIT/X11 licensed. Please see the +-- COPYING file in the source package for more information. +-- + local st = require "util.stanza"; +local jid_split = require "util.jid".split; local full_sessions = full_sessions; local bare_sessions = bare_sessions; @@ -24,12 +33,24 @@ module:hook("iq/bare", function(data) -- IQ to bare JID recieved local origin, stanza = data.origin, data.stanza; - -- TODO if not user exists, return an error -- TODO fire post processing events - if #stanza.tags == 1 then + if stanza.attr.type == "get" or stanza.attr.type == "set" then return module:fire_event("iq/bare/"..stanza.tags[1].attr.xmlns..":"..stanza.tags[1].name, data); else - return true; -- TODO do something with results and errors + module:fire_event("iq/bare/"..stanza.attr.id, data); + return true; + end +end); + +module:hook("iq/self", function(data) + -- IQ to bare JID recieved + local origin, stanza = data.origin, data.stanza; + + if stanza.attr.type == "get" or stanza.attr.type == "set" then + return module:fire_event("iq/self/"..stanza.tags[1].attr.xmlns..":"..stanza.tags[1].name, data); + else + module:fire_event("iq/self/"..stanza.attr.id, data); + return true; end end); @@ -37,9 +58,10 @@ module:hook("iq/host", function(data) -- IQ to a local host recieved local origin, stanza = data.origin, data.stanza; - if #stanza.tags == 1 then + if stanza.attr.type == "get" or stanza.attr.type == "set" then return module:fire_event("iq/host/"..stanza.tags[1].attr.xmlns..":"..stanza.tags[1].name, data); else - return true; -- TODO do something with results and errors + module:fire_event("iq/host/"..stanza.attr.id, data); + return true; end end);