fix: convert ssl certfiles for dry-run creating bridges

This commit is contained in:
Shawn 2022-04-28 16:00:07 +08:00
parent c4787900cf
commit e18c2a6de2
2 changed files with 28 additions and 14 deletions

View File

@ -343,20 +343,18 @@ recreate(Type, Name, Conf) ->
). ).
create_dry_run(Type, Conf) -> create_dry_run(Type, Conf) ->
Conf0 = Conf#{ Conf0 = fill_dry_run_conf(Conf),
<<"egress">> =>
#{
<<"remote_topic">> => <<"t">>,
<<"remote_qos">> => 0,
<<"retain">> => true,
<<"payload">> => <<"val">>
},
<<"ingress">> =>
#{<<"remote_topic">> => <<"t">>}
},
case emqx_resource:check_config(emqx_bridge:resource_type(Type), Conf0) of case emqx_resource:check_config(emqx_bridge:resource_type(Type), Conf0) of
{ok, Conf1} -> {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, _} = Error ->
Error Error
end. end.
@ -557,6 +555,19 @@ get_basic_usage_info() ->
InitialAcc InitialAcc
end. 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(Bin) when is_binary(Bin) -> Bin;
bin(Str) when is_list(Str) -> list_to_binary(Str); bin(Str) when is_list(Str) -> list_to_binary(Str);
bin(Atom) when is_atom(Atom) -> atom_to_binary(Atom, utf8). bin(Atom) when is_atom(Atom) -> atom_to_binary(Atom, utf8).

View File

@ -22,7 +22,7 @@
]). ]).
convert_certs(RltvDir, NewConfig) -> 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 case emqx_tls_lib:ensure_ssl_files(RltvDir, NewSSL) of
{ok, NewSSL1} -> {ok, NewSSL1} ->
{ok, new_ssl_config(NewConfig, 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). ok = emqx_tls_lib:delete_ssl_files(RltvDir, undefined, OldSSL).
new_ssl_config(Config, undefined) -> Config; 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(undefined) -> undefined;
drop_invalid_certs(SSL) -> emqx_tls_lib:drop_invalid_certs(SSL). drop_invalid_certs(SSL) -> emqx_tls_lib:drop_invalid_certs(SSL).