mirror of
https://github.com/processone/ejabberd.git
synced 2024-05-31 21:07:55 +02:00
Make sure all hooks are called with proper host
This commit is contained in:
parent
56df6e7ba8
commit
ff67860cdb
|
@ -216,46 +216,48 @@ dns_timeout(#{server := LServer}) ->
|
||||||
handle_auth_success(Mech, #{sockmod := SockMod,
|
handle_auth_success(Mech, #{sockmod := SockMod,
|
||||||
socket := Socket, ip := IP,
|
socket := Socket, ip := IP,
|
||||||
remote_server := RServer,
|
remote_server := RServer,
|
||||||
|
server_host := ServerHost,
|
||||||
server := LServer} = State) ->
|
server := LServer} = State) ->
|
||||||
?INFO_MSG("(~s) Accepted outbound s2s ~s authentication ~s -> ~s (~s)",
|
?INFO_MSG("(~s) Accepted outbound s2s ~s authentication ~s -> ~s (~s)",
|
||||||
[SockMod:pp(Socket), Mech, LServer, RServer,
|
[SockMod:pp(Socket), Mech, LServer, RServer,
|
||||||
ejabberd_config:may_hide_data(jlib:ip_to_list(IP))]),
|
ejabberd_config:may_hide_data(jlib:ip_to_list(IP))]),
|
||||||
ejabberd_hooks:run_fold(s2s_out_auth_result, LServer, State, [true]).
|
ejabberd_hooks:run_fold(s2s_out_auth_result, ServerHost, State, [true]).
|
||||||
|
|
||||||
handle_auth_failure(Mech, Reason,
|
handle_auth_failure(Mech, Reason,
|
||||||
#{sockmod := SockMod,
|
#{sockmod := SockMod,
|
||||||
socket := Socket, ip := IP,
|
socket := Socket, ip := IP,
|
||||||
remote_server := RServer,
|
remote_server := RServer,
|
||||||
|
server_host := ServerHost,
|
||||||
server := LServer} = State) ->
|
server := LServer} = State) ->
|
||||||
?INFO_MSG("(~s) Failed outbound s2s ~s authentication ~s -> ~s (~s): ~s",
|
?INFO_MSG("(~s) Failed outbound s2s ~s authentication ~s -> ~s (~s): ~s",
|
||||||
[SockMod:pp(Socket), Mech, LServer, RServer,
|
[SockMod:pp(Socket), Mech, LServer, RServer,
|
||||||
ejabberd_config:may_hide_data(jlib:ip_to_list(IP)),
|
ejabberd_config:may_hide_data(jlib:ip_to_list(IP)),
|
||||||
xmpp_stream_out:format_error(Reason)]),
|
xmpp_stream_out:format_error(Reason)]),
|
||||||
ejabberd_hooks:run_fold(s2s_out_auth_result, LServer, State, [{false, Reason}]).
|
ejabberd_hooks:run_fold(s2s_out_auth_result, ServerHost, State, [{false, Reason}]).
|
||||||
|
|
||||||
handle_packet(Pkt, #{server := LServer} = State) ->
|
handle_packet(Pkt, #{server_host := ServerHost} = State) ->
|
||||||
ejabberd_hooks:run_fold(s2s_out_packet, LServer, State, [Pkt]).
|
ejabberd_hooks:run_fold(s2s_out_packet, ServerHost, State, [Pkt]).
|
||||||
|
|
||||||
handle_stream_end(Reason, #{server := LServer} = State) ->
|
handle_stream_end(Reason, #{server_host := ServerHost} = State) ->
|
||||||
State1 = State#{stop_reason => Reason},
|
State1 = State#{stop_reason => Reason},
|
||||||
ejabberd_hooks:run_fold(s2s_out_closed, LServer, State1, [Reason]).
|
ejabberd_hooks:run_fold(s2s_out_closed, ServerHost, State1, [Reason]).
|
||||||
|
|
||||||
handle_stream_downgraded(StreamStart, #{server := LServer} = State) ->
|
handle_stream_downgraded(StreamStart, #{server_host := ServerHost} = State) ->
|
||||||
ejabberd_hooks:run_fold(s2s_out_downgraded, LServer, State, [StreamStart]).
|
ejabberd_hooks:run_fold(s2s_out_downgraded, ServerHost, State, [StreamStart]).
|
||||||
|
|
||||||
handle_stream_established(State) ->
|
handle_stream_established(State) ->
|
||||||
State1 = State#{on_route => send},
|
State1 = State#{on_route => send},
|
||||||
State2 = resend_queue(State1),
|
State2 = resend_queue(State1),
|
||||||
set_idle_timeout(State2).
|
set_idle_timeout(State2).
|
||||||
|
|
||||||
handle_cdata(Data, #{server := LServer} = State) ->
|
handle_cdata(Data, #{server_host := ServerHost} = State) ->
|
||||||
ejabberd_hooks:run_fold(s2s_out_handle_cdata, LServer, State, [Data]).
|
ejabberd_hooks:run_fold(s2s_out_handle_cdata, ServerHost, State, [Data]).
|
||||||
|
|
||||||
handle_recv(El, Pkt, #{server := LServer} = State) ->
|
handle_recv(El, Pkt, #{server_host := ServerHost} = State) ->
|
||||||
ejabberd_hooks:run_fold(s2s_out_handle_recv, LServer, State, [El, Pkt]).
|
ejabberd_hooks:run_fold(s2s_out_handle_recv, ServerHost, State, [El, Pkt]).
|
||||||
|
|
||||||
handle_send(El, Pkt, #{server := LServer} = State) ->
|
handle_send(El, Pkt, #{server_host := ServerHost} = State) ->
|
||||||
ejabberd_hooks:run_fold(s2s_out_handle_send, LServer, State, [El, Pkt]).
|
ejabberd_hooks:run_fold(s2s_out_handle_send, ServerHost, State, [El, Pkt]).
|
||||||
|
|
||||||
handle_timeout(#{on_route := Action} = State) ->
|
handle_timeout(#{on_route := Action} = State) ->
|
||||||
case Action of
|
case Action of
|
||||||
|
@ -264,25 +266,27 @@ handle_timeout(#{on_route := Action} = State) ->
|
||||||
end.
|
end.
|
||||||
|
|
||||||
init([#{server := LServer, remote_server := RServer} = State, Opts]) ->
|
init([#{server := LServer, remote_server := RServer} = State, Opts]) ->
|
||||||
|
ServerHost = ejabberd_router:host_of_route(LServer),
|
||||||
State1 = State#{on_route => queue,
|
State1 = State#{on_route => queue,
|
||||||
queue => queue:new(),
|
queue => queue:new(),
|
||||||
xmlns => ?NS_SERVER,
|
xmlns => ?NS_SERVER,
|
||||||
lang => ?MYLANG,
|
lang => ?MYLANG,
|
||||||
|
server_host => ServerHost,
|
||||||
shaper => none},
|
shaper => none},
|
||||||
?INFO_MSG("Outbound s2s connection started: ~s -> ~s",
|
?INFO_MSG("Outbound s2s connection started: ~s -> ~s",
|
||||||
[LServer, RServer]),
|
[LServer, RServer]),
|
||||||
ejabberd_hooks:run_fold(s2s_out_init, LServer, {ok, State1}, [Opts]).
|
ejabberd_hooks:run_fold(s2s_out_init, ServerHost, {ok, State1}, [Opts]).
|
||||||
|
|
||||||
handle_call(Request, From, #{server := LServer} = State) ->
|
handle_call(Request, From, #{server_host := ServerHost} = State) ->
|
||||||
ejabberd_hooks:run_fold(s2s_out_handle_call, LServer, State, [Request, From]).
|
ejabberd_hooks:run_fold(s2s_out_handle_call, ServerHost, State, [Request, From]).
|
||||||
|
|
||||||
handle_cast({update_state, Fun}, State) ->
|
handle_cast({update_state, Fun}, State) ->
|
||||||
case Fun of
|
case Fun of
|
||||||
{M, F, A} -> erlang:apply(M, F, [State|A]);
|
{M, F, A} -> erlang:apply(M, F, [State|A]);
|
||||||
_ when is_function(Fun) -> Fun(State)
|
_ when is_function(Fun) -> Fun(State)
|
||||||
end;
|
end;
|
||||||
handle_cast(Msg, #{server := LServer} = State) ->
|
handle_cast(Msg, #{server_host := ServerHost} = State) ->
|
||||||
ejabberd_hooks:run_fold(s2s_out_handle_cast, LServer, State, [Msg]).
|
ejabberd_hooks:run_fold(s2s_out_handle_cast, ServerHost, State, [Msg]).
|
||||||
|
|
||||||
handle_info({route, Pkt}, #{queue := Q, on_route := Action} = State) ->
|
handle_info({route, Pkt}, #{queue := Q, on_route := Action} = State) ->
|
||||||
case Action of
|
case Action of
|
||||||
|
@ -290,8 +294,8 @@ handle_info({route, Pkt}, #{queue := Q, on_route := Action} = State) ->
|
||||||
bounce -> bounce_packet(Pkt, State);
|
bounce -> bounce_packet(Pkt, State);
|
||||||
send -> set_idle_timeout(send(State, Pkt))
|
send -> set_idle_timeout(send(State, Pkt))
|
||||||
end;
|
end;
|
||||||
handle_info(Info, #{server := LServer} = State) ->
|
handle_info(Info, #{server_host := ServerHost} = State) ->
|
||||||
ejabberd_hooks:run_fold(s2s_out_handle_info, LServer, State, [Info]).
|
ejabberd_hooks:run_fold(s2s_out_handle_info, ServerHost, State, [Info]).
|
||||||
|
|
||||||
terminate(Reason, #{server := LServer,
|
terminate(Reason, #{server := LServer,
|
||||||
remote_server := RServer} = State) ->
|
remote_server := RServer} = State) ->
|
||||||
|
|
Loading…
Reference in New Issue
Block a user