Mercurial > prosody-modules
comparison mod_throttle_unsolicited/mod_throttle_unsolicited.lua @ 3541:4d8a68557941
mod_throttle_unsolicited: reduce debug logs, rename firewall mark
| author | Georg Lukas <georg@op-co.de> |
|---|---|
| date | Tue, 02 Apr 2019 16:19:11 +0200 |
| parents | 231d47e61c81 |
| children | 579d6f4dc2cf |
comparison
equal
deleted
inserted
replaced
| 3540:1b45bac50f3d | 3541:4d8a68557941 |
|---|---|
| 10 local multiplier = module:get_option_number("throttle_unsolicited_burst", 1); | 10 local multiplier = module:get_option_number("throttle_unsolicited_burst", 1); |
| 11 | 11 |
| 12 function check_subscribed(event) | 12 function check_subscribed(event) |
| 13 local stanza, origin = event.stanza, event.origin; | 13 local stanza, origin = event.stanza, event.origin; |
| 14 local log = origin.log or module._log; | 14 local log = origin.log or module._log; |
| 15 log("debug", "check_subscribed(%s)", stanza:top_tag()); | |
| 16 if stanza.attr.type == "error" then return end | 15 if stanza.attr.type == "error" then return end |
| 17 | 16 |
| 18 local to_orig = stanza.attr.to; | 17 local to_orig = stanza.attr.to; |
| 19 if to_orig == nil or to_orig == origin.full_jid then return end -- to self | 18 if to_orig == nil or to_orig == origin.full_jid then return end -- to self |
| 20 | 19 |
| 23 if to_bare == from_jid then return end -- to own resource | 22 if to_bare == from_jid then return end -- to own resource |
| 24 | 23 |
| 25 -- Check if it's a message to a joined room | 24 -- Check if it's a message to a joined room |
| 26 local rooms = origin.rooms_joined; | 25 local rooms = origin.rooms_joined; |
| 27 if rooms and rooms[to_bare] then | 26 if rooms and rooms[to_bare] then |
| 28 log("debug", "Message to joined room, no limit"); | |
| 29 return | 27 return |
| 30 end | 28 end |
| 31 | 29 |
| 32 -- Retrieve or create throttle object | 30 -- Retrieve or create throttle object |
| 33 local lim = origin.throttle_unsolicited; | 31 local lim = origin.throttle_unsolicited; |
| 34 if not lim then | 32 if not lim then |
| 35 log("debug", "New throttle"); | |
| 36 lim = throttle.create(max * multiplier, 60 * multiplier); | 33 lim = throttle.create(max * multiplier, 60 * multiplier); |
| 37 origin.throttle_unsolicited = lim; | 34 origin.throttle_unsolicited = lim; |
| 38 end | 35 end |
| 39 | 36 |
| 40 local to_user, to_host = jid_split(to_orig); | 37 local to_user, to_host = jid_split(to_orig); |
| 41 if to_user and not is_contact_subscribed(to_user, to_host, from_jid) then | 38 if to_user and not is_contact_subscribed(to_user, to_host, from_jid) then |
| 42 log("debug", "%s is not subscribed to %s@%s", from_jid, to_user, to_host); | 39 log("debug", "[unsolicited] %s is not subscribed to %s@%s", from_jid, to_user, to_host); |
| 43 if not lim:poll(1) then | 40 if not lim:poll(1) then |
| 44 log("warn", "Sent too many messages to non-contacts, bouncing message"); | 41 log("warn", "[unsolicited] Sent too many messages to non-contacts, bouncing message"); |
| 45 origin.firewall_mark_throttle_unsolicited = gettime(); | 42 origin.firewall_mark_unsolicited = gettime(); |
| 46 origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); | 43 origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); |
| 47 return true; | 44 return true; |
| 48 end | 45 end |
| 49 end | 46 end |
| 50 end | 47 end |
