fix: dashboard https's password can't update

This commit is contained in:
Zhongwen Deng 2022-04-27 23:17:02 +08:00
parent 5c08c4ff4e
commit 2eab3f1cdb
2 changed files with 58 additions and 35 deletions

View File

@ -63,22 +63,42 @@ remove_handler() ->
ok. ok.
pre_config_update(_Path, UpdateConf0, RawConf) -> pre_config_update(_Path, UpdateConf0, RawConf) ->
UpdateConf = UpdateConf = remove_sensitive_data(UpdateConf0),
case UpdateConf0 of
#{<<"default_password">> := <<"******">>} ->
maps:remove(<<"default_password">>, UpdateConf0);
_ ->
UpdateConf0
end,
NewConf = emqx_map_lib:deep_merge(RawConf, UpdateConf), NewConf = emqx_map_lib:deep_merge(RawConf, UpdateConf),
{ok, NewConf}. {ok, NewConf}.
-define(SENSITIVE_PASSWORD, <<"******">>).
remove_sensitive_data(Conf0) ->
Conf1 =
case Conf0 of
#{<<"default_password">> := ?SENSITIVE_PASSWORD} ->
maps:remove(<<"default_password">>, Conf0);
_ ->
Conf0
end,
case Conf1 of
#{<<"listeners">> := #{<<"https">> := #{<<"password">> := ?SENSITIVE_PASSWORD}}} ->
emqx_map_lib:deep_remove([<<"listeners">>, <<"https">>, <<"password">>], Conf1);
_ ->
Conf1
end.
post_config_update(_, _Req, NewConf, OldConf, _AppEnvs) -> post_config_update(_, _Req, NewConf, OldConf, _AppEnvs) ->
#{listeners := NewListeners} = NewConf, #{listeners := #{http := NewHttp, https := NewHttps}} = NewConf,
#{listeners := OldListeners} = OldConf, #{listeners := #{http := OldHttp, https := OldHttps}} = OldConf,
_ = _ =
case NewListeners =:= OldListeners of case diff_listeners(OldHttp, NewHttp, OldHttps, NewHttps) of
true -> ok; identical -> ok;
false -> erlang:send_after(500, ?MODULE, {update_listeners, OldListeners, NewListeners}) {Stop, Start} -> erlang:send_after(500, ?MODULE, {update_listeners, Stop, Start})
end, end,
ok. ok.
diff_listeners(Http, Http, Https, Https) ->
identical;
diff_listeners(OldHttp, NewHttp, Https, Https) ->
{#{http => OldHttp}, #{http => NewHttp}};
diff_listeners(Http, Http, OldHttps, NewHttps) ->
{#{https => OldHttps}, #{https => NewHttps}};
diff_listeners(OldHttp, NewHttp, OldHttps, NewHttps) ->
{#{http => OldHttp, https => OldHttps}, #{http => NewHttp, https => NewHttps}}.

View File

@ -77,26 +77,14 @@ fields("listeners") ->
]; ];
fields("http") -> fields("http") ->
[ [
{"enable", enable(true),
sc( bind(18803)
boolean(),
#{
default => true,
desc => ?DESC(listener_enable)
}
)}
| common_listener_fields() | common_listener_fields()
]; ];
fields("https") -> fields("https") ->
[ [
{"enable", enable(false),
sc( bind(18804)
boolean(),
#{
default => false,
desc => ?DESC(listener_enable)
}
)}
| common_listener_fields() ++ | common_listener_fields() ++
exclude_fields( exclude_fields(
["enable", "fail_if_no_peer_cert"], ["enable", "fail_if_no_peer_cert"],
@ -115,7 +103,6 @@ exclude_fields([FieldName | Rest], Fields) ->
common_listener_fields() -> common_listener_fields() ->
[ [
{"bind", fun bind/1},
{"num_acceptors", {"num_acceptors",
sc( sc(
integer(), integer(),
@ -166,6 +153,28 @@ common_listener_fields() ->
)} )}
]. ].
enable(Bool) ->
{"enable",
sc(
boolean(),
#{
default => Bool,
required => true,
desc => ?DESC(listener_enable)
}
)}.
bind(Port) ->
{"bind",
sc(
hoconsc:union([non_neg_integer(), emqx_schema:ip_port()]),
#{
default => Port,
required => true,
desc => ?DESC(bind)
}
)}.
desc("dashboard") -> desc("dashboard") ->
?DESC(desc_dashboard); ?DESC(desc_dashboard);
desc("listeners") -> desc("listeners") ->
@ -177,12 +186,6 @@ desc("https") ->
desc(_) -> desc(_) ->
undefined. undefined.
bind(type) -> hoconsc:union([non_neg_integer(), emqx_schema:ip_port()]);
bind(default) -> 18083;
bind(required) -> true;
bind(desc) -> ?DESC(bind);
bind(_) -> undefined.
default_username(type) -> binary(); default_username(type) -> binary();
default_username(default) -> "admin"; default_username(default) -> "admin";
default_username(required) -> true; default_username(required) -> true;