From 20da9063116d464e29ad351ed3dd8602c5bc9804 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micka=C3=ABl=20R=C3=A9mond?=
 <mickael.remond@process-one.net>
Date: Mon, 25 Jun 2007 16:43:42 +0000
Subject: * src/mod_muc/mod_muc_room.erl: New anti-abuse options:
 min_presence_interval and min_message_interval (EJAB-227) * doc/guide.tex:
 Likewise

SVN Revision: 794
---
 doc/guide.tex | 49 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 47 insertions(+), 2 deletions(-)

(limited to 'doc/guide.tex')

diff --git a/doc/guide.tex b/doc/guide.tex
index 6140f158f..4b117ba00 100644
--- a/doc/guide.tex
+++ b/doc/guide.tex
@@ -1935,6 +1935,28 @@ Options:
   disables the history feature and, as a result, nothing is kept in memory. The
   default value is \term{20}. This value is global and thus affects all rooms on
   the server.
+\titem{min\_message\_interval} \ind{options!min\_message\_interval}
+This option defines the minimum interval between two messages send by
+a user in seconds. This option is global and valid for all chat
+rooms. A decimal value can be used. When this option is not defined,
+message rate is not limited. This feature can be used to protect a MUC
+service from users abuses and limit number of messages that will be
+broadcasted by the service. A good value for this minimum message
+interval is 0.4 second. If a user tries to send messages faster, an
+error is send back explaining that the message have been discarded and
+describing the reason why the message is not acceptable.
+\titem{min\_presence\_interval} \ind{options!min\_presence\_interval}
+This option defines the minimum of time between presence changes
+coming from a given user in seconds. This option is global and valid
+for all chat rooms. A decimal value can be used. When this option is
+not defined, no restriction are applied. This option can be used to
+protect a MUC service for users abuses, as fastly changing a user
+presence will result in possible large presence packet broadcast. If a
+user tries to change its presence more often than the specified
+interval, the presence is cached by ejabberd and only the last
+presence is broadcasted to all users in the room after expiration of
+the interval delay. Intermediate presence packets are silently
+discarded. A good value for this option is 4 seconds.
 \end{description}
 
 Examples:
@@ -1994,9 +2016,32 @@ Examples:
     ...
    ]}.
 \end{verbatim}
+
+\item In the following example, MUC anti abuse options are used. A
+user cannot send more than one message every 0.4 seconds and cannot
+change its presence more than once every 4 seconds. No ACLs are
+defined, but some user restriction could be added as well:
+
+  \begin{verbatim}
+  ...
+  {modules,
+   [
+    ...
+    {mod_muc, [{min_message_interval, 0.4},
+               {min_presence_interval, 4}]},
+    ...
+   ]}.
+\end{verbatim}
+
 \end{itemize}
 
-The Multi-Users Chat module now supports clustering and load balancing. One module can be started per cluster node. Rooms are distributed at creation time on all available MUC module instances. The multi-user chat module is clustered but the room themselves are not clustered nor fault-tolerant: If the not managing a set of rooms goes down, the rooms disappear and they will be recreated on an available node on first connection attempt.
+The Multi-Users Chat module now supports clustering and load
+balancing. One module can be started per cluster node. Rooms are
+distributed at creation time on all available MUC module
+instances. The multi-user chat module is clustered but the room
+themselves are not clustered nor fault-tolerant: If the not managing a
+set of rooms goes down, the rooms disappear and they will be recreated
+on an available node on first connection attempt.
 
 \subsection{\modmuclog{}}
 \label{modmuclog}
@@ -2055,7 +2100,7 @@ Options:
   as reported to Erlang by the operating system, will be used. With the latter,
   GMT/UTC time will be used. The default value is \term{local}.
 \titem{spam\_prevention}\ind{options!spam\_prevention}
-  To prevent spam, the \term{spam_prevention} option adds a special attribute
+  To prevent spam, the \term{spam\_prevention} option adds a special attribute
   to links that prevent their indexation by search engines. The default value
   is \term{true}, which mean that nofollow attributes will be added to user
   submitted links. 
-- 
cgit v1.2.3

