diff --git a/apps/emqx_bridge/src/emqx_bridge_api.erl b/apps/emqx_bridge/src/emqx_bridge_api.erl index 293692ccd..3c7c30660 100644 --- a/apps/emqx_bridge/src/emqx_bridge_api.erl +++ b/apps/emqx_bridge/src/emqx_bridge_api.erl @@ -546,7 +546,8 @@ schema("/bridges_probe") -> RequestMeta = #{module => ?MODULE, method => post, path => "/bridges_probe"}, case emqx_dashboard_swagger:filter_check_request_and_translate_body(Request, RequestMeta) of {ok, #{body := #{<<"type">> := ConnType} = Params}} -> - case emqx_bridge_resource:create_dry_run(ConnType, maps:remove(<<"type">>, Params)) of + Params1 = maybe_deobfuscate_bridge_probe(Params), + case emqx_bridge_resource:create_dry_run(ConnType, maps:remove(<<"type">>, Params1)) of ok -> {204}; {error, Error} -> @@ -556,6 +557,18 @@ schema("/bridges_probe") -> BadRequest end. +maybe_deobfuscate_bridge_probe(#{<<"type">> := BridgeType, <<"name">> := BridgeName} = Params) -> + case emqx_bridge:lookup(BridgeType, BridgeName) of + {ok, _} -> + RawConf = emqx:get_raw_config([bridges, BridgeType, BridgeName], #{}), + deobfuscate(Params, RawConf); + _ -> + %% A bridge may be probed before it's created, so not finding it here is fine + Params + end; +maybe_deobfuscate_bridge_probe(Params) -> + Params. + lookup_from_all_nodes(BridgeType, BridgeName, SuccCode) -> FormatFun = fun format_bridge_info_without_metrics/1, do_lookup_from_all_nodes(BridgeType, BridgeName, SuccCode, FormatFun).