Software /
code /
prosody-modules
Diff
mod_srvinjection/mod_srvinjection.lua @ 96:c1f4edf3bea7
mod_srvinjection: Initial commit.
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Mon, 23 Nov 2009 21:38:43 +0500 |
child | 99:2d03350613c4 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_srvinjection/mod_srvinjection.lua Mon Nov 23 21:38:43 2009 +0500 @@ -0,0 +1,40 @@ + +module.host = "*"; + +local adns = require "net.adns"; + +local map = module:get_option("srvinjection") or {}; + +for host, mapping in pairs(map) do + if type(mapping) == "table" and type(mapping[1]) == "string" and (type(mapping[2]) == "number") then + local connecthost, connectport = mapping[1], mapping[2] or 5269; + map[host] = {{ + srv = { + target = connecthost.."."; + port = connectport; + priority = 1; + weight = 0; + }; + }}; + else + module:log("warn", "Ignoring invalid SRV injection for host '%s'", host); + map[host] = nil; + end +end + +local original_lookup = adns.lookup; +function adns.lookup(handler, qname, qtype, qclass) + if qtype == "SRV" then + local host = qname:match("^_xmpp%-server%._tcp%.(.*)%.$"); + local mapping = map[host]; + if mapping then + handler(mapping); + return; + end + end + return original_lookup(handler, qname, qtype, qclass); +end + +function module.unload() + adns.lookup = original_lookup; +end