From 07d5c0f9dfc8c54219a6dcb57effd9cd56e486c6 Mon Sep 17 00:00:00 2001 From: Ertan Deniz Date: Mon, 26 Apr 2021 14:03:28 +0200 Subject: [PATCH] feat(exhook): add ssl cert info to ClientInfo --- apps/emqx_exhook/priv/protos/exhook.proto | 6 ++++++ apps/emqx_exhook/src/emqx_exhook_handler.erl | 4 +++- apps/emqx_exhook/test/props/prop_exhook_hooks.erl | 4 +++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/apps/emqx_exhook/priv/protos/exhook.proto b/apps/emqx_exhook/priv/protos/exhook.proto index 2dd70c52f..612b5151f 100644 --- a/apps/emqx_exhook/priv/protos/exhook.proto +++ b/apps/emqx_exhook/priv/protos/exhook.proto @@ -335,6 +335,12 @@ message ClientInfo { bool is_superuser = 9; bool anonymous = 10; + + // common name of client TLS cert + string cn = 11; + + // subject of client TLS cert + string dn = 12; } message Message { diff --git a/apps/emqx_exhook/src/emqx_exhook_handler.erl b/apps/emqx_exhook/src/emqx_exhook_handler.erl index f9112ce0f..f3964dc42 100644 --- a/apps/emqx_exhook/src/emqx_exhook_handler.erl +++ b/apps/emqx_exhook/src/emqx_exhook_handler.erl @@ -254,7 +254,9 @@ clientinfo(ClientInfo = protocol => stringfy(Protocol), mountpoint => maybe(Mountpoiont), is_superuser => maps:get(is_superuser, ClientInfo, false), - anonymous => maps:get(anonymous, ClientInfo, true)}. + anonymous => maps:get(anonymous, ClientInfo, true), + cn => maybe(maps:get(cn, ClientInfo, undefined)), + dn => maybe(maps:get(dn, ClientInfo, undefined))}. message(#message{id = Id, qos = Qos, from = From, topic = Topic, payload = Payload, timestamp = Ts}) -> #{node => stringfy(node()), diff --git a/apps/emqx_exhook/test/props/prop_exhook_hooks.erl b/apps/emqx_exhook/test/props/prop_exhook_hooks.erl index 757d732e9..24f45c8b0 100644 --- a/apps/emqx_exhook/test/props/prop_exhook_hooks.erl +++ b/apps/emqx_exhook/test/props/prop_exhook_hooks.erl @@ -452,7 +452,9 @@ from_clientinfo(ClientInfo) -> protocol => stringfy(maps:get(protocol, ClientInfo)), mountpoint => maybe(maps:get(mountpoint, ClientInfo, <<>>)), is_superuser => maps:get(is_superuser, ClientInfo, false), - anonymous => maps:get(anonymous, ClientInfo, true) + anonymous => maps:get(anonymous, ClientInfo, true), + cn => maybe(maps:get(cn, ClientInfo, <<>>)), + dn => maybe(maps:get(dn, ClientInfo, <<>>)) }. from_message(Msg) ->