mirror of https://github.com/bjc/prosody
parent
f203549010
commit
c2a6d44d9d
@ -0,0 +1,35 @@ |
||||
|
||||
|
||||
local log = require "util.logger".init("componentmanager") |
||||
local jid_split = require "util.jid".split; |
||||
local hosts = hosts; |
||||
|
||||
local components = {}; |
||||
|
||||
module "componentmanager" |
||||
|
||||
function handle_stanza(origin, stanza) |
||||
local node, host = jid_split(stanza.attr.to); |
||||
local component = components[host]; |
||||
if not component then component = components[node.."@"..host]; end -- hack to allow hooking node@server |
||||
if not component then component = components[stanza.attr.to]; end -- hack to allow hooking node@server/resource and server/resource |
||||
if component then |
||||
log("debug", "stanza being handled by component: "..host); |
||||
component(origin, stanza); |
||||
else |
||||
log("error", "Component manager recieved a stanza for a non-existing component: " .. stanza.attr.to); |
||||
end |
||||
end |
||||
|
||||
function register_component(host, component) |
||||
if not hosts[host] then |
||||
-- TODO check for host well-formedness |
||||
components[host] = component; |
||||
hosts[host] = {type = "component", connected = true}; |
||||
log("debug", "component added: "..host); |
||||
else |
||||
log("error", "Attempt to set component for existing host: "..host); |
||||
end |
||||
end |
||||
|
||||
return _M; |
||||
Loading…
Reference in new issue