在Ejabberd上,用户如何离开会议



mod_muc配置中,我可以看到有一个选项max_user_conferences,其默认值为100。在我的情况下,我希望一个特定的用户来调节应用程序中的所有会话,所以这个帐户可能需要连接到500个会议。我可以将max_user_conferences设置为1000,但是否可以通过离开会议或以某种方式为该用户清除来降低这个数字?

谢谢!

我可以想出三种方法来实现这一点:

A( 告诉该用户离开不需要管理任务的会议室,这样该帐户就不会达到500次会议的限制。

B( 将限额提高到高于该帐户所需的限额。当然,其他账户也可以加入这么多房间。如果你是一个没有垃圾邮件发送者或坏人的企业,也许这在你的服务器上不是问题。

C( 将这个小补丁应用于ejabberd源代码:

diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl
index 9e633a604..e3d7c93e1 100644
--- a/src/mod_muc_room.erl
+++ b/src/mod_muc_room.erl
@@ -2049,11 +2049,11 @@ add_new_user(From, Nick, Packet, StateData) ->
mod_muc_opt:max_user_conferences(StateData#state.server_host),
Collision = nick_collision(From, Nick, StateData),
IsSubscribeRequest = not is_record(Packet, presence),
-    case {(ServiceAffiliation == owner orelse
-        ((Affiliation == admin orelse Affiliation == owner)
+    case {ServiceAffiliation == owner orelse
+        ((((Affiliation == admin orelse Affiliation == owner)
andalso NUsers < MaxAdminUsers)
orelse NUsers < MaxUsers)
-       andalso NConferences < MaxConferences,
+       andalso NConferences < MaxConferences),
Collision,
mod_muc:can_use_nick(StateData#state.server_host,
StateData#state.host, From, Nick),

并授予该帐户(比方说tomrules@example.com)MUC服务中的管理权限:

acl:
muc_admin:
user:
- tomrules@example.com
modules:
mod_muc:
access_admin:
- allow: admin
- allow: muc_admin

现在,该用户可以加入无限的房间,其他帐户像往常一样受到限制。

最新更新