mirror of
https://github.com/processone/ejabberd.git
synced 2024-06-14 22:00:16 +02:00
Implement voice approvement detection and remove some debug code
This commit is contained in:
parent
04267930de
commit
8dd6f128bf
|
@ -258,6 +258,7 @@ normal_state({route, From, "",
|
||||||
Type when (Type == "") or (Type == "normal") ->
|
Type when (Type == "") or (Type == "normal") ->
|
||||||
IsInvitation = is_invitation(Els),
|
IsInvitation = is_invitation(Els),
|
||||||
IsVoiceRequest = is_voice_request(Els),
|
IsVoiceRequest = is_voice_request(Els),
|
||||||
|
IsVoiceApprovement = is_voice_approvement(Els),
|
||||||
if
|
if
|
||||||
IsInvitation ->
|
IsInvitation ->
|
||||||
case catch check_invitation(From, Els, Lang, StateData) of
|
case catch check_invitation(From, Els, Lang, StateData) of
|
||||||
|
@ -299,6 +300,8 @@ normal_state({route, From, "",
|
||||||
IsVoiceRequest ->
|
IsVoiceRequest ->
|
||||||
send_voice_request(From, StateData),
|
send_voice_request(From, StateData),
|
||||||
{next_state, normal_state, StateData};
|
{next_state, normal_state, StateData};
|
||||||
|
IsVoiceApprovement ->
|
||||||
|
{next_state, normal_state, StateData};
|
||||||
true ->
|
true ->
|
||||||
{next_state, normal_state, StateData}
|
{next_state, normal_state, StateData}
|
||||||
end;
|
end;
|
||||||
|
@ -3694,13 +3697,10 @@ prepare_request_form(Requester, Nick, Lang) ->
|
||||||
}]}.
|
}]}.
|
||||||
|
|
||||||
send_voice_request(From, StateData) ->
|
send_voice_request(From, StateData) ->
|
||||||
?ERROR_MSG("MUC ROOM: send_voice_request: From = ~p~n", [From]),
|
|
||||||
Moderators = search_role(moderator, StateData),
|
Moderators = search_role(moderator, StateData),
|
||||||
?ERROR_MSG("MUC ROOM: send_voice_request: Moderators = ~p~n", [Moderators]),
|
|
||||||
[{_, #user{nick = FromNick}}] = lists:filter(
|
[{_, #user{nick = FromNick}}] = lists:filter(
|
||||||
fun({_, #user{jid = Jid}}) -> Jid == From end,
|
fun({_, #user{jid = Jid}}) -> Jid == From end,
|
||||||
?DICT:to_list(StateData#state.users)),
|
?DICT:to_list(StateData#state.users)),
|
||||||
?ERROR_MSG("MUC ROOM: send_voice_request: FromNick = ~p~n", [FromNick]),
|
|
||||||
lists:map(
|
lists:map(
|
||||||
fun({_, User}) ->
|
fun({_, User}) ->
|
||||||
ejabberd_router:route(
|
ejabberd_router:route(
|
||||||
|
@ -3710,6 +3710,58 @@ send_voice_request(From, StateData) ->
|
||||||
end, Moderators),
|
end, Moderators),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
|
is_voice_approvement(Els) ->
|
||||||
|
try
|
||||||
|
case xml:remove_cdata(Els) of
|
||||||
|
[{xmlelement, "x", Attrs, Els1}] ->
|
||||||
|
case xml:get_attr_s("xmlns", Attrs) of
|
||||||
|
?NS_XDATA ->
|
||||||
|
case xml:get_attr_s("type", Attrs) of
|
||||||
|
"submit" ->
|
||||||
|
lists:foldl(
|
||||||
|
fun(X,Y) ->
|
||||||
|
check_voice_approvement_fields(X,Y)
|
||||||
|
end,
|
||||||
|
true, xml:remove_cdata(Els1))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
catch
|
||||||
|
error: _ ->
|
||||||
|
false
|
||||||
|
end.
|
||||||
|
|
||||||
|
check_voice_approvement_fields({xmlelement, "field", Attrs, Els}, Acc) ->
|
||||||
|
if Acc ->
|
||||||
|
case xml:get_attr_s("var", Attrs) of
|
||||||
|
"FORM_TYPE" ->
|
||||||
|
[{xmlelement, "value", _, Value}] = xml:remove_cdata(Els),
|
||||||
|
case xml:get_cdata(Value) of
|
||||||
|
"http://jabber.org/protocol/muc#request" ->
|
||||||
|
true
|
||||||
|
end;
|
||||||
|
"muc#role" ->
|
||||||
|
[{xmlelement, "value", _, Value}] = xml:remove_cdata(Els),
|
||||||
|
case xml:get_cdata(Value) of
|
||||||
|
"participant" ->
|
||||||
|
true
|
||||||
|
end;
|
||||||
|
"muc#jid" ->
|
||||||
|
true; % TODO: make some validation here
|
||||||
|
"muc#roomnick" ->
|
||||||
|
true;
|
||||||
|
"muc#request_allow" ->
|
||||||
|
% XXX: submitted forms with request_allow unchecked ignored here
|
||||||
|
[{xmlelement, "value", _, Value}] = xml:remove_cdata(Els),
|
||||||
|
case xml:get_cdata(Value) of
|
||||||
|
"true" ->
|
||||||
|
true;
|
||||||
|
"1" ->
|
||||||
|
true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end.
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% Invitation support
|
% Invitation support
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user