From 66f06c3ab7c82a4ab808652640ece7a532a623e8 Mon Sep 17 00:00:00 2001 From: firest Date: Tue, 16 Aug 2022 14:00:20 +0800 Subject: [PATCH 1/8] fix(dashboard): change `bootstrap_user` to `bootstrap_user_file` --- apps/emqx_dashboard/i18n/emqx_dashboard_i18n.conf | 2 +- apps/emqx_dashboard/src/emqx_dashboard_admin.erl | 9 +++++++-- apps/emqx_dashboard/src/emqx_dashboard_schema.erl | 3 ++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/apps/emqx_dashboard/i18n/emqx_dashboard_i18n.conf b/apps/emqx_dashboard/i18n/emqx_dashboard_i18n.conf index e404b54b4..0dbed7c47 100644 --- a/apps/emqx_dashboard/i18n/emqx_dashboard_i18n.conf +++ b/apps/emqx_dashboard/i18n/emqx_dashboard_i18n.conf @@ -197,7 +197,7 @@ its own from which a browser should permit loading resources.""" zh: "多语言支持" } } - bootstrap_user { + bootstrap_user_file { desc { en: "Initialize users file." zh: "初始化用户文件" diff --git a/apps/emqx_dashboard/src/emqx_dashboard_admin.erl b/apps/emqx_dashboard/src/emqx_dashboard_admin.erl index 7f5c31771..76bcf384e 100644 --- a/apps/emqx_dashboard/src/emqx_dashboard_admin.erl +++ b/apps/emqx_dashboard/src/emqx_dashboard_admin.erl @@ -87,7 +87,7 @@ add_default_user() -> -spec add_bootstrap_user() -> ok | {error, _}. add_bootstrap_user() -> - case emqx:get_config([dashboard, bootstrap_user], undefined) of + case emqx:get_config([dashboard, bootstrap_user_file], undefined) of undefined -> ok; File -> @@ -324,7 +324,12 @@ add_bootstrap_user(File) -> after file:close(Dev) end; - Error -> + {error, Reason} = Error -> + ?SLOG(error, #{ + msg => "failed to open the dashboard bootstrap users file", + file => File, + reason => Reason + }), Error end. diff --git a/apps/emqx_dashboard/src/emqx_dashboard_schema.erl b/apps/emqx_dashboard/src/emqx_dashboard_schema.erl index 4bb9fb6af..17c5a72f4 100644 --- a/apps/emqx_dashboard/src/emqx_dashboard_schema.erl +++ b/apps/emqx_dashboard/src/emqx_dashboard_schema.erl @@ -55,7 +55,8 @@ fields("dashboard") -> )}, {cors, fun cors/1}, {i18n_lang, fun i18n_lang/1}, - {bootstrap_user, ?HOCON(binary(), #{desc => ?DESC(bootstrap_user), required => false})} + {bootstrap_user_file, + ?HOCON(binary(), #{desc => ?DESC(bootstrap_user_file), required => false})} ]; fields("listeners") -> [ From 7ffdd95aa33d598a76f882c9b4e895379e39d17e Mon Sep 17 00:00:00 2001 From: JianBo He Date: Fri, 19 Aug 2022 11:10:05 +0800 Subject: [PATCH 2/8] chore: bind option support `:1883` style config see: https://github.com/emqx/emqx/pull/8571 --- apps/emqx/src/emqx_schema.erl | 4 ++++ .../src/emqx_mgmt_api_listeners.erl | 17 ++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/apps/emqx/src/emqx_schema.erl b/apps/emqx/src/emqx_schema.erl index ed9821eac..94ce36c9a 100644 --- a/apps/emqx/src/emqx_schema.erl +++ b/apps/emqx/src/emqx_schema.erl @@ -2162,8 +2162,12 @@ to_bar_separated_list(Str) -> %% - 127.0.0.1:1883 %% - ::1:1883 %% - [::1]:1883 +%% - :1883 +%% - :::1883 to_ip_port(Str) -> case split_ip_port(Str) of + {"", Port} -> + {ok, {{0, 0, 0, 0}, list_to_integer(Port)}}; {Ip, Port} -> PortVal = list_to_integer(Port), case inet:parse_address(Ip) of diff --git a/apps/emqx_management/src/emqx_mgmt_api_listeners.erl b/apps/emqx_management/src/emqx_mgmt_api_listeners.erl index 24fe710c7..31678e0f6 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_listeners.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_listeners.erl @@ -342,11 +342,18 @@ list_listeners(get, #{query_string := Query}) -> {200, listener_status_by_id(NodeL)}. crud_listeners_by_id(get, #{bindings := #{id := Id0}}) -> - Listeners = [ - Conf#{<<"id">> => Id, <<"type">> => Type} - || {Id, Type, Conf} <- emqx_listeners:list_raw(), - Id =:= Id0 - ], + Listeners = + [ + Conf#{ + <<"id">> => Id, + <<"type">> => Type, + <<"bind">> := iolist_to_binary( + emqx_listeners:format_bind(maps:get(<<"bind">>, Conf)) + ) + } + || {Id, Type, Conf} <- emqx_listeners:list_raw(), + Id =:= Id0 + ], case Listeners of [] -> {404, #{code => 'BAD_LISTENER_ID', message => ?LISTENER_NOT_FOUND}}; [L] -> {200, L} From f612908b176b9b192c09e9b4f5d586d60fef41e3 Mon Sep 17 00:00:00 2001 From: JianBo He Date: Fri, 19 Aug 2022 11:15:19 +0800 Subject: [PATCH 3/8] chore: update changes --- CHANGES-5.0.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES-5.0.md b/CHANGES-5.0.md index 734b88515..885e0a4c1 100644 --- a/CHANGES-5.0.md +++ b/CHANGES-5.0.md @@ -13,6 +13,7 @@ * Updated `/nodes` API node_status from `Running/Stopped` to `running/stopped`. [#8642](https://github.com/emqx/emqx/pull/8642) * Improve handling of placeholder interpolation errors [#8635](https://github.com/emqx/emqx/pull/8635) * Better logging on unknown object IDs. [#8670](https://github.com/emqx/emqx/pull/8670) +* The bind option support `:1883` style. [#8758](https://github.com/emqx/emqx/pull/8758) # 5.0.4 From d1c676a1c5a41278c685e3c713553f47d1379069 Mon Sep 17 00:00:00 2001 From: JianBo He Date: Fri, 19 Aug 2022 14:08:09 +0800 Subject: [PATCH 4/8] chore: bump vsn --- apps/emqx/include/emqx_release.hrl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/emqx/include/emqx_release.hrl b/apps/emqx/include/emqx_release.hrl index 3bf2aabb6..972111a44 100644 --- a/apps/emqx/include/emqx_release.hrl +++ b/apps/emqx/include/emqx_release.hrl @@ -32,7 +32,7 @@ %% `apps/emqx/src/bpapi/README.md' %% Community edition --define(EMQX_RELEASE_CE, "5.0.5-beta.1"). +-define(EMQX_RELEASE_CE, "5.0.5"). %% Enterprise edition -define(EMQX_RELEASE_EE, "5.0.0-alpha.1"). From 3874f14f8c00ba785121aea117a19f3a60ebb1e1 Mon Sep 17 00:00:00 2001 From: JianBo He Date: Fri, 19 Aug 2022 14:51:41 +0800 Subject: [PATCH 5/8] chore: rename bootstrap_user to bootstrap_users --- apps/emqx_dashboard/i18n/emqx_dashboard_i18n.conf | 2 +- apps/emqx_dashboard/src/emqx_dashboard_admin.erl | 12 ++++++------ apps/emqx_dashboard/src/emqx_dashboard_app.erl | 2 +- apps/emqx_dashboard/src/emqx_dashboard_schema.erl | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/emqx_dashboard/i18n/emqx_dashboard_i18n.conf b/apps/emqx_dashboard/i18n/emqx_dashboard_i18n.conf index 0dbed7c47..e6758d0de 100644 --- a/apps/emqx_dashboard/i18n/emqx_dashboard_i18n.conf +++ b/apps/emqx_dashboard/i18n/emqx_dashboard_i18n.conf @@ -197,7 +197,7 @@ its own from which a browser should permit loading resources.""" zh: "多语言支持" } } - bootstrap_user_file { + bootstrap_users_file { desc { en: "Initialize users file." zh: "初始化用户文件" diff --git a/apps/emqx_dashboard/src/emqx_dashboard_admin.erl b/apps/emqx_dashboard/src/emqx_dashboard_admin.erl index 76bcf384e..b3b9c1023 100644 --- a/apps/emqx_dashboard/src/emqx_dashboard_admin.erl +++ b/apps/emqx_dashboard/src/emqx_dashboard_admin.erl @@ -52,7 +52,7 @@ -export([ add_default_user/0, default_username/0, - add_bootstrap_user/0 + add_bootstrap_users/0 ]). -type emqx_admin() :: #?ADMIN{}. @@ -85,16 +85,16 @@ mnesia(boot) -> add_default_user() -> add_default_user(binenv(default_username), binenv(default_password)). --spec add_bootstrap_user() -> ok | {error, _}. -add_bootstrap_user() -> - case emqx:get_config([dashboard, bootstrap_user_file], undefined) of +-spec add_bootstrap_users() -> ok | {error, _}. +add_bootstrap_users() -> + case emqx:get_config([dashboard, bootstrap_users_file], undefined) of undefined -> ok; File -> case mnesia:table_info(?ADMIN, size) of 0 -> ?SLOG(debug, #{msg => "Add dashboard bootstrap users", file => File}), - add_bootstrap_user(File); + add_bootstrap_users(File); _ -> ok end @@ -312,7 +312,7 @@ add_default_user(Username, Password) -> _ -> {ok, default_user_exists} end. -add_bootstrap_user(File) -> +add_bootstrap_users(File) -> case file:open(File, [read]) of {ok, Dev} -> {ok, MP} = re:compile(<<"(\.+):(\.+$)">>, [ungreedy]), diff --git a/apps/emqx_dashboard/src/emqx_dashboard_app.erl b/apps/emqx_dashboard/src/emqx_dashboard_app.erl index 5084d76c4..b40f6f1f6 100644 --- a/apps/emqx_dashboard/src/emqx_dashboard_app.erl +++ b/apps/emqx_dashboard/src/emqx_dashboard_app.erl @@ -31,7 +31,7 @@ start(_StartType, _StartArgs) -> case emqx_dashboard:start_listeners() of ok -> emqx_dashboard_cli:load(), - case emqx_dashboard_admin:add_bootstrap_user() of + case emqx_dashboard_admin:add_bootstrap_users() of ok -> {ok, _} = emqx_dashboard_admin:add_default_user(), {ok, Sup}; diff --git a/apps/emqx_dashboard/src/emqx_dashboard_schema.erl b/apps/emqx_dashboard/src/emqx_dashboard_schema.erl index 17c5a72f4..306720e4d 100644 --- a/apps/emqx_dashboard/src/emqx_dashboard_schema.erl +++ b/apps/emqx_dashboard/src/emqx_dashboard_schema.erl @@ -55,8 +55,8 @@ fields("dashboard") -> )}, {cors, fun cors/1}, {i18n_lang, fun i18n_lang/1}, - {bootstrap_user_file, - ?HOCON(binary(), #{desc => ?DESC(bootstrap_user_file), required => false})} + {bootstrap_users_file, + ?HOCON(binary(), #{desc => ?DESC(bootstrap_users_file), required => false})} ]; fields("listeners") -> [ From 951aa4076fc75cc1da51b2ba6a4d8df384f7cc41 Mon Sep 17 00:00:00 2001 From: JianBo He Date: Mon, 22 Aug 2022 12:20:04 +0800 Subject: [PATCH 6/8] fix: upgrade dasbhaord vsn Due to we changed the `node_status` of `/nodes` API in #8642, however, we did not update the correct dashboard version in v5.0.5. So, we release v5.0.6 to fix this issue --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 49c2b1ed7..c43635c93 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ export EMQX_DEFAULT_BUILDER = ghcr.io/emqx/emqx-builder/5.0-17:1.13.4-24.2.1-1-d export EMQX_DEFAULT_RUNNER = debian:11-slim export OTP_VSN ?= $(shell $(CURDIR)/scripts/get-otp-vsn.sh) export ELIXIR_VSN ?= $(shell $(CURDIR)/scripts/get-elixir-vsn.sh) -export EMQX_DASHBOARD_VERSION ?= v1.0.6 +export EMQX_DASHBOARD_VERSION ?= v1.0.7 export EMQX_REL_FORM ?= tgz export QUICER_DOWNLOAD_FROM_RELEASE = 1 ifeq ($(OS),Windows_NT) From ad96bb551e0a8e2f221a0e35a6cc2316ec07226b Mon Sep 17 00:00:00 2001 From: JianBo He Date: Mon, 22 Aug 2022 12:27:30 +0800 Subject: [PATCH 7/8] chore: update changes and release vsn --- CHANGES-5.0.md | 6 ++++++ apps/emqx/include/emqx_release.hrl | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGES-5.0.md b/CHANGES-5.0.md index 885e0a4c1..f0a3d7c09 100644 --- a/CHANGES-5.0.md +++ b/CHANGES-5.0.md @@ -1,3 +1,9 @@ +# 5.0.6 + +## Bug fixes + +* Upgrade Dashboard version to fix an issue where the node status was not displayed correctly. [#8771](https://github.com/emqx/emqx/pull/8771) + # 5.0.5 ## Bug fixes diff --git a/apps/emqx/include/emqx_release.hrl b/apps/emqx/include/emqx_release.hrl index 972111a44..eb8b08c03 100644 --- a/apps/emqx/include/emqx_release.hrl +++ b/apps/emqx/include/emqx_release.hrl @@ -32,7 +32,7 @@ %% `apps/emqx/src/bpapi/README.md' %% Community edition --define(EMQX_RELEASE_CE, "5.0.5"). +-define(EMQX_RELEASE_CE, "5.0.6"). %% Enterprise edition -define(EMQX_RELEASE_EE, "5.0.0-alpha.1"). From 46f743d16bd8260d96f83c700463de7eafab3f7f Mon Sep 17 00:00:00 2001 From: JianBo He Date: Mon, 22 Aug 2022 14:37:16 +0800 Subject: [PATCH 8/8] chore: bump emqx vsn --- apps/emqx/src/emqx.app.src | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/emqx/src/emqx.app.src b/apps/emqx/src/emqx.app.src index b7e65a042..430e28efb 100644 --- a/apps/emqx/src/emqx.app.src +++ b/apps/emqx/src/emqx.app.src @@ -3,7 +3,7 @@ {id, "emqx"}, {description, "EMQX Core"}, % strict semver, bump manually! - {vsn, "5.0.5"}, + {vsn, "5.0.6"}, {modules, []}, {registered, []}, {applications, [