Merge pull request #7937 from JimMoen/fix-exhook-ssl-key-path
This commit is contained in:
commit
93a65da6bc
|
@ -471,11 +471,16 @@ call_cluster(Fun) ->
|
||||||
get_raw_config() ->
|
get_raw_config() ->
|
||||||
RawConfig = emqx:get_raw_config([exhook, servers], []),
|
RawConfig = emqx:get_raw_config([exhook, servers], []),
|
||||||
Schema = #{roots => emqx_exhook_schema:fields(exhook), fields => #{}},
|
Schema = #{roots => emqx_exhook_schema:fields(exhook), fields => #{}},
|
||||||
Conf = #{<<"servers">> => RawConfig},
|
Conf = #{<<"servers">> => lists:map(fun drop_invalid_certs/1, RawConfig)},
|
||||||
Options = #{only_fill_defaults => true},
|
Options = #{only_fill_defaults => true},
|
||||||
#{<<"servers">> := Servers} = hocon_tconf:check_plain(Schema, Conf, Options),
|
#{<<"servers">> := Servers} = hocon_tconf:check_plain(Schema, Conf, Options),
|
||||||
Servers.
|
Servers.
|
||||||
|
|
||||||
|
drop_invalid_certs(#{<<"ssl">> := SSL} = Conf) when SSL =/= undefined ->
|
||||||
|
Conf#{<<"ssl">> => emqx_tls_lib:drop_invalid_certs(SSL)};
|
||||||
|
drop_invalid_certs(Conf) ->
|
||||||
|
Conf.
|
||||||
|
|
||||||
position_example() ->
|
position_example() ->
|
||||||
#{
|
#{
|
||||||
front =>
|
front =>
|
||||||
|
|
|
@ -149,13 +149,16 @@ update_config(KeyPath, UpdateReq) ->
|
||||||
|
|
||||||
pre_config_update(_, {add, #{<<"name">> := Name} = Conf}, OldConf) ->
|
pre_config_update(_, {add, #{<<"name">> := Name} = Conf}, OldConf) ->
|
||||||
case lists:any(fun(#{<<"name">> := ExistedName}) -> ExistedName =:= Name end, OldConf) of
|
case lists:any(fun(#{<<"name">> := ExistedName}) -> ExistedName =:= Name end, OldConf) of
|
||||||
true -> throw(already_exists);
|
true ->
|
||||||
false -> {ok, OldConf ++ [Conf]}
|
throw(already_exists);
|
||||||
|
false ->
|
||||||
|
NConf = maybe_write_certs(Conf),
|
||||||
|
{ok, OldConf ++ [NConf]}
|
||||||
end;
|
end;
|
||||||
pre_config_update(_, {update, Name, Conf}, OldConf) ->
|
pre_config_update(_, {update, Name, Conf}, OldConf) ->
|
||||||
case replace_conf(Name, fun(_) -> Conf end, OldConf) of
|
case replace_conf(Name, fun(_) -> Conf end, OldConf) of
|
||||||
not_found -> throw(not_found);
|
not_found -> throw(not_found);
|
||||||
NewConf -> {ok, NewConf}
|
NewConf -> {ok, lists:map(fun maybe_write_certs/1, NewConf)}
|
||||||
end;
|
end;
|
||||||
pre_config_update(_, {delete, ToDelete}, OldConf) ->
|
pre_config_update(_, {delete, ToDelete}, OldConf) ->
|
||||||
case do_delete(ToDelete, OldConf) of
|
case do_delete(ToDelete, OldConf) of
|
||||||
|
@ -176,7 +179,7 @@ pre_config_update(_, {enable, Name, Enable}, OldConf) ->
|
||||||
)
|
)
|
||||||
of
|
of
|
||||||
not_found -> throw(not_found);
|
not_found -> throw(not_found);
|
||||||
NewConf -> {ok, NewConf}
|
NewConf -> {ok, lists:map(fun maybe_write_certs/1, NewConf)}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
post_config_update(_KeyPath, UpdateReq, NewConf, _OldConf, _AppEnvs) ->
|
post_config_update(_KeyPath, UpdateReq, NewConf, _OldConf, _AppEnvs) ->
|
||||||
|
@ -427,8 +430,8 @@ move_to([], _Position, _Server, _HeadL) ->
|
||||||
do_delete(ToDelete, OldConf) ->
|
do_delete(ToDelete, OldConf) ->
|
||||||
case lists:any(fun(#{<<"name">> := ExistedName}) -> ExistedName =:= ToDelete end, OldConf) of
|
case lists:any(fun(#{<<"name">> := ExistedName}) -> ExistedName =:= ToDelete end, OldConf) of
|
||||||
true ->
|
true ->
|
||||||
lists:dropwhile(
|
lists:filter(
|
||||||
fun(#{<<"name">> := Name}) -> Name =:= ToDelete end,
|
fun(#{<<"name">> := Name}) -> Name =/= ToDelete end,
|
||||||
OldConf
|
OldConf
|
||||||
);
|
);
|
||||||
false ->
|
false ->
|
||||||
|
@ -574,3 +577,24 @@ hooks(Name) ->
|
||||||
Service ->
|
Service ->
|
||||||
emqx_exhook_server:hooks(Service)
|
emqx_exhook_server:hooks(Service)
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
maybe_write_certs(#{<<"name">> := Name} = Conf) ->
|
||||||
|
case
|
||||||
|
emqx_tls_lib:ensure_ssl_files(
|
||||||
|
ssl_file_path(Name), maps:get(<<"ssl">>, Conf, undefined)
|
||||||
|
)
|
||||||
|
of
|
||||||
|
{ok, SSL} ->
|
||||||
|
new_ssl_source(Conf, SSL);
|
||||||
|
{error, Reason} ->
|
||||||
|
?SLOG(error, Reason#{msg => "bad_ssl_config"}),
|
||||||
|
throw({bad_ssl_config, Reason})
|
||||||
|
end.
|
||||||
|
|
||||||
|
ssl_file_path(Name) ->
|
||||||
|
filename:join(["exhook", Name]).
|
||||||
|
|
||||||
|
new_ssl_source(Source, undefined) ->
|
||||||
|
Source;
|
||||||
|
new_ssl_source(Source, SSL) ->
|
||||||
|
Source#{<<"ssl">> => SSL}.
|
||||||
|
|
Loading…
Reference in New Issue