fix: delete ssl dirs on resource destory

This commit is contained in:
JimMoen 2023-02-28 17:38:35 +08:00
parent b0732cb0bb
commit 2d0d578b4f
No known key found for this signature in database
GPG Key ID: 87A520B4F76BA86D
3 changed files with 20 additions and 0 deletions

View File

@ -482,6 +482,7 @@ on_resource_destroy(ResId, #{<<"pool">> := PoolName}) ->
?LOG(info, "Destroying Resource ~p, ResId: ~p", [?RESOURCE_TYPE_MQTT, ResId]),
case ecpool:stop_sup_pool(PoolName) of
ok ->
emqx_plugin_libs_ssl:maybe_delete_dir("rules", ResId),
?LOG(info, "Destroyed Resource ~p Successfully, ResId: ~p", [?RESOURCE_TYPE_MQTT, ResId]);
{error, Reason} ->
?LOG(error, "Destroy Resource ~p failed, ResId: ~p, ~p", [?RESOURCE_TYPE_MQTT, ResId, Reason]),

View File

@ -21,6 +21,10 @@
save_file/2
]).
-export([maybe_delete_dir/1,
maybe_delete_dir/2
]).
-type file_input_key() :: binary(). %% <<"file">> | <<"filename">>
-type file_input() :: #{file_input_key() => binary()}.
@ -141,6 +145,20 @@ maybe_save_file(FileName, Content, Dir) ->
error({"failed_to_save_ssl_file", FullFilename, Reason})
end.
maybe_delete_dir(SubDir, ResId) ->
Dir = filename:join([emqx:get_env(data_dir), SubDir, ResId]),
maybe_delete_dir(Dir).
maybe_delete_dir(Dir) ->
case file:del_dir_r(Dir) of
ok ->
ok;
{error, enoent} ->
ok;
{error, Reason} ->
logger:error("Delete Resource dir ~p failed for reason: ~p", [Dir, Reason])
end.
ensure_str(L) when is_list(L) -> L;
ensure_str(B) when is_binary(B) -> unicode:characters_to_list(B, utf8).

View File

@ -238,6 +238,7 @@ on_resource_destroy(ResId, #{<<"pool">> := PoolName}) ->
?LOG(info, "Destroying Resource ~p, ResId: ~p", [?RESOURCE_TYPE_WEBHOOK, ResId]),
case ehttpc_pool:stop_pool(PoolName) of
ok ->
emqx_plugin_libs_ssl:maybe_delete_dir("rules", ResId),
?LOG(info, "Destroyed Resource ~p Successfully, ResId: ~p", [?RESOURCE_TYPE_WEBHOOK, ResId]);
{error, Reason} ->
?LOG(error, "Destroy Resource ~p failed, ResId: ~p, ~p", [?RESOURCE_TYPE_WEBHOOK, ResId, Reason]),