* src/mod_muc/mod_muc_room.erl: MUC kicks a participant if sends a
private message with type=error (EJAB-496) SVN Revision: 1142
This commit is contained in:
parent
bceea5fc73
commit
5868a9d1a5
|
@ -1,3 +1,8 @@
|
||||||
|
2008-01-09 Badlop <badlop@process-one.net>
|
||||||
|
|
||||||
|
* src/mod_muc/mod_muc_room.erl: MUC kicks a participant if sends a
|
||||||
|
private message with type=error (EJAB-496)
|
||||||
|
|
||||||
2008-01-08 Badlop <badlop@process-one.net>
|
2008-01-08 Badlop <badlop@process-one.net>
|
||||||
|
|
||||||
* src/ejabberdctl.template: Removed the option ERL_FULLSWEEP_AFTER
|
* src/ejabberdctl.template: Removed the option ERL_FULLSWEEP_AFTER
|
||||||
|
|
|
@ -469,71 +469,53 @@ normal_state({route, From, ToNick,
|
||||||
StateData) ->
|
StateData) ->
|
||||||
Type = xml:get_attr_s("type", Attrs),
|
Type = xml:get_attr_s("type", Attrs),
|
||||||
Lang = xml:get_attr_s("xml:lang", Attrs),
|
Lang = xml:get_attr_s("xml:lang", Attrs),
|
||||||
case Type of
|
case (StateData#state.config)#config.allow_private_messages
|
||||||
"error" ->
|
andalso is_user_online(From, StateData) of
|
||||||
case is_user_online(From, StateData) of
|
true ->
|
||||||
true ->
|
case Type of
|
||||||
NewState =
|
"groupchat" ->
|
||||||
add_user_presence_un(
|
ErrText = "It is not allowed to send private "
|
||||||
From,
|
"messages of type \"groupchat\"",
|
||||||
{xmlelement, "presence",
|
Err = jlib:make_error_reply(
|
||||||
[{"type", "unavailable"}], []},
|
Packet, ?ERRT_BAD_REQUEST(Lang, ErrText)),
|
||||||
StateData),
|
ejabberd_router:route(
|
||||||
send_new_presence(From, NewState),
|
jlib:jid_replace_resource(
|
||||||
{next_state, normal_state,
|
StateData#state.jid,
|
||||||
remove_online_user(From, NewState)};
|
ToNick),
|
||||||
|
From, Err);
|
||||||
_ ->
|
_ ->
|
||||||
{next_state, normal_state, StateData}
|
case find_jid_by_nick(ToNick, StateData) of
|
||||||
|
false ->
|
||||||
|
ErrText = "Recipient is not in the conference room",
|
||||||
|
Err = jlib:make_error_reply(
|
||||||
|
Packet, ?ERRT_ITEM_NOT_FOUND(Lang, ErrText)),
|
||||||
|
ejabberd_router:route(
|
||||||
|
jlib:jid_replace_resource(
|
||||||
|
StateData#state.jid,
|
||||||
|
ToNick),
|
||||||
|
From, Err);
|
||||||
|
ToJID ->
|
||||||
|
{ok, #user{nick = FromNick}} =
|
||||||
|
?DICT:find(jlib:jid_tolower(From),
|
||||||
|
StateData#state.users),
|
||||||
|
ejabberd_router:route(
|
||||||
|
jlib:jid_replace_resource(
|
||||||
|
StateData#state.jid,
|
||||||
|
FromNick),
|
||||||
|
ToJID, Packet)
|
||||||
|
end
|
||||||
end;
|
end;
|
||||||
_ ->
|
_ ->
|
||||||
case (StateData#state.config)#config.allow_private_messages
|
ErrText = "Only occupants are allowed to send messages to the conference",
|
||||||
andalso is_user_online(From, StateData) of
|
Err = jlib:make_error_reply(
|
||||||
true ->
|
Packet, ?ERRT_NOT_ACCEPTABLE(Lang, ErrText)),
|
||||||
case Type of
|
ejabberd_router:route(
|
||||||
"groupchat" ->
|
jlib:jid_replace_resource(
|
||||||
ErrText = "It is not allowed to send private "
|
StateData#state.jid,
|
||||||
"messages of type \"groupchat\"",
|
ToNick),
|
||||||
Err = jlib:make_error_reply(
|
From, Err)
|
||||||
Packet, ?ERRT_BAD_REQUEST(Lang, ErrText)),
|
end,
|
||||||
ejabberd_router:route(
|
{next_state, normal_state, StateData};
|
||||||
jlib:jid_replace_resource(
|
|
||||||
StateData#state.jid,
|
|
||||||
ToNick),
|
|
||||||
From, Err);
|
|
||||||
_ ->
|
|
||||||
case find_jid_by_nick(ToNick, StateData) of
|
|
||||||
false ->
|
|
||||||
ErrText = "Recipient is not in the conference room",
|
|
||||||
Err = jlib:make_error_reply(
|
|
||||||
Packet, ?ERRT_ITEM_NOT_FOUND(Lang, ErrText)),
|
|
||||||
ejabberd_router:route(
|
|
||||||
jlib:jid_replace_resource(
|
|
||||||
StateData#state.jid,
|
|
||||||
ToNick),
|
|
||||||
From, Err);
|
|
||||||
ToJID ->
|
|
||||||
{ok, #user{nick = FromNick}} =
|
|
||||||
?DICT:find(jlib:jid_tolower(From),
|
|
||||||
StateData#state.users),
|
|
||||||
ejabberd_router:route(
|
|
||||||
jlib:jid_replace_resource(
|
|
||||||
StateData#state.jid,
|
|
||||||
FromNick),
|
|
||||||
ToJID, Packet)
|
|
||||||
end
|
|
||||||
end;
|
|
||||||
_ ->
|
|
||||||
ErrText = "Only occupants are allowed to send messages to the conference",
|
|
||||||
Err = jlib:make_error_reply(
|
|
||||||
Packet, ?ERRT_NOT_ACCEPTABLE(Lang, ErrText)),
|
|
||||||
ejabberd_router:route(
|
|
||||||
jlib:jid_replace_resource(
|
|
||||||
StateData#state.jid,
|
|
||||||
ToNick),
|
|
||||||
From, Err)
|
|
||||||
end,
|
|
||||||
{next_state, normal_state, StateData}
|
|
||||||
end;
|
|
||||||
|
|
||||||
normal_state({route, From, ToNick,
|
normal_state({route, From, ToNick,
|
||||||
{xmlelement, "iq", Attrs, _Els} = Packet},
|
{xmlelement, "iq", Attrs, _Els} = Packet},
|
||||||
|
|
Loading…
Reference in New Issue