# HG changeset patch # User Waqas Hussain # Date 1227393154 -18000 # Node ID 9f520efc89ba103208e1c0ae8ff94ea78f1103cb # Parent 700e95c00c5b6c026c4fecb3d700e65ebde3f6a6 Added discomanager diff -r 700e95c00c5b -r 9f520efc89ba core/discomanager.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/discomanager.lua Sun Nov 23 03:32:34 2008 +0500 @@ -0,0 +1,39 @@ + +local helper = require "util.discohelper".new(); +local hosts = hosts; +local jid_split = require "util.jid".split; +local jid_bare = require "util.jid".bare; +local usermanager_user_exists = require "core.usermanager".user_exists; +local rostermanager_is_contact_subscribed = require "core.rostermanager".is_contact_subscribed; + +do + helper:addDiscoInfoHandler("*host", function(reply, to, from, node) + if hosts[to] then + reply:tag("identity", {category="server", type="im", name="ejabberd"}):up(); + return true; + end + end); + helper:addDiscoInfoHandler("*node", function(reply, to, from, node) + local node, host = jid_split(to); + if hosts[host] and rostermanager_is_contact_subscribed(node, host, jid_bare(from)) then + reply:tag("identity", {category="account", type="registered"}):up(); + return true; + end + end); +end + +module "discomanager" + +function handle(stanza) + return helper:handle(stanza); +end + +function addDiscoItemsHandler(jid, func) + return helper:addDiscoItemsHandler(jid, func); +end + +function addDiscoInfoHandler(jid, func) + return helper:addDiscoInfoHandler(jid, func); +end + +return _M;