Mercurial > prosody-modules
view mod_throttle_unsolicited/mod_throttle_unsolicited.lua @ 6217:694f8fab07d4
: mod_sasl2*** : Update Compability for all of them
diff --git a/mod_sasl2/README.md b/mod_sasl2/README.md
--- a/mod_sasl2/README.md
+++ b/mod_sasl2/README.md
@@ -31,6 +31,7 @@ This module requires Prosody **trunk** a
Prosody Version Status
----------------------- ----------------
- trunk as of 2024-11-24 Works
+ trunk as of 2025-05-25 Works
+ 0.13 Works
0.12 Does not work
----------------------- ----------------
diff --git a/mod_sasl2_bind2/README.md b/mod_sasl2_bind2/README.md
--- a/mod_sasl2_bind2/README.md
+++ b/mod_sasl2_bind2/README.md
@@ -16,5 +16,6 @@ This module depends on [mod_sasl2]. It e
Prosody-Version Status
--------------- ----------------------
- trunk Works as of 2024-12-21
+ trunk Works as of 2025-05-25
+ 0.13 Works
0.12 Does not work
diff --git a/mod_sasl2_fast/README.md b/mod_sasl2_fast/README.md
--- a/mod_sasl2_fast/README.md
+++ b/mod_sasl2_fast/README.md
@@ -33,5 +33,6 @@ clients being logged out unexpectedly.
Prosody-Version Status
--------------- ----------------------
- trunk Works as of 2024-12-21
+ trunk Works as of 2025-05-25
+ 0.13 Work
0.12 Does not work
diff --git a/mod_sasl2_sm/README.md b/mod_sasl2_sm/README.md
--- a/mod_sasl2_sm/README.md
+++ b/mod_sasl2_sm/README.md
@@ -17,5 +17,6 @@ configuration options.
Prosody-Version Status
--------------- ----------------------
- trunk Works as of 2024-12-21
+ trunk Works as of 2025-05-25
+ 0.13 Work
0.12 Does not work
diff --git a/mod_sasl_ssdp/README.md b/mod_sasl_ssdp/README.md
--- a/mod_sasl_ssdp/README.md
+++ b/mod_sasl_ssdp/README.md
@@ -18,8 +18,8 @@ There are no configuration options for t
# Compatibility
-For SASL2 (XEP-0388) clients, it is compatible with the mod_sasl2 community module.
-
-For clients using RFC 6120 SASL, it requires Prosody trunk 33e5edbd6a4a or
-later. It is not compatible with Prosody 0.12 (it will load, but simply
-won't do anything) for "legacy SASL".
+ Prosody-Version Status
+ --------------- ----------------------
+ trunk Works as of 2025-05-25
+ 0.13 Works
+ 0.12 Does not work
| author | Menel <menel@snikket.de> |
|---|---|
| date | Mon, 12 May 2025 11:07:45 +0200 |
| parents | 4d8a68557941 |
| children | 579d6f4dc2cf |
line wrap: on
line source
local st = require"util.stanza"; local jid_split = require "util.jid".split; local jid_bare = require "util.jid".bare; local is_contact_subscribed = require "core.rostermanager".is_contact_subscribed; local throttle = require "util.throttle"; local gettime = require "socket".gettime; local max = module:get_option_number("unsolicited_messages_per_minute", 10); local s2s_max = module:get_option_number("unsolicited_s2s_messages_per_minute"); local multiplier = module:get_option_number("throttle_unsolicited_burst", 1); function check_subscribed(event) local stanza, origin = event.stanza, event.origin; local log = origin.log or module._log; if stanza.attr.type == "error" then return end local to_orig = stanza.attr.to; if to_orig == nil or to_orig == origin.full_jid then return end -- to self local to_bare = jid_bare(to_orig); local from_jid = jid_bare(stanza.attr.from); if to_bare == from_jid then return end -- to own resource -- Check if it's a message to a joined room local rooms = origin.rooms_joined; if rooms and rooms[to_bare] then return end -- Retrieve or create throttle object local lim = origin.throttle_unsolicited; if not lim then lim = throttle.create(max * multiplier, 60 * multiplier); origin.throttle_unsolicited = lim; end local to_user, to_host = jid_split(to_orig); if to_user and not is_contact_subscribed(to_user, to_host, from_jid) then log("debug", "[unsolicited] %s is not subscribed to %s@%s", from_jid, to_user, to_host); if not lim:poll(1) then log("warn", "[unsolicited] Sent too many messages to non-contacts, bouncing message"); origin.firewall_mark_unsolicited = gettime(); origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); return true; end end end module:hook("pre-message/bare", check_subscribed, 200); module:hook("pre-message/full", check_subscribed, 200); local full_sessions = prosody.full_sessions; -- Rooms and throttle creation will differ for s2s function check_subscribed_s2s(event) local stanza, origin = event.stanza, event.origin; local log = origin.log or module._log; if origin.type ~= "s2sin" then return end local to_orig = stanza.attr.to; local from_orig = stanza.attr.from; local from_bare = jid_bare(from_orig); local target = full_sessions[to_orig]; if target then local rooms = target.rooms_joined; if rooms and rooms[from_bare] then log("debug", "Message to joined room, no limit"); return end end -- Retrieve or create throttle object local lim = origin.throttle_unsolicited; if not lim then log("debug", "New s2s throttle"); lim = throttle.create(s2s_max * multiplier, 60 * multiplier); origin.throttle_unsolicited = lim; end return check_subscribed(event); end if s2s_max then module:hook("message/bare", check_subscribed_s2s, 200); module:hook("message/full", check_subscribed_s2s, 200); end module:depends("track_muc_joins");
