Diff

plugins/mod_message.lua @ 1232:6ddbb583f067

mod_message: Initial commit
author Waqas Hussain <waqas20@gmail.com>
date Sat, 30 May 2009 17:36:05 +0500
child 1234:0ff02499f05c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/mod_message.lua	Sat May 30 17:36:05 2009 +0500
@@ -0,0 +1,41 @@
+
+local full_sessions = full_sessions;
+local bare_sessions = bare_sessions;
+
+local jid_bare = require "util.jid".bare;
+local user_exists = require "core.usermanager".user_exists;
+
+module:hook("message/full", function(data)
+	-- message to full JID recieved
+	local origin, stanza = data.origin, data.stanza;
+	
+	local session = full_sessions[stanza.attr.to];
+	if session then
+		-- TODO fire post processing event
+		session.send(stanza);
+		return true;
+	else -- resource not online
+		-- TODO fire event to send to bare JID
+	end
+end);
+
+module:hook("message/bare", function(data)
+	-- message to bare JID recieved
+	local origin, stanza = data.origin, data.stanza;
+
+	local sessions = bare_sessoins[stanza.attr.to];
+	if sessions then sessions = sessions.sessions; end
+	
+	if sessions then
+		-- some resources are online
+		-- TODO find top resources willing to accept this message
+		-- TODO then send them each the stanza
+	else
+		-- no resources are online
+		-- TODO check if the user exists
+		-- TODO if it doesn't, return an error reply
+		-- TODO otherwise, apply the default privacy list
+		-- TODO and store into offline storage
+		-- TODO or maybe the offline store can apply privacy lists
+	end
+end);