From ad996afe473a0add9d366c14d10d8e5bcaacac68 Mon Sep 17 00:00:00 2001 From: JianBo He Date: Fri, 21 Jan 2022 11:14:06 +0800 Subject: [PATCH] chore: ensure connected_at field for connect/connack/disconnected event --- apps/emqx_web_hook/src/emqx_web_hook.erl | 3 +++ apps/emqx_web_hook/test/props/prop_webhook_hooks.erl | 5 ++++- lib-ce/emqx_modules/src/emqx_mod_presence.erl | 7 ++++--- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/apps/emqx_web_hook/src/emqx_web_hook.erl b/apps/emqx_web_hook/src/emqx_web_hook.erl index b556c16f8..7da2e3c6b 100644 --- a/apps/emqx_web_hook/src/emqx_web_hook.erl +++ b/apps/emqx_web_hook/src/emqx_web_hook.erl @@ -93,6 +93,7 @@ on_client_connect(ConnInfo = #{clientid := ClientId, username := Username, peern , ipaddress => iolist_to_binary(ntoa(Peerhost)) , keepalive => maps:get(keepalive, ConnInfo) , proto_ver => maps:get(proto_ver, ConnInfo) + , connected_at => maps:get(connected_at, ConnInfo) }, send_http_request(ClientId, Params). @@ -109,6 +110,7 @@ on_client_connack(ConnInfo = #{clientid := ClientId, username := Username, peern , ipaddress => iolist_to_binary(ntoa(Peerhost)) , keepalive => maps:get(keepalive, ConnInfo) , proto_ver => maps:get(proto_ver, ConnInfo) + , connected_at => maps:get(connected_at, ConnInfo) , conn_ack => Rc }, send_http_request(ClientId, Params). @@ -143,6 +145,7 @@ on_client_disconnected(#{clientid := ClientId, username := Username}, Reason, Co , clientid => ClientId , username => maybe(Username) , reason => stringfy(maybe(Reason)) + , connected_at => maps:get(connected_at, ConnInfo) , disconnected_at => maps:get(disconnected_at, ConnInfo, erlang:system_time(millisecond)) }, send_http_request(ClientId, Params). diff --git a/apps/emqx_web_hook/test/props/prop_webhook_hooks.erl b/apps/emqx_web_hook/test/props/prop_webhook_hooks.erl index 311585287..438d70d22 100644 --- a/apps/emqx_web_hook/test/props/prop_webhook_hooks.erl +++ b/apps/emqx_web_hook/test/props/prop_webhook_hooks.erl @@ -52,7 +52,8 @@ prop_client_connect() -> username => maybe(maps:get(username, ConnInfo)), ipaddress => peer2addr(maps:get(peername, ConnInfo)), keepalive => maps:get(keepalive, ConnInfo), - proto_ver => maps:get(proto_ver, ConnInfo) + proto_ver => maps:get(proto_ver, ConnInfo), + connected_at => maps:get(connected_at, ConnInfo) }), true end). @@ -71,6 +72,7 @@ prop_client_connack() -> ipaddress => peer2addr(maps:get(peername, ConnInfo)), keepalive => maps:get(keepalive, ConnInfo), proto_ver => maps:get(proto_ver, ConnInfo), + connected_at => maps:get(connected_at, ConnInfo), conn_ack => Rc }), true @@ -106,6 +108,7 @@ prop_client_disconnected() -> node => stringfy(node()), clientid => maps:get(clientid, ClientInfo), username => maybe(maps:get(username, ClientInfo)), + connected_at => maps:get(connected_at, ConnInfo), disconnected_at => maps:get(disconnected_at, ConnInfo), reason => stringfy(Reason) }), diff --git a/lib-ce/emqx_modules/src/emqx_mod_presence.erl b/lib-ce/emqx_modules/src/emqx_mod_presence.erl index 01a60218c..582a3280f 100644 --- a/lib-ce/emqx_modules/src/emqx_mod_presence.erl +++ b/lib-ce/emqx_modules/src/emqx_mod_presence.erl @@ -57,8 +57,7 @@ on_client_connected(ClientInfo = #{clientid := ClientId}, ConnInfo, Env) -> connack => 0, %% XXX: connack will be removed in 5.0 keepalive => maps:get(keepalive, ConnInfo, 0), clean_start => maps:get(clean_start, ConnInfo, true), - expiry_interval => maps:get(expiry_interval, ConnInfo, 0), - connected_at => maps:get(connected_at, ConnInfo) + expiry_interval => maps:get(expiry_interval, ConnInfo, 0) }, case emqx_json:safe_encode(NPresence) of {ok, Payload} -> @@ -95,7 +94,8 @@ common_infos( sockport := SockPort }, _ConnInfo = #{proto_name := ProtoName, - proto_ver := ProtoVer + proto_ver := ProtoVer, + connected_at := ConnectedAt }) -> #{clientid => ClientId, username => Username, @@ -103,6 +103,7 @@ common_infos( sockport => SockPort, proto_name => ProtoName, proto_ver => ProtoVer, + connected_at => ConnectedAt, ts => erlang:system_time(millisecond) }.