Mercurial > prosody-modules
annotate mod_rtbl/mod_rtbl.lua @ 6319:04c3273cb81f
mod_auth_cyrus: Add empty 'profile' table to SASL handler objects
This is for compatibility with Prosody's built-in util.sasl objects.
A SASL profile table usually includes methods supported by the backend, which
can be used by SASL mechanism handlers to perform operations (such as testing
the password). It also optionally contains a 'cb' field with channel binding
method handlers.
The Cyrus backend doesn't support channel binding, and doesn't have the same
concept of auth backend methods (it handles all that internally, and Prosody
has no insight or control over it).
Thus, we create an empty profile which informs Prosody that the SASL handler
does not support any of the auth or channel binding methods. Some features
will not work, but they didn't work anyway. This just makes it explicit.
This fixes a traceback in mod_sasl2_fast, which expected SASL handlers to
always contain a 'profile' field.
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 04 Sep 2025 10:14:46 +0100 |
| parents | d1d774f79ea8 |
| children |
| rev | line source |
|---|---|
|
6301
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 local array = require "util.array"; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 local id = require "util.id"; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 local it = require "util.iterators"; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 local set = require "util.set"; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 local st = require "util.stanza"; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 module:depends("pubsub_subscription"); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 |
|
6302
13f674a9fb22
mod_rtbl: Correctly export API
Matthew Wild <mwild1@gmail.com>
parents:
6301
diff
changeset
|
9 function new_rtbl_subscription(rtbl_service_jid, rtbl_node, handlers) |
|
6301
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 local rtbl = {}; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 local items = {}; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 rtbl.items = items; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 local function notify(event_type, hash) |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 local handler = handlers[event_type]; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 if not handler then return; end |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 handler(hash); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 end |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 module:add_item("pubsub-subscription", { |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 service = rtbl_service_jid; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 node = rtbl_node; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 -- Callbacks: |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 on_subscribed = function() |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 module:log("info", "RTBL active: %s:%s", rtbl_service_jid, rtbl_node); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 rtbl.subscribed = true; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 end; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 on_error = function(err) |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 module:log( |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 "error", |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 "Failed to subscribe to RTBL: %s:%s %s::%s: %s", |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 rtbl_service_jid, |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 rtbl_node, |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 err.type, |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 err.condition, |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
38 err.text |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
39 ); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
40 rtbl.subscribed = false; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
41 rtbl.error = err; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
42 end; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
43 |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
44 on_item = function(event) |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
45 local hash = event.item.attr.id; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
46 if not hash then return; end |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
47 module:log("debug", "Received new hash from %s:%s: %s", rtbl_service_jid, rtbl_node, hash); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
48 items[hash] = true; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
49 notify("added", hash); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
50 end; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
51 |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
52 on_retract = function (event) |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
53 local hash = event.item.attr.id; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
54 if not hash then return; end |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
55 module:log("debug", "Retracted hash from %s:%s: %s", rtbl_service_jid, rtbl_node, hash); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
56 items[hash] = nil; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
57 notify("removed", hash); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
58 end; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
59 |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
60 purge = function() |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
61 module:log("debug", "Purge all hashes from %s:%s", rtbl_service_jid, rtbl_node); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
62 for hash in pairs(items) do |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
63 items[hash] = nil; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
64 notify("removed", hash); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
65 end |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
66 end; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
67 }); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
68 |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
69 local request_id = "rtbl-request-"..id.short(); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
70 |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
71 local function request_list() |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
72 local items_request = st.iq({ to = rtbl_service_jid, from = module.host, type = "get", id = request_id }) |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
73 :tag("pubsub", { xmlns = "http://jabber.org/protocol/pubsub" }) |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
74 :tag("items", { node = rtbl_node }):up() |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
75 :up(); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
76 module:send(items_request); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
77 end |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
78 |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
79 local function update_list(event) |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
80 local from_jid = event.stanza.attr.from; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
81 if from_jid ~= rtbl_service_jid then |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
82 module:log("debug", "Ignoring RTBL response from unknown sender: %s", from_jid); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
83 return; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
84 end |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
85 local items_el = event.stanza:find("{http://jabber.org/protocol/pubsub}pubsub/items"); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
86 if not items_el then |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
87 module:log("warn", "Invalid items response from RTBL service %s:%s", rtbl_service_jid, rtbl_node); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
88 return; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
89 end |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
90 |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
91 local old_entries = set.new(array.collect(it.keys(items))); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
92 |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
93 local n_added, n_removed, n_total = 0, 0, 0; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
94 for item in items_el:childtags("item") do |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
95 local hash = item.attr.id; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
96 if hash then |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
97 n_total = n_total + 1; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
98 if not old_entries:contains(hash) then |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
99 -- New entry |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
100 n_added = n_added + 1; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
101 items[hash] = true; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
102 notify("added", hash); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
103 else |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
104 -- Entry already existed |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
105 old_entries:remove(hash); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
106 end |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
107 end |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
108 end |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
109 |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
110 -- Remove old entries that weren't in the received list |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
111 for hash in old_entries do |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
112 n_removed = n_removed + 1; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
113 items[hash] = nil; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
114 notify("removed", hash); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
115 end |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
116 |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
117 module:log("info", "%d RTBL entries received from %s:%s (%d added, %d removed)", n_total, from_jid, rtbl_node, n_added, n_removed); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
118 return true; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
119 end |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
120 |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
121 module:hook("iq-result/host/"..request_id, update_list); |
|
6303
d1d774f79ea8
mod_rtbl: Handle and log iq errors
Matthew Wild <mwild1@gmail.com>
parents:
6302
diff
changeset
|
122 module:hook("iq-error/host/"..request_id, function (event) |
|
d1d774f79ea8
mod_rtbl: Handle and log iq errors
Matthew Wild <mwild1@gmail.com>
parents:
6302
diff
changeset
|
123 local typ, cond, text = event.stanza:get_error(); |
|
d1d774f79ea8
mod_rtbl: Handle and log iq errors
Matthew Wild <mwild1@gmail.com>
parents:
6302
diff
changeset
|
124 module:log("warn", "Failed to fetch RTBL contents from %s:%s: %s %s %s", rtbl_service_jid, rtbl_node, typ, cond, text); |
|
d1d774f79ea8
mod_rtbl: Handle and log iq errors
Matthew Wild <mwild1@gmail.com>
parents:
6302
diff
changeset
|
125 return true; |
|
d1d774f79ea8
mod_rtbl: Handle and log iq errors
Matthew Wild <mwild1@gmail.com>
parents:
6302
diff
changeset
|
126 end); |
|
6301
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
127 module:add_timer(0, request_list); |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
128 |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
129 return rtbl; |
|
77b5dd33a8f3
mod_rtbl: New generic API module for subscribing to RTBLs via XEP-0060
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
130 end |
