使用另一个用户名进入 MUC 房间

Enter in MUC room with another username

当我试图用另一个用户名进入房间时,我又用另一个用户名进入了房间。 像 我的用户名是管理员,当我发送这个 xml 进入房间时 <presence to="roomname@conference.server.com/fakeuser" type="available"/> 然后 'admin' 将与 'fakename' 一起进入房间 如何禁止所有用户使用此功能,他们将仅以实名进入房间。

您不希望房间的居住者更改他们的昵称。这些房间可以选择禁止 "visitors" 更改他们的昵称。

但也许你也想禁止 "participants":没有任何选项,但可以修改 ejabberd 源代码,然后重新编译它,请参阅我在

此补丁阻止昵称与用户名不同的存在节,并且returns给用户一个错误:

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),