diff --git a/apps/emqx_authz/src/emqx_authz_api_sources.erl b/apps/emqx_authz/src/emqx_authz_api_sources.erl index 00d0a5b7a..209bbc01f 100644 --- a/apps/emqx_authz/src/emqx_authz_api_sources.erl +++ b/apps/emqx_authz/src/emqx_authz_api_sources.erl @@ -298,15 +298,15 @@ move_source_api() -> {"/authorization/sources/:type/move", Metadata, move_source}. sources(get, _) -> - Sources = lists:foldl(fun (#{enable := false} = Source, AccIn) -> - lists:append(AccIn, [Source#{annotations => #{status => unhealthy}}]); - (#{type := file, path := Path}, AccIn) -> + Sources = lists:foldl(fun (#{type := file, enable := Enable, path := Path}, AccIn) -> {ok, Rules} = file:consult(Path), lists:append(AccIn, [#{type => file, - enable => true, + enable => Enable, rules => [ iolist_to_binary(io_lib:format("~p.", [R])) || R <- Rules], annotations => #{status => healthy} }]); + (#{enable := false} = Source, AccIn) -> + lists:append(AccIn, [Source#{annotations => #{status => unhealthy}}]); (#{type := _Type, annotations := #{id := Id}} = Source, AccIn) -> NSource0 = case maps:get(server, Source, undefined) of undefined -> Source; @@ -367,15 +367,15 @@ sources(put, #{body := Body}) when is_list(Body) -> source(get, #{bindings := #{type := Type}}) -> case emqx_authz:lookup(Type) of {error, Reason} -> {404, #{messgae => atom_to_binary(Reason)}}; - #{enable := false} = Source -> {200, Source#{annotations => #{status => unhealthy}}}; - #{type := file, path := Path}-> + #{type := file, enable := Enable, path := Path}-> {ok, Rules} = file:consult(Path), {200, #{type => file, - enable => true, + enable => Enable, rules => [ iolist_to_binary(io_lib:format("~p.", [R])) || R <- Rules], annotations => #{status => healthy} } }; + #{enable := false} = Source -> {200, Source#{annotations => #{status => unhealthy}}}; #{annotations := #{id := Id}} = Source -> NSource0 = case maps:get(server, Source, undefined) of undefined -> Source; @@ -486,7 +486,7 @@ write_cert(Source) -> Source. write_file(Filename, Bytes) -> ok = filelib:ensure_dir(Filename), case file:write_file(Filename, Bytes) of - ok -> {ok, Filename}; + ok -> {ok, iolist_to_binary(Filename)}; {error, Reason} -> ?LOG(error, "Write File ~p Error: ~p", [Filename, Reason]), error(Reason)