【发布时间】:2020-03-22 11:12:18
【问题描述】:
我使用 Ejabberd 服务器。 如何在房间配置中添加指定访客昵称字符数的选项?
【问题讨论】:
我使用 Ejabberd 服务器。 如何在房间配置中添加指定访客昵称字符数的选项?
【问题讨论】:
我没有看到限制房间占用者昵称长度的选项。
【讨论】:
这个小补丁将住户昵称的长度限制为 5 个字符或更少。不可配置,直接编辑源码即可:
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl
index ea2b069d7..bfc5b143a 100644
--- a/src/mod_muc_room.erl
+++ b/src/mod_muc_room.erl
@@ -1216,26 +1216,33 @@ do_process_presence(Nick, #presence{from = From, type = available, lang = Lang}
case is_nick_change(From, Nick, StateData) of
true ->
case {nick_collision(From, Nick, StateData),
+ string:length(Nick) > 5,
mod_muc:can_use_nick(StateData#state.server_host,
StateData#state.host,
From, Nick),
{(StateData#state.config)#config.allow_visitor_nickchange,
is_visitor(From, StateData)}} of
- {_, _, {false, true}} ->
+ {_, true, _, _} ->
+ Packet1 = Packet#presence{sub_els = [#muc{}]},
+ ErrText = ?T("That nickname exceeds the maximum allowed length"),
+ Err = xmpp:err_conflict(ErrText, Lang),
+ ejabberd_router:route_error(Packet1, Err),
+ StateData;
+ {_, _, _, {false, true}} ->
Packet1 = Packet#presence{sub_els = [#muc{}]},
ErrText = ?T("Visitors are not allowed to change their "
"nicknames in this room"),
Err = xmpp:err_not_allowed(ErrText, Lang),
ejabberd_router:route_error(Packet1, Err),
StateData;
- {true, _, _} ->
+ {true, _, _, _} ->
Packet1 = Packet#presence{sub_els = [#muc{}]},
ErrText = ?T("That nickname is already in use by another "
"occupant"),
Err = xmpp:err_conflict(ErrText, Lang),
ejabberd_router:route_error(Packet1, Err),
StateData;
- {_, false, _} ->
+ {_, _, false, _} ->
Packet1 = Packet#presence{sub_els = [#muc{}]},
Err = case Nick of
<<>> ->
【讨论】: