当我尝试使用另一个用户名进入房间时,我进入了使用其他用户名的房间。
喜欢
我的用户名是admin,当我发送此xml进入房间时
<presence to="roomname@conference.server.com/fakeuser" type="available"/>
然后“管理员”将以“假名”进入房间
如何禁止所有用户这样做,因此他们将只能在房间里输入真实姓名。
答案 0 :(得分:0)
您不希望房间的占用者更改其昵称。房间可以选择禁止“访客”更改其昵称。
但是也许您也想禁止“参与者”:对此没有任何选择,但是可以修改ejabberd源代码并重新编译,请参见我在Remove some options from room config MUC中提供的第三个补丁
答案 1 :(得分:0)
此修补程序阻止昵称与用户名不同的存在节,并向用户返回错误:
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl
index 492f9a4b3..3918401d1 100644
--- a/src/mod_muc_room.erl
+++ b/src/mod_muc_room.erl
@@ -342,6 +342,15 @@ normal_state({route, <<"">>, #iq{} = IQ}, StateData) ->
true -> {stop, normal, StateData};
false -> {next_state, normal_state, StateData}
end;
+normal_state({route, Nick, #presence{from = From, lang = Lang} = Packet}, StateData)
+ when From#jid.luser /= Nick ->
+ ErrText = <<"It is not allowed to join the room with nickname different than username">>,
+ Err = xmpp:err_forbidden(ErrText, Lang),
+ ejabberd_router:route_error(Packet, Err),
+ case StateData#state.just_created of
+ true -> {stop, normal, StateData};
+ false -> {next_state, normal_state, StateData}
+ end;
normal_state({route, Nick, #presence{from = From} = Packet}, StateData) ->
Activity = get_user_activity(From, StateData),
Now = p1_time_compat:system_time(micro_seconds),