Software / code / prosody-modules
Comparison
mod_muc_limits/README.markdown @ 1803:4d73a1a6ba68
Convert all wiki pages to Markdown
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 28 Aug 2015 18:03:58 +0200 |
| parent | 1782:mod_muc_limits/README.wiki@29f3d6b7ad16 |
| child | 1833:52e998bb4490 |
comparison
equal
deleted
inserted
replaced
| 1802:0ab737feada6 | 1803:4d73a1a6ba68 |
|---|---|
| 1 --- | |
| 2 labels: | |
| 3 - 'Stage-Beta' | |
| 4 summary: 'Impose rate-limits on a MUC' | |
| 5 ... | |
| 6 | |
| 7 Introduction | |
| 8 ============ | |
| 9 | |
| 10 This module allows you to control the maximum rate of 'events' in a MUC | |
| 11 room. This makes it useful to prevent room floods (whether malicious or | |
| 12 accidental). | |
| 13 | |
| 14 Details | |
| 15 ======= | |
| 16 | |
| 17 This module limits the following events: | |
| 18 | |
| 19 - Room joins | |
| 20 - Nick changes | |
| 21 - Status changes | |
| 22 - Messages (including private messages) | |
| 23 | |
| 24 The limit is for the room as a whole, not individual occupants in the | |
| 25 room. Users with an affiliation (members, admins and owners) are not | |
| 26 limited. | |
| 27 | |
| 28 Configuration | |
| 29 ============= | |
| 30 | |
| 31 Add the module to the MUC host (not the global modules\_enabled): | |
| 32 | |
| 33 Component "conference.example.com" "muc" | |
| 34 modules_enabled = { "muc_limits" } | |
| 35 | |
| 36 You can define (globally or per-MUC component) the following options: | |
| 37 | |
| 38 Name Default value Description | |
| 39 -------------------- --------------- ------------------------------------------ | |
| 40 muc\_event\_rate 0.5 The maximum number of events per second. | |
| 41 muc\_burst\_factor 6 Allow temporary bursts of this multiple. | |
| 42 | |
| 43 For more understanding of how these values are used, see the algorithm | |
| 44 section below. | |
| 45 | |
| 46 Algorithm | |
| 47 ========= | |
| 48 | |
| 49 A certain number of events are allowed per second, given by | |
| 50 muc\_event\_rate. An event rate of 1 allows one event per second, and | |
| 51 event rate of 3 allows three events per second, and 0.5 allows one event | |
| 52 every two seconds, and so on. | |
| 53 | |
| 54 Obviously MUC conversations are not exactly steady streams of events. | |
| 55 Sometimes multiple people will talk at once. This is handled by the | |
| 56 muc\_burst\_factor option. | |
| 57 | |
| 58 A burst factor of 2 will allow 2 times as many events at once, for 2 | |
| 59 seconds, before throttling will be triggered. A factor of 5, 5 times as | |
| 60 many events for 5 seconds. | |
| 61 | |
| 62 When the limit is reached, an error response will be generated telling | |
| 63 the user the MUC is overactive, and asking them to try again. | |
| 64 | |
| 65 Compatibility | |
| 66 ============= | |
| 67 | |
| 68 ------- ----------------- | |
| 69 Trunk Works | |
| 70 0.8 Doesn't work`*` | |
| 71 ------- ----------------- | |
| 72 | |
| 73 `*` This module can be made to work in 0.8 (and *maybe* previous | |
| 74 versions) of Prosody by copying the new | |
| 75 [util.throttle](http://hg.prosody.im/trunk/raw-file/fc8a22936b3c/util/throttle.lua) | |
| 76 into your Prosody source directory (into the util/ subdirectory). |