feat: add hook for sending packet from component
New hook 'component_send_packet' added. Callback function must accept one argument {Pkt, ComponentState} and should yield 'drop' or {NewPkt, NewComponentState}.
This commit is contained in:
parent
9373ad20ca
commit
7b3d26992b
|
@ -185,14 +185,20 @@ handle_auth_failure(_, Mech, Reason,
|
||||||
Reason]),
|
Reason]),
|
||||||
State.
|
State.
|
||||||
|
|
||||||
handle_authenticated_packet(Pkt0, #{ip := {IP, _}, lang := Lang} = State)
|
handle_authenticated_packet(Pkt0, #{server := Server, ip := {IP, _}, lang := Lang} = State)
|
||||||
when ?is_stanza(Pkt0) ->
|
when ?is_stanza(Pkt0) ->
|
||||||
Pkt = xmpp:put_meta(Pkt0, ip, IP),
|
Pkt = xmpp:put_meta(Pkt0, ip, IP),
|
||||||
From = xmpp:get_from(Pkt),
|
From = xmpp:get_from(Pkt),
|
||||||
case check_from(From, State) of
|
case check_from(From, State) of
|
||||||
true ->
|
true ->
|
||||||
ejabberd_router:route(Pkt),
|
{Pkt2, State2} = ejabberd_hooks:run_fold(component_send_packet, Server, {Pkt, State}, []),
|
||||||
State;
|
case Pkt2 of
|
||||||
|
drop ->
|
||||||
|
ok;
|
||||||
|
_ ->
|
||||||
|
ejabberd_router:route(Pkt2)
|
||||||
|
end,
|
||||||
|
State2;
|
||||||
false ->
|
false ->
|
||||||
Txt = <<"Improper domain part of 'from' attribute">>,
|
Txt = <<"Improper domain part of 'from' attribute">>,
|
||||||
Err = xmpp:serr_invalid_from(Txt, Lang),
|
Err = xmpp:serr_invalid_from(Txt, Lang),
|
||||||
|
|
Loading…
Reference in New Issue