From 7451351c42111ec2f9e6bb6032553b58726d2b29 Mon Sep 17 00:00:00 2001 From: William Yang Date: Mon, 29 Aug 2022 14:46:47 +0200 Subject: [PATCH 1/9] fix: quic listener idle_timeout type err --- CHANGES-5.0.md | 1 + apps/emqx/src/emqx_schema.erl | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES-5.0.md b/CHANGES-5.0.md index 66529953a..210a5c5ad 100644 --- a/CHANGES-5.0.md +++ b/CHANGES-5.0.md @@ -5,6 +5,7 @@ * Remove the needless `will_msg` field from the client API. [#8721](https://github.com/emqx/emqx/pull/8721) * Fix `$queue` topic name error in management API return. [#8728](https://github.com/emqx/emqx/pull/8728) * Fix sometimes `client.connected` and `client.disconnected` could be in wrong order. [#8625](https://github.com/emqx/emqx/pull/8625) +* Fix quic listener default idle timeout's type. [#8826](https://github.com/emqx/emqx/pull/8826) ## Enhancements diff --git a/apps/emqx/src/emqx_schema.erl b/apps/emqx/src/emqx_schema.erl index 75818ab2b..b2c7723d0 100644 --- a/apps/emqx/src/emqx_schema.erl +++ b/apps/emqx/src/emqx_schema.erl @@ -869,7 +869,7 @@ fields("mqtt_quic_listener") -> sc( duration_ms(), #{ - default => "0", + default => 0, desc => ?DESC(fields_mqtt_quic_listener_idle_timeout) } )}, From dceb93dc2ae850c4c52d3e85419054cf16b8255c Mon Sep 17 00:00:00 2001 From: zhouzb Date: Tue, 30 Aug 2022 09:33:52 +0800 Subject: [PATCH 2/9] chore: bump helm chart version to 5.0.7 --- deploy/charts/emqx/Chart.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/charts/emqx/Chart.yaml b/deploy/charts/emqx/Chart.yaml index e18bac2b8..544d848fd 100644 --- a/deploy/charts/emqx/Chart.yaml +++ b/deploy/charts/emqx/Chart.yaml @@ -14,8 +14,8 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. -version: 5 +version: 5.0.7 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. -appVersion: latest +appVersion: 5.0.7 From 80bdc2b8e8b4cd37453747ac294381e23edc8fb4 Mon Sep 17 00:00:00 2001 From: zhouzb Date: Tue, 30 Aug 2022 15:42:08 +0800 Subject: [PATCH 3/9] docs(changes): add changes for bootstrap users --- CHANGES-5.0.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES-5.0.md b/CHANGES-5.0.md index 3bd74e00b..5eca6a9a3 100644 --- a/CHANGES-5.0.md +++ b/CHANGES-5.0.md @@ -27,6 +27,7 @@ ## Enhancements +* Add `bootstrap_users_file` configuration to add default Dashboard username list, which is only added when EMQX is first started. * The license is now copied to all nodes in the cluster when it's reloaded. [#8598](https://github.com/emqx/emqx/pull/8598) * Added a HTTP API to manage licenses. [#8610](https://github.com/emqx/emqx/pull/8610) * Updated `/nodes` API node_status from `Running/Stopped` to `running/stopped`. [#8642](https://github.com/emqx/emqx/pull/8642) From ee91128cef5c9f7f258d2c061df8fb334ae8548d Mon Sep 17 00:00:00 2001 From: zhouzb Date: Thu, 1 Sep 2022 15:05:18 +0800 Subject: [PATCH 4/9] 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 eb8b08c03..bc14ef209 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.6"). +-define(EMQX_RELEASE_CE, "5.0.7"). %% Enterprise edition -define(EMQX_RELEASE_EE, "5.0.0-alpha.1"). From 512e1571adee523f82e53e1ac2abb886de86b4b8 Mon Sep 17 00:00:00 2001 From: JimMoen Date: Fri, 26 Aug 2022 15:04:23 +0800 Subject: [PATCH 5/9] chore: update dashboard vsn --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 89f91ee4a..be56da973 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,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.7 +export EMQX_DASHBOARD_VERSION ?= v1.0.8 export EMQX_EE_DASHBOARD_VERSION ?= e1.0.0 export EMQX_REL_FORM ?= tgz export QUICER_DOWNLOAD_FROM_RELEASE = 1 From 74659bb86486aad2b3838a0c8b9d6a6ee09e5a3a Mon Sep 17 00:00:00 2001 From: JimMoen Date: Thu, 1 Sep 2022 18:18:26 +0800 Subject: [PATCH 6/9] fix(bridge): rm mqtt bridge default `username` and `password` --- apps/emqx_connector/src/mqtt/emqx_connector_mqtt_schema.erl | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_schema.erl b/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_schema.erl index 8b6994dd4..b06d00884 100644 --- a/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_schema.erl +++ b/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_schema.erl @@ -87,7 +87,6 @@ fields("connector") -> sc( binary(), #{ - default => "emqx", desc => ?DESC("username") } )}, @@ -95,7 +94,6 @@ fields("connector") -> sc( binary(), #{ - default => "emqx", desc => ?DESC("password") } )}, From 2693fc263d06ac0111e2d59ea02953eb595788f9 Mon Sep 17 00:00:00 2001 From: JimMoen Date: Thu, 1 Sep 2022 18:20:30 +0800 Subject: [PATCH 7/9] fix(bridge): show file paths for SSL certs in dashboard for bridge --- apps/emqx_bridge/src/emqx_bridge_api.erl | 3 +- .../emqx_connector/src/emqx_connector_ssl.erl | 90 ++++++++++++++++--- 2 files changed, 78 insertions(+), 15 deletions(-) diff --git a/apps/emqx_bridge/src/emqx_bridge_api.erl b/apps/emqx_bridge/src/emqx_bridge_api.erl index 37a42ab3d..e28df9176 100644 --- a/apps/emqx_bridge/src/emqx_bridge_api.erl +++ b/apps/emqx_bridge/src/emqx_bridge_api.erl @@ -584,9 +584,10 @@ pick_bridges_by_id(Type, Name, BridgesAllNodes) -> format_bridge_info([FirstBridge | _] = Bridges) -> Res = maps:remove(node, FirstBridge), + NRes = emqx_connector_ssl:drop_invalid_certs(Res), NodeStatus = collect_status(Bridges), NodeMetrics = collect_metrics(Bridges), - Res#{ + NRes#{ status => aggregate_status(NodeStatus), node_status => NodeStatus, metrics => aggregate_metrics(NodeMetrics), diff --git a/apps/emqx_connector/src/emqx_connector_ssl.erl b/apps/emqx_connector/src/emqx_connector_ssl.erl index c08defc29..929ffe82e 100644 --- a/apps/emqx_connector/src/emqx_connector_ssl.erl +++ b/apps/emqx_connector/src/emqx_connector_ssl.erl @@ -18,27 +18,89 @@ -export([ convert_certs/2, + drop_invalid_certs/1, clear_certs/2 ]). -convert_certs(RltvDir, NewConfig) -> - NewSSL = map_get_oneof([<<"ssl">>, ssl], NewConfig, undefined), - case emqx_tls_lib:ensure_ssl_files(RltvDir, NewSSL) of - {ok, NewSSL1} -> - {ok, new_ssl_config(NewConfig, NewSSL1)}; +%% TODO: rm `connector` case after `dev/ee5.0` merged into `master`. +%% The `connector` config layer will be removed. +%% for bridges with `connector` field. i.e. `mqtt_source` and `mqtt_sink` +convert_certs(RltvDir, #{<<"connector">> := Connector} = Config) when + is_map(Connector) +-> + SSL = map_get_oneof([<<"ssl">>, ssl], Connector, undefined), + new_ssl_config(RltvDir, Config, SSL); +convert_certs(RltvDir, #{connector := Connector} = Config) when + is_map(Connector) +-> + SSL = map_get_oneof([<<"ssl">>, ssl], Connector, undefined), + new_ssl_config(RltvDir, Config, SSL); +%% for bridges without `connector` field. i.e. webhook +convert_certs(RltvDir, #{<<"ssl">> := SSL} = Config) -> + new_ssl_config(RltvDir, Config, SSL); +convert_certs(RltvDir, #{ssl := SSL} = Config) -> + new_ssl_config(RltvDir, Config, SSL); +%% for bridges use connector name +convert_certs(_RltvDir, Config) -> + {ok, Config}. + +clear_certs(RltvDir, #{<<"connector">> := Connector} = _Config) when + is_map(Connector) +-> + OldSSL = map_get_oneof([<<"ssl">>, ssl], Connector, undefined), + ok = emqx_tls_lib:delete_ssl_files(RltvDir, undefined, OldSSL); +clear_certs(RltvDir, #{connector := Connector} = _Config) when + is_map(Connector) +-> + OldSSL = map_get_oneof([<<"ssl">>, ssl], Connector, undefined), + ok = emqx_tls_lib:delete_ssl_files(RltvDir, undefined, OldSSL); +clear_certs(RltvDir, #{<<"ssl">> := OldSSL} = _Config) -> + ok = emqx_tls_lib:delete_ssl_files(RltvDir, undefined, OldSSL); +clear_certs(RltvDir, #{ssl := OldSSL} = _Config) -> + ok = emqx_tls_lib:delete_ssl_files(RltvDir, undefined, OldSSL); +clear_certs(_RltvDir, _) -> + ok. + +drop_invalid_certs(#{<<"connector">> := Connector} = Config) when + is_map(Connector) +-> + SSL = map_get_oneof([<<"ssl">>, ssl], Connector, undefined), + NewSSL = emqx_tls_lib:drop_invalid_certs(SSL), + new_ssl_config(Config, NewSSL); +drop_invalid_certs(#{connector := Connector} = Config) when + is_map(Connector) +-> + SSL = map_get_oneof([<<"ssl">>, ssl], Connector, undefined), + NewSSL = emqx_tls_lib:drop_invalid_certs(SSL), + new_ssl_config(Config, NewSSL); +drop_invalid_certs(#{<<"ssl">> := SSL} = Config) -> + NewSSL = emqx_tls_lib:drop_invalid_certs(SSL), + new_ssl_config(Config, NewSSL); +drop_invalid_certs(#{ssl := SSL} = Config) -> + NewSSL = emqx_tls_lib:drop_invalid_certs(SSL), + new_ssl_config(Config, NewSSL); +%% for bridges use connector name +drop_invalid_certs(Config) -> + Config. + +new_ssl_config(RltvDir, Config, SSL) -> + case emqx_tls_lib:ensure_ssl_files(RltvDir, SSL) of + {ok, NewSSL} -> + {ok, new_ssl_config(Config, NewSSL)}; {error, Reason} -> {error, {bad_ssl_config, Reason}} end. -clear_certs(_RltvDir, undefined) -> - ok; -clear_certs(RltvDir, Config) -> - OldSSL = map_get_oneof([<<"ssl">>, ssl], Config, undefined), - ok = emqx_tls_lib:delete_ssl_files(RltvDir, undefined, OldSSL). - -new_ssl_config(Config, undefined) -> Config; -new_ssl_config(Config, #{<<"enable">> := _} = SSL) -> Config#{<<"ssl">> => SSL}; -new_ssl_config(Config, #{enable := _} = SSL) -> Config#{ssl => SSL}. +new_ssl_config(#{connector := Connector} = Config, NewSSL) -> + Config#{connector => Connector#{ssl => NewSSL}}; +new_ssl_config(#{<<"connector">> := Connector} = Config, NewSSL) -> + Config#{<<"connector">> => Connector#{<<"ssl">> => NewSSL}}; +new_ssl_config(#{ssl := _} = Config, NewSSL) -> + Config#{ssl => NewSSL}; +new_ssl_config(#{<<"ssl">> := _} = Config, NewSSL) -> + Config#{<<"ssl">> => NewSSL}; +new_ssl_config(Config, _NewSSL) -> + Config. map_get_oneof([], _Map, Default) -> Default; From 16618131adf2d4ecdc2e9700b887e2f2330cfceb Mon Sep 17 00:00:00 2001 From: JimMoen Date: Fri, 2 Sep 2022 14:44:38 +0800 Subject: [PATCH 8/9] fix(bridge): mqtt source/sink bridge use empty payload template --- apps/emqx_connector/src/mqtt/emqx_connector_mqtt_schema.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_schema.erl b/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_schema.erl index b06d00884..438f33b5d 100644 --- a/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_schema.erl +++ b/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_schema.erl @@ -224,7 +224,7 @@ fields("egress") -> sc( binary(), #{ - required => true, + default => <<"${payload}">>, desc => ?DESC("payload") } )} From d533e35df072805f9fdc6d3f4c5c39aeb56c390d Mon Sep 17 00:00:00 2001 From: JimMoen Date: Fri, 2 Sep 2022 18:45:14 +0800 Subject: [PATCH 9/9] chore: update app vsn --- apps/emqx/src/emqx.app.src | 2 +- apps/emqx_authn/src/emqx_authn.app.src | 2 +- apps/emqx_bridge/src/emqx_bridge.app.src | 2 +- apps/emqx_connector/src/emqx_connector.app.src | 2 +- apps/emqx_exhook/src/emqx_exhook.app.src | 2 +- apps/emqx_gateway/src/emqx_gateway.app.src | 2 +- apps/emqx_management/src/emqx_management.app.src | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/emqx/src/emqx.app.src b/apps/emqx/src/emqx.app.src index 9941a1a6a..edf632740 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.7"}, + {vsn, "5.0.8"}, {modules, []}, {registered, []}, {applications, [ diff --git a/apps/emqx_authn/src/emqx_authn.app.src b/apps/emqx_authn/src/emqx_authn.app.src index 4360a784d..c4c59bd4a 100644 --- a/apps/emqx_authn/src/emqx_authn.app.src +++ b/apps/emqx_authn/src/emqx_authn.app.src @@ -1,7 +1,7 @@ %% -*- mode: erlang -*- {application, emqx_authn, [ {description, "EMQX Authentication"}, - {vsn, "0.1.5"}, + {vsn, "0.1.6"}, {modules, []}, {registered, [emqx_authn_sup, emqx_authn_registry]}, {applications, [kernel, stdlib, emqx_resource, ehttpc, epgsql, mysql, jose]}, diff --git a/apps/emqx_bridge/src/emqx_bridge.app.src b/apps/emqx_bridge/src/emqx_bridge.app.src index 3be8d38fd..8e1c60c29 100644 --- a/apps/emqx_bridge/src/emqx_bridge.app.src +++ b/apps/emqx_bridge/src/emqx_bridge.app.src @@ -1,7 +1,7 @@ %% -*- mode: erlang -*- {application, emqx_bridge, [ {description, "An OTP application"}, - {vsn, "0.1.2"}, + {vsn, "0.1.3"}, {registered, []}, {mod, {emqx_bridge_app, []}}, {applications, [ diff --git a/apps/emqx_connector/src/emqx_connector.app.src b/apps/emqx_connector/src/emqx_connector.app.src index 1e66b8442..0734d47b8 100644 --- a/apps/emqx_connector/src/emqx_connector.app.src +++ b/apps/emqx_connector/src/emqx_connector.app.src @@ -1,7 +1,7 @@ %% -*- mode: erlang -*- {application, emqx_connector, [ {description, "An OTP application"}, - {vsn, "0.1.4"}, + {vsn, "0.1.5"}, {registered, []}, {mod, {emqx_connector_app, []}}, {applications, [ diff --git a/apps/emqx_exhook/src/emqx_exhook.app.src b/apps/emqx_exhook/src/emqx_exhook.app.src index f10155f0e..c4a43d846 100644 --- a/apps/emqx_exhook/src/emqx_exhook.app.src +++ b/apps/emqx_exhook/src/emqx_exhook.app.src @@ -1,7 +1,7 @@ %% -*- mode: erlang -*- {application, emqx_exhook, [ {description, "EMQX Extension for Hook"}, - {vsn, "5.0.3"}, + {vsn, "5.0.4"}, {modules, []}, {registered, []}, {mod, {emqx_exhook_app, []}}, diff --git a/apps/emqx_gateway/src/emqx_gateway.app.src b/apps/emqx_gateway/src/emqx_gateway.app.src index 9fb78c825..47245c0a2 100644 --- a/apps/emqx_gateway/src/emqx_gateway.app.src +++ b/apps/emqx_gateway/src/emqx_gateway.app.src @@ -1,7 +1,7 @@ %% -*- mode: erlang -*- {application, emqx_gateway, [ {description, "The Gateway management application"}, - {vsn, "0.1.4"}, + {vsn, "0.1.5"}, {registered, []}, {mod, {emqx_gateway_app, []}}, {applications, [kernel, stdlib, grpc, emqx, emqx_authn]}, diff --git a/apps/emqx_management/src/emqx_management.app.src b/apps/emqx_management/src/emqx_management.app.src index df7aa36ec..d9f09f00e 100644 --- a/apps/emqx_management/src/emqx_management.app.src +++ b/apps/emqx_management/src/emqx_management.app.src @@ -2,7 +2,7 @@ {application, emqx_management, [ {description, "EMQX Management API and CLI"}, % strict semver, bump manually! - {vsn, "5.0.4"}, + {vsn, "5.0.5"}, {modules, []}, {registered, [emqx_management_sup]}, {applications, [kernel, stdlib, emqx_plugins, minirest, emqx]},