From e18c2a6de2592e6ff7072d962492040ffcb185b0 Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Thu, 28 Apr 2022 16:00:07 +0800 Subject: [PATCH] fix: convert ssl certfiles for dry-run creating bridges --- apps/emqx_bridge/src/emqx_bridge.erl | 35 ++++++++++++------- .../emqx_connector/src/emqx_connector_ssl.erl | 7 ++-- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/apps/emqx_bridge/src/emqx_bridge.erl b/apps/emqx_bridge/src/emqx_bridge.erl index 88f12c1f5..a4c52e85d 100644 --- a/apps/emqx_bridge/src/emqx_bridge.erl +++ b/apps/emqx_bridge/src/emqx_bridge.erl @@ -343,20 +343,18 @@ recreate(Type, Name, Conf) -> ). create_dry_run(Type, Conf) -> - Conf0 = Conf#{ - <<"egress">> => - #{ - <<"remote_topic">> => <<"t">>, - <<"remote_qos">> => 0, - <<"retain">> => true, - <<"payload">> => <<"val">> - }, - <<"ingress">> => - #{<<"remote_topic">> => <<"t">>} - }, + Conf0 = fill_dry_run_conf(Conf), case emqx_resource:check_config(emqx_bridge:resource_type(Type), Conf0) of {ok, Conf1} -> - emqx_resource:create_dry_run_local(emqx_bridge:resource_type(Type), Conf1); + TmpPath = iolist_to_binary(["bridges-create-dry-run:", emqx_misc:gen_id(8)]), + try emqx_connector_ssl:convert_certs(TmpPath, Conf1) of + {error, Reason} -> + {error, Reason}; + {ok, ConfNew} -> + emqx_resource:create_dry_run_local(emqx_bridge:resource_type(Type), ConfNew) + after + emqx_connector_ssl:clear_certs(TmpPath, Conf1) + end; {error, _} = Error -> Error end. @@ -557,6 +555,19 @@ get_basic_usage_info() -> InitialAcc end. +fill_dry_run_conf(Conf) -> + Conf#{ + <<"egress">> => + #{ + <<"remote_topic">> => <<"t">>, + <<"remote_qos">> => 0, + <<"retain">> => true, + <<"payload">> => <<"val">> + }, + <<"ingress">> => + #{<<"remote_topic">> => <<"t">>} + }. + bin(Bin) when is_binary(Bin) -> Bin; bin(Str) when is_list(Str) -> list_to_binary(Str); bin(Atom) when is_atom(Atom) -> atom_to_binary(Atom, utf8). diff --git a/apps/emqx_connector/src/emqx_connector_ssl.erl b/apps/emqx_connector/src/emqx_connector_ssl.erl index 131b6cbd8..b9d382328 100644 --- a/apps/emqx_connector/src/emqx_connector_ssl.erl +++ b/apps/emqx_connector/src/emqx_connector_ssl.erl @@ -22,7 +22,7 @@ ]). convert_certs(RltvDir, NewConfig) -> - NewSSL = drop_invalid_certs(maps:get(<<"ssl">>, NewConfig, undefined)), + NewSSL = drop_invalid_certs(map_get_oneof([<<"ssl">>, ssl], NewConfig, undefined)), case emqx_tls_lib:ensure_ssl_files(RltvDir, NewSSL) of {ok, NewSSL1} -> {ok, new_ssl_config(NewConfig, NewSSL1)}; @@ -35,7 +35,10 @@ clear_certs(RltvDir, Config) -> ok = emqx_tls_lib:delete_ssl_files(RltvDir, undefined, OldSSL). new_ssl_config(Config, undefined) -> Config; -new_ssl_config(Config, SSL) -> Config#{<<"ssl">> => SSL}. +new_ssl_config(Config, #{<<"enable">> := _} = SSL) -> + Config#{<<"ssl">> => SSL}; +new_ssl_config(Config, #{enable := _} = SSL) -> + Config#{ssl => SSL}. drop_invalid_certs(undefined) -> undefined; drop_invalid_certs(SSL) -> emqx_tls_lib:drop_invalid_certs(SSL).