diff options
Diffstat (limited to 'src/ejabberd_c2s.erl')
-rw-r--r-- | src/ejabberd_c2s.erl | 77 |
1 files changed, 52 insertions, 25 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index cccd41b0..135bc700 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -623,9 +623,13 @@ wait_for_auth({xmlstreamelement, El}, StateData) -> P, D, DGen) of {true, AuthModule} -> - ?INFO_MSG("(~w) Accepted legacy authentication for ~s by ~p", - [StateData#state.socket, - jlib:jid_to_string(JID), AuthModule]), + ?INFO_MSG("(~w) Accepted legacy authentication for ~s by ~p from ~s", + [StateData#state.socket, + jlib:jid_to_string(JID), AuthModule, + jlib:ip_to_list(StateData#state.ip)]), + ejabberd_hooks:run(c2s_auth_result, StateData#state.server, + [true, U, StateData#state.server, + StateData#state.ip]), Conn = get_conn_type(StateData), Info = [{ip, StateData#state.ip}, {conn, Conn}, {auth_module, AuthModule}], @@ -660,12 +664,13 @@ wait_for_auth({xmlstreamelement, El}, StateData) -> privacy_list = PrivList}, fsm_next_state(session_established, NewStateData); _ -> - IP = peerip(StateData#state.sockmod, - StateData#state.socket), - ?INFO_MSG("(~w) Failed legacy authentication for " - "~s from IP ~s", - [StateData#state.socket, - jlib:jid_to_string(JID), jlib:ip_to_list(IP)]), + ?INFO_MSG("(~w) Failed legacy authentication for ~s from ~s", + [StateData#state.socket, + jlib:jid_to_string(JID), + jlib:ip_to_list(StateData#state.ip)]), + ejabberd_hooks:run(c2s_auth_result, StateData#state.server, + [false, U, StateData#state.server, + StateData#state.ip]), Err = jlib:make_error_reply(El, ?ERR_NOT_AUTHORIZED), send_element(StateData, Err), fsm_next_state(wait_for_auth, StateData) @@ -680,9 +685,13 @@ wait_for_auth({xmlstreamelement, El}, StateData) -> fsm_next_state(wait_for_auth, StateData); true -> ?INFO_MSG("(~w) Forbidden legacy authentication " - "for ~s", + "for ~s from ~s", [StateData#state.socket, - jlib:jid_to_string(JID)]), + jlib:jid_to_string(JID), + jlib:ip_to_list(StateData#state.ip)]), + ejabberd_hooks:run(c2s_auth_result, StateData#state.server, + [false, U, StateData#state.server, + StateData#state.ip]), Err = jlib:make_error_reply(El, ?ERR_NOT_ALLOWED), send_element(StateData, Err), fsm_next_state(wait_for_auth, StateData) @@ -732,8 +741,12 @@ wait_for_feature_request({xmlstreamelement, El}, %AuthModule = xml:get_attr_s(auth_module, Props), AuthModule = proplists:get_value(auth_module, Props, undefined), ?INFO_MSG("(~w) Accepted authentication for ~s " - "by ~p", - [StateData#state.socket, U, AuthModule]), + "by ~p from ~s", + [StateData#state.socket, U, AuthModule, + jlib:ip_to_list(StateData#state.ip)]), + ejabberd_hooks:run(c2s_auth_result, StateData#state.server, + [true, U, StateData#state.server, + StateData#state.ip]), send_element(StateData, #xmlel{name = <<"success">>, attrs = [{<<"xmlns">>, ?NS_SASL}], @@ -754,10 +767,13 @@ wait_for_feature_request({xmlstreamelement, El}, fsm_next_state(wait_for_sasl_response, StateData#state{sasl_state = NewSASLState}); {error, Error, Username} -> - IP = peerip(StateData#state.sockmod, StateData#state.socket), - ?INFO_MSG("(~w) Failed authentication for ~s@~s from IP ~s", - [StateData#state.socket, - Username, StateData#state.server, jlib:ip_to_list(IP)]), + ?INFO_MSG("(~w) Failed authentication for ~s@~s from ~s", + [StateData#state.socket, + Username, StateData#state.server, + jlib:ip_to_list(StateData#state.ip)]), + ejabberd_hooks:run(c2s_auth_result, StateData#state.server, + [false, Username, StateData#state.server, + StateData#state.ip]), send_element(StateData, #xmlel{name = <<"failure">>, attrs = [{<<"xmlns">>, ?NS_SASL}], @@ -878,8 +894,12 @@ wait_for_sasl_response({xmlstreamelement, El}, % AuthModule = xml:get_attr_s(auth_module, Props), AuthModule = proplists:get_value(auth_module, Props, <<>>), ?INFO_MSG("(~w) Accepted authentication for ~s " - "by ~p", - [StateData#state.socket, U, AuthModule]), + "by ~p from ~s", + [StateData#state.socket, U, AuthModule, + jlib:ip_to_list(StateData#state.ip)]), + ejabberd_hooks:run(c2s_auth_result, StateData#state.server, + [true, U, StateData#state.server, + StateData#state.ip]), send_element(StateData, #xmlel{name = <<"success">>, attrs = [{<<"xmlns">>, ?NS_SASL}], @@ -897,8 +917,12 @@ wait_for_sasl_response({xmlstreamelement, El}, % AuthModule = xml:get_attr_s(auth_module, Props), AuthModule = proplists:get_value(auth_module, Props, undefined), ?INFO_MSG("(~w) Accepted authentication for ~s " - "by ~p", - [StateData#state.socket, U, AuthModule]), + "by ~p from ~s", + [StateData#state.socket, U, AuthModule, + jlib:ip_to_list(StateData#state.ip)]), + ejabberd_hooks:run(c2s_auth_result, StateData#state.server, + [true, U, StateData#state.server, + StateData#state.ip]), send_element(StateData, #xmlel{name = <<"success">>, attrs = [{<<"xmlns">>, ?NS_SASL}], @@ -921,10 +945,13 @@ wait_for_sasl_response({xmlstreamelement, El}, fsm_next_state(wait_for_sasl_response, StateData#state{sasl_state = NewSASLState}); {error, Error, Username} -> - IP = peerip(StateData#state.sockmod, StateData#state.socket), - ?INFO_MSG("(~w) Failed authentication for ~s@~s from IP ~s", - [StateData#state.socket, - Username, StateData#state.server, jlib:ip_to_list(IP)]), + ?INFO_MSG("(~w) Failed authentication for ~s@~s from ~s", + [StateData#state.socket, + Username, StateData#state.server, + jlib:ip_to_list(StateData#state.ip)]), + ejabberd_hooks:run(c2s_auth_result, StateData#state.server, + [false, Username, StateData#state.server, + StateData#state.ip]), send_element(StateData, #xmlel{name = <<"failure">>, attrs = [{<<"xmlns">>, ?NS_SASL}], |