aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorWaqas Hussain <waqas20@gmail.com>2008-11-05 03:47:22 +0500
committerWaqas Hussain <waqas20@gmail.com>2008-11-05 03:47:22 +0500
commitc25d2a02a8ddde231f34e4ae696ce8721dfc9b3f (patch)
treee4c4aa6c503cc2ccb80d99c99ede73c9eb150c13 /core
parent1723a7509780f7b71328df1a2f05694e8a27a81c (diff)
downloadprosody-c25d2a02a8ddde231f34e4ae696ce8721dfc9b3f.tar.gz
prosody-c25d2a02a8ddde231f34e4ae696ce8721dfc9b3f.zip
Adding component support. Again...
Diffstat (limited to 'core')
-rw-r--r--core/componentmanager.lua35
1 files changed, 35 insertions, 0 deletions
diff --git a/core/componentmanager.lua b/core/componentmanager.lua
new file mode 100644
index 00000000..18bf5c02
--- /dev/null
+++ b/core/componentmanager.lua
@@ -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; \ No newline at end of file