2 local helper = require "util.discohelper".new();
\r
4 local jid_split = require "util.jid".split;
\r
5 local jid_bare = require "util.jid".bare;
\r
6 local usermanager_user_exists = require "core.usermanager".user_exists;
\r
7 local rostermanager_is_contact_subscribed = require "core.rostermanager".is_contact_subscribed;
\r
11 helper:addDiscoInfoHandler("*host", function(reply, to, from, node)
\r
13 reply:tag("identity", {category="server", type="im", name="Prosody"}):up();
\r
17 helper:addDiscoInfoHandler("*node", function(reply, to, from, node)
\r
18 local node, host = jid_split(to);
\r
19 if hosts[host] and rostermanager_is_contact_subscribed(node, host, jid_bare(from)) then
\r
20 reply:tag("identity", {category="account", type="registered"}):up();
\r
26 module "discomanager"
\r
28 function handle(stanza)
\r
29 return helper:handle(stanza);
\r
32 function addDiscoItemsHandler(jid, func)
\r
33 return helper:addDiscoItemsHandler(jid, func);
\r
36 function addDiscoInfoHandler(jid, func)
\r
37 return helper:addDiscoInfoHandler(jid, func);
\r
40 function set(plugin, var, origin)
\r
41 -- TODO handle origin and host based on plugin.
\r
42 local handler = function(reply, to, from, node) -- service discovery
\r
44 reply:tag("feature", {var = var}):up();
\r
48 addDiscoInfoHandler("*node", handler);
\r
49 addDiscoInfoHandler("*host", handler);
\r