Mercurial > prosody-modules
view mod_extdisco/mod_extdisco.lua @ 2608:362ca94192ee
mod_smacks: Add resumed session to event "smacks-hibernation-end"
Older versions of this event only have the "intermediate" session
in event.session (the one used to resume the existing session),
but not the resumed one.
This adds event.resumed which contains the resumed one alongside
to event.session.
author | tmolitor <thilo@eightysoft.de> |
---|---|
date | Sat, 11 Mar 2017 01:37:28 +0100 |
parents | e5c16c87383c |
children | e302537a0e4e |
line wrap: on
line source
local st = require "util.stanza"; local services = module:get_option("external_services"); local xmlns_extdisco = "urn:xmpp:extdisco:1"; module:add_feature(xmlns_extdisco); module:hook("iq-get/host/"..xmlns_extdisco..":services", function (event) local origin, stanza = event.origin, event.stanza; local service = stanza:get_child("service", xmlns_extdisco); local service_type = service and service.attr.type; local reply = st.reply(stanza); for host, service_info in pairs(services) do if not(service_type) or service_info.type == service_type then reply:tag("service", { host = host; port = service_info.port; transport = service_info.transport; type = service_info.type; username = service_info.username; password = service_info.password; }):up(); end end origin.send(reply); return true; end); module:hook("iq-get/host/"..xmlns_extdisco..":credentials", function (event) local origin, stanza = event.origin, event.stanza; local credentials = stanza:get_child("credentials", xmlns_extdisco); local host = credentials and credentials.attr.host; if not host then origin.send(st.error_reply(stanza, "cancel", "bad-request", "No host specified")); return true; end local service_info = services[host]; if not service_info then origin.send(st.error_reply(stanza, "cancel", "item-not-found", "No such service known")); return true; end local reply = st.reply(stanza) :tag("credentials") :tag("service", { host = host; username = service_info.username; password = service_info.password; }):up(); origin.send(reply); return true; end);