fix: only fill cerf_file default in server side

This commit is contained in:
Zhongwen Deng 2023-05-11 17:33:18 +08:00
parent d9f9e951ec
commit 3d41449fde
1 changed files with 12 additions and 12 deletions

View File

@ -2189,8 +2189,8 @@ filter(Opts) ->
%% @private This function defines the SSL opts which are commonly used by %% @private This function defines the SSL opts which are commonly used by
%% SSL listener and client. %% SSL listener and client.
-spec common_ssl_opts_schema(map()) -> hocon_schema:field_schema(). -spec common_ssl_opts_schema(map(), server | client) -> hocon_schema:field_schema().
common_ssl_opts_schema(Defaults) -> common_ssl_opts_schema(Defaults, Type) ->
D = fun(Field) -> maps:get(to_atom(Field), Defaults, undefined) end, D = fun(Field) -> maps:get(to_atom(Field), Defaults, undefined) end,
Df = fun(Field, Default) -> maps:get(to_atom(Field), Defaults, Default) end, Df = fun(Field, Default) -> maps:get(to_atom(Field), Defaults, Default) end,
Collection = maps:get(versions, Defaults, tls_all_available), Collection = maps:get(versions, Defaults, tls_all_available),
@ -2200,7 +2200,7 @@ common_ssl_opts_schema(Defaults) ->
sc( sc(
binary(), binary(),
#{ #{
default => cert_file("cacert.pem"), default => cert_file("cacert.pem", Type),
required => false, required => false,
desc => ?DESC(common_ssl_opts_schema_cacertfile) desc => ?DESC(common_ssl_opts_schema_cacertfile)
} }
@ -2209,7 +2209,7 @@ common_ssl_opts_schema(Defaults) ->
sc( sc(
binary(), binary(),
#{ #{
default => cert_file("cert.pem"), default => cert_file("cert.pem", Type),
required => false, required => false,
desc => ?DESC(common_ssl_opts_schema_certfile) desc => ?DESC(common_ssl_opts_schema_certfile)
} }
@ -2218,7 +2218,7 @@ common_ssl_opts_schema(Defaults) ->
sc( sc(
binary(), binary(),
#{ #{
default => cert_file("key.pem"), default => cert_file("key.pem", Type),
required => false, required => false,
desc => ?DESC(common_ssl_opts_schema_keyfile) desc => ?DESC(common_ssl_opts_schema_keyfile)
} }
@ -2305,7 +2305,7 @@ common_ssl_opts_schema(Defaults) ->
server_ssl_opts_schema(Defaults, IsRanchListener) -> server_ssl_opts_schema(Defaults, IsRanchListener) ->
D = fun(Field) -> maps:get(to_atom(Field), Defaults, undefined) end, D = fun(Field) -> maps:get(to_atom(Field), Defaults, undefined) end,
Df = fun(Field, Default) -> maps:get(to_atom(Field), Defaults, Default) end, Df = fun(Field, Default) -> maps:get(to_atom(Field), Defaults, Default) end,
common_ssl_opts_schema(Defaults) ++ common_ssl_opts_schema(Defaults, server) ++
[ [
{"dhfile", {"dhfile",
sc( sc(
@ -2431,7 +2431,7 @@ crl_outer_validator(_SSLOpts) ->
%% @doc Make schema for SSL client. %% @doc Make schema for SSL client.
-spec client_ssl_opts_schema(map()) -> hocon_schema:field_schema(). -spec client_ssl_opts_schema(map()) -> hocon_schema:field_schema().
client_ssl_opts_schema(Defaults) -> client_ssl_opts_schema(Defaults) ->
common_ssl_opts_schema(Defaults) ++ common_ssl_opts_schema(Defaults, client) ++
[ [
{"enable", {"enable",
sc( sc(
@ -3252,9 +3252,9 @@ default_listener(ws) ->
default_listener(SSLListener) -> default_listener(SSLListener) ->
%% The env variable is resolved in emqx_tls_lib by calling naive_env_interpolate %% The env variable is resolved in emqx_tls_lib by calling naive_env_interpolate
SslOptions = #{ SslOptions = #{
<<"cacertfile">> => cert_file(<<"cacert.pem">>), <<"cacertfile">> => cert_file(<<"cacert.pem">>, server),
<<"certfile">> => cert_file(<<"cert.pem">>), <<"certfile">> => cert_file(<<"cert.pem">>, server),
<<"keyfile">> => cert_file(<<"key.pem">>) <<"keyfile">> => cert_file(<<"key.pem">>, server)
}, },
case SSLListener of case SSLListener of
ssl -> ssl ->
@ -3372,5 +3372,5 @@ ensure_default_listener(Map, ListenerType) ->
NewMap = Map#{<<"default">> => default_listener(ListenerType)}, NewMap = Map#{<<"default">> => default_listener(ListenerType)},
keep_default_tombstone(NewMap, #{}). keep_default_tombstone(NewMap, #{}).
cert_file(File) -> cert_file(_File, client) -> undefined;
iolist_to_binary(filename:join(["${EMQX_ETC_DIR}", "certs", File])). cert_file(File, server) -> iolist_to_binary(filename:join(["${EMQX_ETC_DIR}", "certs", File])).