Mercurial > prosody-modules
view mod_muc_ping/mod_muc_ping.lua @ 3953:2c6d5734ae04
mod_rest: Add JSON mapping of XEP-0128: Service Discovery Extensions
Example XEP-0157 payload:
{
"disco" : {
"extensions" : {
"http://jabber.org/network/serverinfo" : {
"abuse-addresses" : [
"mailto:abuse@shakespeare.lit",
"xmpp:abuse@shakespeare.lit"
],
"admin-addresses" : [
"mailto:admin@shakespeare.lit",
"xmpp:admin@shakespeare.lit"
],
"feedback-addresses" : [
"http://shakespeare.lit/feedback.php",
"mailto:feedback@shakespeare.lit",
"xmpp:feedback@shakespeare.lit"
],
"sales-addresses" : [
"xmpp:bard@shakespeare.lit"
],
"security-addresses" : [
"xmpp:security@shakespeare.lit"
],
"support-addresses" : [
"http://shakespeare.lit/support.php",
"xmpp:support@shakespeare.lit"
]
}
}
}
}
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 23 Mar 2020 19:03:04 +0100 |
parents | a0ca5d0a49ba |
children |
line wrap: on
line source
local st = require "util.stanza"; local jid_bare = import("util.jid", "bare"); local mod_muc = module:depends"muc"; local rooms = rawget(mod_muc, "rooms"); if not rooms then module:log("warn", "mod_%s is compatible with Prosody up to 0.10.x", module.name); return; end module:hook("iq/full", function (event) local origin, stanza = event.origin, event.stanza; if stanza.attr.type ~= "get" or not stanza:get_child("ping", "urn:xmpp:ping") then return; end local from = stanza.attr.from; local room_nick = stanza.attr.to; local room_jid = jid_bare(room_nick); local room = rooms[room_jid]; if not room then return; end if room._jid_nick[from] == room_nick then origin.send(st.reply(stanza)); return true; end end); module:hook("muc-disco#info", function(event) event.reply:tag("feature", {var="urn:xmpp:ping"}):up(); event.reply:tag("feature", {var = "http://jabber.org/protocol/muc#self-ping-optimization"}):up(); end);