Mercurial > prosody-hg
comparison plugins/mod_pep.lua @ 10046:0bc291a5734a
Merge 0.11->trunk
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Mon, 10 Jun 2019 13:22:22 +0200 |
| parents | 6714578cfd6e e01f38acde74 |
| children | 177a8b92204b |
comparison
equal
deleted
inserted
replaced
| 10045:6714578cfd6e | 10046:0bc291a5734a |
|---|---|
| 6 local st = require "util.stanza"; | 6 local st = require "util.stanza"; |
| 7 local calculate_hash = require "util.caps".calculate_hash; | 7 local calculate_hash = require "util.caps".calculate_hash; |
| 8 local is_contact_subscribed = require "core.rostermanager".is_contact_subscribed; | 8 local is_contact_subscribed = require "core.rostermanager".is_contact_subscribed; |
| 9 local cache = require "util.cache"; | 9 local cache = require "util.cache"; |
| 10 local set = require "util.set"; | 10 local set = require "util.set"; |
| 11 local new_id = require "util.id".medium; | |
| 11 local storagemanager = require "core.storagemanager"; | 12 local storagemanager = require "core.storagemanager"; |
| 12 | 13 |
| 13 local xmlns_pubsub = "http://jabber.org/protocol/pubsub"; | 14 local xmlns_pubsub = "http://jabber.org/protocol/pubsub"; |
| 14 local xmlns_pubsub_event = "http://jabber.org/protocol/pubsub#event"; | 15 local xmlns_pubsub_event = "http://jabber.org/protocol/pubsub#event"; |
| 15 local xmlns_pubsub_owner = "http://jabber.org/protocol/pubsub#owner"; | 16 local xmlns_pubsub_owner = "http://jabber.org/protocol/pubsub#owner"; |
| 136 end | 137 end |
| 137 end | 138 end |
| 138 if kind == "retract" then | 139 if kind == "retract" then |
| 139 kind = "items"; -- XEP-0060 signals retraction in an <items> container | 140 kind = "items"; -- XEP-0060 signals retraction in an <items> container |
| 140 end | 141 end |
| 141 local message = st.message({ from = user_bare, type = "headline" }) | |
| 142 :tag("event", { xmlns = xmlns_pubsub_event }) | |
| 143 :tag(kind, { node = node }); | |
| 144 if item then | 142 if item then |
| 145 item = st.clone(item); | 143 item = st.clone(item); |
| 146 item.attr.xmlns = nil; -- Clear the pubsub namespace | 144 item.attr.xmlns = nil; -- Clear the pubsub namespace |
| 147 if kind == "items" then | 145 if kind == "items" then |
| 148 if node_obj and node_obj.config.include_payload == false then | 146 if node_obj and node_obj.config.include_payload == false then |
| 149 item:maptags(function () return nil; end); | 147 item:maptags(function () return nil; end); |
| 150 end | 148 end |
| 151 end | 149 end |
| 150 end | |
| 151 | |
| 152 local id = new_id(); | |
| 153 local message = st.message({ from = user_bare, type = "headline", id = id }) | |
| 154 :tag("event", { xmlns = xmlns_pubsub_event }) | |
| 155 :tag(kind, { node = node }); | |
| 156 | |
| 157 if item then | |
| 152 message:add_child(item); | 158 message:add_child(item); |
| 153 end | 159 end |
| 160 | |
| 154 for jid in pairs(jids) do | 161 for jid in pairs(jids) do |
| 155 module:log("debug", "Sending notification to %s from %s: %s", jid, user_bare, tostring(item)); | 162 module:log("debug", "Sending notification to %s from %s: %s", jid, user_bare, tostring(item)); |
| 156 message.attr.to = jid; | 163 message.attr.to = jid; |
| 157 module:send(message); | 164 module:send(message); |
| 158 end | 165 end |
| 250 end | 257 end |
| 251 | 258 |
| 252 module:hook("iq/bare/"..xmlns_pubsub..":pubsub", handle_pubsub_iq); | 259 module:hook("iq/bare/"..xmlns_pubsub..":pubsub", handle_pubsub_iq); |
| 253 module:hook("iq/bare/"..xmlns_pubsub_owner..":pubsub", handle_pubsub_iq); | 260 module:hook("iq/bare/"..xmlns_pubsub_owner..":pubsub", handle_pubsub_iq); |
| 254 | 261 |
| 255 module:add_identity("pubsub", "pep", module:get_option_string("name", "Prosody")); | |
| 256 module:add_feature("http://jabber.org/protocol/pubsub#publish"); | |
| 257 | 262 |
| 258 local function get_caps_hash_from_presence(stanza, current) | 263 local function get_caps_hash_from_presence(stanza, current) |
| 259 local t = stanza.attr.type; | 264 local t = stanza.attr.type; |
| 260 if not t then | 265 if not t then |
| 261 local child = stanza:get_child("c", "http://jabber.org/protocol/caps"); | 266 local child = stanza:get_child("c", "http://jabber.org/protocol/caps"); |
