使用另一个用户名进入 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),
当我试图用另一个用户名进入房间时,我又用另一个用户名进入了房间。
像
我的用户名是管理员,当我发送这个 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),