diff options
author | Waqas Hussain <waqas20@gmail.com> | 2008-11-23 03:32:34 +0500 |
---|---|---|
committer | Waqas Hussain <waqas20@gmail.com> | 2008-11-23 03:32:34 +0500 |
commit | 035f481ac959ecde9a50101145b5c4e50a4ad488 (patch) | |
tree | 984c23f744c0a213ec4ae065255f8b5a6a4c9a40 /core | |
parent | 6b6973b0a3766f2f651cae3f5a567b6625cd935c (diff) | |
download | prosody-035f481ac959ecde9a50101145b5c4e50a4ad488.tar.gz prosody-035f481ac959ecde9a50101145b5c4e50a4ad488.zip |
Added discomanager
Diffstat (limited to 'core')
-rw-r--r-- | core/discomanager.lua | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/core/discomanager.lua b/core/discomanager.lua new file mode 100644 index 00000000..471f1101 --- /dev/null +++ b/core/discomanager.lua @@ -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;
|