Software /
code /
prosody-modules
Diff
mod_vjud/mod_vjud.lua @ 789:7e40d6680093
mod_vjud: Allow working as a component, in which case the parent domain is searched.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 09 Aug 2012 20:31:13 +0200 |
parent | 787:cec49ee88c23 |
child | 879:3a17fc0127b1 |
line wrap: on
line diff
--- a/mod_vjud/mod_vjud.lua Thu Aug 09 20:16:09 2012 +0200 +++ b/mod_vjud/mod_vjud.lua Thu Aug 09 20:31:13 2012 +0200 @@ -28,6 +28,12 @@ </item> ]]; +local base_host = module:get_option_string("vjud_search_domain", + module:get_host_type() == "component" + and module.host:gsub("^[^.]+%.","") + or module.host); + +module:depends"disco"; module:add_feature("jabber:iq:search"); local opted_in; @@ -60,8 +66,8 @@ end }; -local function get_user_vcard(user) - local vCard = dm_load(user, module.host, "vcard"); +local function get_user_vcard(user, host) + local vCard = dm_load(user, host or base_host, "vcard"); if vCard then vCard = st.deserialize(vCard); vCard = vcard.from_xep54(vCard); @@ -69,7 +75,7 @@ end end -local at_host = "@"..module.host; +local at_host = "@"..base_host; module:hook("iq/host/jabber:iq:search:query", function(event) local origin, stanza = event.origin, event.stanza; @@ -92,7 +98,7 @@ local reply = st.reply(stanza):query("jabber:iq:search"); local username, hostname = jid_split(email); - if hostname == module.host and username and usermanager.user_exists(username, hostname) then + if hostname == base_host and username and usermanager.user_exists(username, hostname) then local vCard = get_user_vcard(username); if vCard then reply:add_child(item_template.apply{ @@ -133,7 +139,7 @@ return { status = "canceled" }; end - if not username or not hostname or hostname ~= module.host then + if not username or not hostname or hostname ~= base_host then return { status = "error", error = { type = "cancel", condition = "forbidden", message = "Invalid user or hostname." } }; end