diff --git a/.ci/fvt_tests/relup.lux b/.ci/fvt_tests/relup.lux index d7ed957d9..58ba882fa 100644 --- a/.ci/fvt_tests/relup.lux +++ b/.ci/fvt_tests/relup.lux @@ -29,7 +29,7 @@ !export EMQX_LOG__LEVEL=debug !./bin/emqx start - ?EMQ X .* is started successfully! + ?EMQ.* is started successfully! ?SH-PROMPT [shell emqx2] @@ -43,7 +43,7 @@ !export EMQX_LOG__LEVEL=debug !./bin/emqx start - ?EMQ X .* is started successfully! + ?EMQ.* is started successfully! ?SH-PROMPT !./bin/emqx_ctl cluster join emqx@127.0.0.1 diff --git a/.github/workflows/build_packages.yaml b/.github/workflows/build_packages.yaml index bb7cd82cf..4cfa31466 100644 --- a/.github/workflows/build_packages.yaml +++ b/.github/workflows/build_packages.yaml @@ -93,9 +93,9 @@ jobs: ./_build/${{ matrix.profile }}/rel/emqx/bin/emqx stop echo "EMQX stopped" ./_build/${{ matrix.profile }}/rel/emqx/bin/emqx install - echo "EQMX installed" + echo "EMQX installed" ./_build/${{ matrix.profile }}/rel/emqx/bin/emqx uninstall - echo "EQMX uninstaled" + echo "EMQX uninstaled" - uses: actions/upload-artifact@v3 with: name: ${{ matrix.profile }} diff --git a/.github/workflows/build_slim_packages.yaml b/.github/workflows/build_slim_packages.yaml index bb1fca468..089be83a6 100644 --- a/.github/workflows/build_slim_packages.yaml +++ b/.github/workflows/build_slim_packages.yaml @@ -109,9 +109,9 @@ jobs: ./_build/${{ matrix.profile }}/rel/emqx/bin/emqx stop echo "EMQX stopped" ./_build/${{ matrix.profile }}/rel/emqx/bin/emqx install - echo "EQMX installed" + echo "EMQX installed" ./_build/${{ matrix.profile }}/rel/emqx/bin/emqx uninstall - echo "EQMX uninstaled" + echo "EMQX uninstaled" mac: strategy: diff --git a/.github/workflows/run_automate_tests.yaml b/.github/workflows/run_automate_tests.yaml index 6168089f9..8b6e33223 100644 --- a/.github/workflows/run_automate_tests.yaml +++ b/.github/workflows/run_automate_tests.yaml @@ -79,7 +79,7 @@ jobs: TARGET: emqx/${{ needs.build.outputs.imgname }} EMQX_TAG: ${{ needs.build.outputs.version }} run: | - docker-compose \ + docker compose \ -f .ci/docker-compose-file/docker-compose-emqx-cluster.yaml \ up -d --build - uses: actions/checkout@v3 @@ -180,7 +180,7 @@ jobs: EMQX_TAG: ${{ needs.build.outputs.version }} MYSQL_TAG: ${{ matrix.mysql_tag }} run: | - docker-compose \ + docker compose \ -f .ci/docker-compose-file/docker-compose-emqx-cluster.yaml \ -f .ci/docker-compose-file/docker-compose-mysql-tls.yaml \ up -d --build @@ -287,7 +287,7 @@ jobs: EMQX_TAG: ${{ needs.build.outputs.version }} PGSQL_TAG: ${{ matrix.pgsql_tag }} run: | - docker-compose \ + docker compose \ -f .ci/docker-compose-file/docker-compose-emqx-broker-cluster.yaml \ -f .ci/docker-compose-file/docker-compose-pgsql-tls.yaml \ up -d --build @@ -383,7 +383,7 @@ jobs: EMQX_TAG: ${{ needs.build.outputs.version }} MYSQL_TAG: 8 run: | - docker-compose \ + docker compose \ -f .ci/docker-compose-file/docker-compose-emqx-broker-cluster.yaml \ -f .ci/docker-compose-file/docker-compose-mysql-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-enterprise-tomcat-tcp.yaml \ diff --git a/.github/workflows/run_cts_tests.yaml b/.github/workflows/run_cts_tests.yaml index cd204c37e..ed5ab7603 100644 --- a/.github/workflows/run_cts_tests.yaml +++ b/.github/workflows/run_cts_tests.yaml @@ -33,7 +33,7 @@ jobs: env: LDAP_TAG: ${{ matrix.ldap_tag }} run: | - docker-compose \ + docker compose \ -f .ci/docker-compose-file/docker-compose-ldap-tcp.yaml \ -f .ci/docker-compose-file/docker-compose.yaml \ up -d --build @@ -88,9 +88,9 @@ jobs: run: | docker rm -f $(docker ps -qa) || true docker network rm $(docker network ls -q) || true - - name: docker-compose up + - name: docker compose up run: | - docker-compose \ + docker compose \ -f .ci/docker-compose-file/docker-compose-toxiproxy.yaml \ -f .ci/docker-compose-file/docker-compose-mongo-${{ matrix.connect_type }}.yaml \ -f .ci/docker-compose-file/docker-compose.yaml \ @@ -164,10 +164,10 @@ jobs: run: | docker rm -f $(docker ps -qa) || true docker network rm $(docker network ls -q) || true - - name: docker-compose up + - name: docker compose up timeout-minutes: 5 run: | - docker-compose \ + docker compose \ -f .ci/docker-compose-file/docker-compose-mysql-${{ matrix.connect_type }}.yaml \ -f .ci/docker-compose-file/docker-compose.yaml \ up -d --build @@ -254,9 +254,9 @@ jobs: run: | docker rm -f $(docker ps -qa) || true docker network rm $(docker network ls -q) || true - - name: docker-compose up + - name: docker compose up run: | - docker-compose \ + docker compose \ -f .ci/docker-compose-file/docker-compose-pgsql-${{ matrix.connect_type }}.yaml \ -f .ci/docker-compose-file/docker-compose.yaml \ up -d --build @@ -339,9 +339,9 @@ jobs: run: | docker rm -f $(docker ps -qa) || true docker network rm $(docker network ls -q) || true - - name: docker-compose up + - name: docker compose up run: | - docker-compose \ + docker compose \ -f .ci/docker-compose-file/docker-compose-redis-${{ matrix.node_type }}-${{ matrix.connect_type }}.yaml \ -f .ci/docker-compose-file/docker-compose.yaml \ up -d --build diff --git a/CHANGES-4.4.md b/CHANGES-4.4.md index 47d37d0a3..11c3c83da 100644 --- a/CHANGES-4.4.md +++ b/CHANGES-4.4.md @@ -235,8 +235,8 @@ This patch release is only to fix windows build which failed on v4.4.0. ### Important changes -- **For Debian/Ubuntu users**, Debian/Ubuntu package (deb) installed EMQ X is now started from systemd. - This is to use systemd's supervision functionality to ensure that EMQ X service restarts after a crash. +- **For Debian/Ubuntu users**, Debian/Ubuntu package (deb) installed EMQX is now started from systemd. + This is to use systemd's supervision functionality to ensure that EMQX service restarts after a crash. The package installation service upgrade from init.d to systemd has been verified, it is still recommended that you verify and confirm again before deploying to the production environment, at least to ensure that systemd is available in your system @@ -280,7 +280,7 @@ This patch release is only to fix windows build which failed on v4.4.0. - Improve the error log content when the Proxy Protocol message is received without `proxy_protocol` configured. - Add additional message attributes to the message reported by the gateway. - Messages from gateways such as CoAP, LwM2M, Stomp, ExProto, etc., when converted to EMQ X messages, + Messages from gateways such as CoAP, LwM2M, Stomp, ExProto, etc., when converted to EMQX messages, add fields such as protocol name, protocol version, user name, client IP, etc., which can be used for multi-language hook extension (ExHook) diff --git a/apps/emqx_auth_http/src/emqx_acl_http.erl b/apps/emqx_auth_http/src/emqx_acl_http.erl index e18527179..079e623d7 100644 --- a/apps/emqx_auth_http/src/emqx_acl_http.erl +++ b/apps/emqx_auth_http/src/emqx_acl_http.erl @@ -43,7 +43,9 @@ check_acl(ClientInfo, PubSub, Topic, _AclResult, #{acl := ACLParams = #{path := ClientInfo1 = ClientInfo#{access => access(PubSub), topic => Topic}, Username = maps:get(username, ClientInfo1, undefined), case check_acl_request(ACLParams, ClientInfo1) of - {ok, 200, <<"ignore">>} -> ok; + {ok, 200, <<"ignore">>} -> + ?LOG(debug, "ignored, ~s to topic ~ts, username: ~ts", + [PubSub, Topic, Username]); {ok, 200, _Body} -> ?LOG(debug, "Allow ~s to topic ~ts, username: ~ts", [PubSub, Topic, Username]), diff --git a/apps/emqx_auth_http/src/emqx_auth_http.app.src b/apps/emqx_auth_http/src/emqx_auth_http.app.src index a870575ce..94c446b6f 100644 --- a/apps/emqx_auth_http/src/emqx_auth_http.app.src +++ b/apps/emqx_auth_http/src/emqx_auth_http.app.src @@ -1,13 +1,13 @@ {application, emqx_auth_http, - [{description, "EMQ X Authentication/ACL with HTTP API"}, - {vsn, "4.3.11"}, % strict semver, bump manually! + [{description, "EMQX Authentication/ACL with HTTP API"}, + {vsn, "4.3.12"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_auth_http_sup]}, {applications, [kernel,stdlib,ehttpc]}, {mod, {emqx_auth_http_app, []}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-auth-http"} ]} diff --git a/apps/emqx_auth_http/src/emqx_auth_http.appup.src b/apps/emqx_auth_http/src/emqx_auth_http.appup.src index 3f167d768..f661c36d2 100644 --- a/apps/emqx_auth_http/src/emqx_auth_http.appup.src +++ b/apps/emqx_auth_http/src/emqx_auth_http.appup.src @@ -1,7 +1,10 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.3.10", + [{"4.3.11", + [{load_module,emqx_auth_http,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_http,brutal_purge,soft_purge,[]}]}, + {"4.3.10", [{load_module,emqx_auth_http,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_http,brutal_purge,soft_purge,[]}]}, {"4.3.9", @@ -45,7 +48,10 @@ {load_module,emqx_auth_http_cli,brutal_purge,soft_purge,[]}]}, {<<"4.3.[0-1]">>,[{restart_application,emqx_auth_http}]}, {<<".*">>,[]}], - [{"4.3.10", + [{"4.3.11", + [{load_module,emqx_auth_http,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_http,brutal_purge,soft_purge,[]}]}, + {"4.3.10", [{load_module,emqx_auth_http,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_http,brutal_purge,soft_purge,[]}]}, {"4.3.9", diff --git a/apps/emqx_auth_http/src/emqx_auth_http.erl b/apps/emqx_auth_http/src/emqx_auth_http.erl index c7710ae94..7318688fd 100644 --- a/apps/emqx_auth_http/src/emqx_auth_http.erl +++ b/apps/emqx_auth_http/src/emqx_auth_http.erl @@ -39,7 +39,7 @@ check(ClientInfo, AuthResult, #{auth := AuthParms = #{path := Path}, Username = maps:get(username, ClientInfo, undefined), case authenticate(AuthParms, ClientInfo) of {ok, 200, <<"ignore">>} -> - ok; + ?LOG(debug, "Auth ignored, path: ~ts, username: ~ts", [Path, Username]); {ok, 200, Body} -> ?LOG(debug, "Auth succeeded from path: ~ts, username: ~ts", [Path, Username]), IsSuperuser = is_superuser(SuperParams, ClientInfo), diff --git a/apps/emqx_auth_jwt/src/emqx_auth_jwt.app.src b/apps/emqx_auth_jwt/src/emqx_auth_jwt.app.src index ab6dd53e7..398e0bc34 100644 --- a/apps/emqx_auth_jwt/src/emqx_auth_jwt.app.src +++ b/apps/emqx_auth_jwt/src/emqx_auth_jwt.app.src @@ -1,6 +1,6 @@ {application, emqx_auth_jwt, - [{description, "EMQ X Authentication with JWT"}, - {vsn, "4.4.9"}, % strict semver, bump manually! + [{description, "EMQX Authentication with JWT"}, + {vsn, "4.4.10"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_auth_jwt_sup]}, {applications, [kernel,stdlib,jose]}, diff --git a/apps/emqx_auth_jwt/src/emqx_auth_jwt.appup.src b/apps/emqx_auth_jwt/src/emqx_auth_jwt.appup.src index 1407592b0..bfd53173d 100644 --- a/apps/emqx_auth_jwt/src/emqx_auth_jwt.appup.src +++ b/apps/emqx_auth_jwt/src/emqx_auth_jwt.appup.src @@ -1,7 +1,8 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.4.8", + [{"4.4.9",[{load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}]}, + {"4.4.8", [{load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}]}, {<<"4\\.4\\.[2-7]">>, @@ -9,7 +10,8 @@ {load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}]}, {<<"4\\.4\\.[0-1]">>,[{restart_application,emqx_auth_jwt}]}, {<<".*">>,[]}], - [{"4.4.8", + [{"4.4.9",[{load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}]}, + {"4.4.8", [{load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}]}, {<<"4\\.4\\.[2-7]">>, diff --git a/apps/emqx_auth_jwt/src/emqx_auth_jwt.erl b/apps/emqx_auth_jwt/src/emqx_auth_jwt.erl index dd3b2dbc9..4fed0912e 100644 --- a/apps/emqx_auth_jwt/src/emqx_auth_jwt.erl +++ b/apps/emqx_auth_jwt/src/emqx_auth_jwt.erl @@ -41,15 +41,15 @@ check(ClientInfo, AuthResult, State) -> check_auth(ClientInfo, AuthResult, #{from := From, checklists := Checklists}) -> case maps:find(From, ClientInfo) of error -> - ok; + ?LOG(debug, "Auth ignored, ~p not found in Client: ~p", [From, ClientInfo]); {ok, undefined} -> - ok; + ?LOG(debug, "Auth ignored, ~p undefined, Client: ~p", [From, ClientInfo]); {ok, Token} -> case emqx_auth_jwt_svr:verify(Token) of {error, not_found} -> - ok; + ?LOG_SENSITIVE(debug, "Auth ignored, ~p not_found, Client: ~p", [Token, ClientInfo]); {error, not_token} -> - ok; + ?LOG_SENSITIVE(debug, "Auth ignored, ~p not_token, Client: ~p", [Token, ClientInfo]); {error, Reason} -> ?LOG_SENSITIVE(debug, "Auth from JWT failed, Client: ~p, Reason: ~p", diff --git a/apps/emqx_auth_ldap/src/emqx_acl_ldap.erl b/apps/emqx_auth_ldap/src/emqx_acl_ldap.erl index 8faeed913..554f7c5a9 100644 --- a/apps/emqx_auth_ldap/src/emqx_acl_ldap.erl +++ b/apps/emqx_auth_ldap/src/emqx_acl_ldap.erl @@ -28,7 +28,9 @@ check_acl(ClientInfo, PubSub, Topic, NoMatchAction, State) -> case do_check_acl(ClientInfo, PubSub, Topic, NoMatchAction, State) of - ok -> ok; + ok -> ?LOG_SENSITIVE(debug, + "[LDAP] ACL ignored, Topic: ~p, Action: ~p for Client: ~p", + [Topic, PubSub, ClientInfo]); {stop, allow} -> ?LOG_SENSITIVE(debug, "[LDAP] Allow Topic: ~p, Action: ~p for Client: ~p", diff --git a/apps/emqx_auth_ldap/src/emqx_auth_ldap.app.src b/apps/emqx_auth_ldap/src/emqx_auth_ldap.app.src index 4bee1aefa..01fe97a06 100644 --- a/apps/emqx_auth_ldap/src/emqx_auth_ldap.app.src +++ b/apps/emqx_auth_ldap/src/emqx_auth_ldap.app.src @@ -1,13 +1,13 @@ {application, emqx_auth_ldap, - [{description, "EMQ X Authentication/ACL with LDAP"}, - {vsn, "4.3.7"}, % strict semver, bump manually! + [{description, "EMQX Authentication/ACL with LDAP"}, + {vsn, "4.3.8"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_auth_ldap_sup]}, {applications, [kernel,stdlib,eldap2,ecpool]}, {mod, {emqx_auth_ldap_app,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-auth-ldap"} ]} diff --git a/apps/emqx_auth_ldap/src/emqx_auth_ldap.appup.src b/apps/emqx_auth_ldap/src/emqx_auth_ldap.appup.src index 01b29895f..0104e9620 100644 --- a/apps/emqx_auth_ldap/src/emqx_auth_ldap.appup.src +++ b/apps/emqx_auth_ldap/src/emqx_auth_ldap.appup.src @@ -1,7 +1,10 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.3.6", + [{"4.3.7", + [{load_module,emqx_auth_ldap,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_ldap,brutal_purge,soft_purge,[]}]}, + {"4.3.6", [{load_module,emqx_acl_ldap,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_ldap,brutal_purge,soft_purge,[]}]}, {"4.3.5", @@ -24,7 +27,10 @@ {load_module,emqx_acl_ldap,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_ldap_cli,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{"4.3.6", + [{"4.3.7", + [{load_module,emqx_auth_ldap,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_ldap,brutal_purge,soft_purge,[]}]}, + {"4.3.6", [{load_module,emqx_acl_ldap,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_ldap,brutal_purge,soft_purge,[]}]}, {"4.3.5", diff --git a/apps/emqx_auth_ldap/src/emqx_auth_ldap.erl b/apps/emqx_auth_ldap/src/emqx_auth_ldap.erl index d1d73784d..497d98901 100644 --- a/apps/emqx_auth_ldap/src/emqx_auth_ldap.erl +++ b/apps/emqx_auth_ldap/src/emqx_auth_ldap.erl @@ -59,13 +59,15 @@ check(ClientInfo = #{username := Username, password := Password}, AuthResult, case CheckResult of ok -> ?LOG_SENSITIVE(debug, - "[LDAP] Auth from ldap succeeded, Client: ~p", + "[LDAP] Auth succeeded, Client: ~p", [ClientInfo]), {stop, AuthResult#{auth_result => success, anonymous => false}}; {error, not_found} -> - ok; + ?LOG_SENSITIVE(debug, + "[LDAP] Auth ignored, Client: ~p", + [ClientInfo]); {error, ResultCode} -> - ?LOG_SENSITIVE(error, "[LDAP] Auth from ldap failed: ~p", [ResultCode]), + ?LOG_SENSITIVE(error, "[LDAP] Auth failed: ~p", [ResultCode]), {stop, AuthResult#{auth_result => ResultCode, anonymous => false}} end. diff --git a/apps/emqx_auth_mnesia/src/emqx_acl_mnesia.erl b/apps/emqx_auth_mnesia/src/emqx_acl_mnesia.erl index 928dcc608..9ff52ea85 100644 --- a/apps/emqx_auth_mnesia/src/emqx_acl_mnesia.erl +++ b/apps/emqx_auth_mnesia/src/emqx_acl_mnesia.erl @@ -54,7 +54,9 @@ check_acl(ClientInfo = #{ clientid := Clientid }, PubSub, Topic, _NoMatchAction, [Topic, PubSub, ClientInfo]), {stop, deny}; _ -> - ok + ?LOG_SENSITIVE(debug, + "[Mnesia] ACL ignored, Topic: ~p, Action: ~p for Client: ~p", + [Topic, PubSub, ClientInfo]) end. description() -> "Acl with Mnesia". diff --git a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.app.src b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.app.src index c8298c146..09ad7b779 100644 --- a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.app.src +++ b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.app.src @@ -1,13 +1,13 @@ {application, emqx_auth_mnesia, - [{description, "EMQ X Authentication with Mnesia"}, - {vsn, "4.3.11"}, % strict semver, bump manually + [{description, "EMQX Authentication with Mnesia"}, + {vsn, "4.3.12"}, % strict semver, bump manually {modules, []}, {registered, []}, {applications, [kernel,stdlib,mnesia]}, {mod, {emqx_auth_mnesia_app,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-auth-mnesia"} ]} diff --git a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src index 36e4437fd..74d194dd3 100644 --- a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src +++ b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src @@ -1,7 +1,10 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.3.10", + [{"4.3.11", + [{load_module,emqx_auth_mnesia,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia,brutal_purge,soft_purge,[]}]}, + {"4.3.10", [{load_module,emqx_auth_mnesia,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mnesia,brutal_purge,soft_purge,[]}]}, {"4.3.9", @@ -47,7 +50,10 @@ {load_module,emqx_acl_mnesia_cli,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mnesia_app,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{"4.3.10", + [{"4.3.11", + [{load_module,emqx_auth_mnesia,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia,brutal_purge,soft_purge,[]}]}, + {"4.3.10", [{load_module,emqx_auth_mnesia,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mnesia,brutal_purge,soft_purge,[]}]}, {"4.3.9", diff --git a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.erl b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.erl index 35bea5fde..bd1215d70 100644 --- a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.erl +++ b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.erl @@ -60,19 +60,17 @@ check(ClientInfo = #{ clientid := Clientid MatchSpec = ets:fun2ms(fun({?TABLE, {clientid, X}, Password, InterTime}) when X =:= Clientid-> Password; ({?TABLE, {username, X}, Password, InterTime}) when X =:= Username andalso X =/= undefined -> Password end), + Info = maps:without([password], ClientInfo), case ets:select(?TABLE, MatchSpec) of [] -> - ok; + ?LOG(debug, "[Mnesia] Auth ignored, Client: ~p", [Info]); List -> case match_password(NPassword, HashType, List) of false -> - Info = maps:without([password], ClientInfo), ?LOG(info, "[Mnesia] Auth from mnesia failed: ~p", [Info]), {stop, AuthResult#{anonymous => false, auth_result => password_error}}; _ -> - ?LOG_SENSITIVE(debug, - "[Mnesia] Auth from mnesia succeeded, Client: ~p", - [ClientInfo]), + ?LOG(debug,"[Mnesia] Auth from mnesia succeeded, Client: ~p", [Info]), {stop, AuthResult#{anonymous => false, auth_result => success}} end end. diff --git a/apps/emqx_auth_mongo/src/emqx_acl_mongo.erl b/apps/emqx_auth_mongo/src/emqx_acl_mongo.erl index 2f069478b..aae7532eb 100644 --- a/apps/emqx_auth_mongo/src/emqx_acl_mongo.erl +++ b/apps/emqx_auth_mongo/src/emqx_acl_mongo.erl @@ -35,7 +35,9 @@ check_acl(ClientInfo, PubSub, Topic, _AclResult, Env = #{aclquery := AclQuery}) maps:from_list(emqx_auth_mongo:replvars(Selector, ClientInfo)) end, SelectorList), case emqx_auth_mongo:query_multi(Pool, Coll, SelectorMapList) of - [] -> ok; + [] -> ?LOG_SENSITIVE(debug, + "[MongoDB] ACL ignored, Topic: ~p, Action: ~p for Client: ~p", + [Topic, PubSub, ClientInfo]); Rows -> try match(ClientInfo, Topic, topics(PubSub, Rows)) of matched -> @@ -50,7 +52,7 @@ check_acl(ClientInfo, PubSub, Topic, _AclResult, Env = #{aclquery := AclQuery}) {stop, deny} catch _Err:Reason-> - ?LOG(error, "[MongoDB] Check mongo ~p ACL failed, got ACL config: ~p, error: :~p", + ?LOG(error, "[MongoDB] ACL ignored, check mongo ~p ACL failed, got ACL config: ~p, error: ~p", [PubSub, Rows, Reason]), ignore end diff --git a/apps/emqx_auth_mongo/src/emqx_auth_mongo.app.src b/apps/emqx_auth_mongo/src/emqx_auth_mongo.app.src index 0677f118b..5476a4977 100644 --- a/apps/emqx_auth_mongo/src/emqx_auth_mongo.app.src +++ b/apps/emqx_auth_mongo/src/emqx_auth_mongo.app.src @@ -1,13 +1,13 @@ {application, emqx_auth_mongo, - [{description, "EMQ X Authentication/ACL with MongoDB"}, - {vsn, "4.4.6"}, % strict semver, bump manually! + [{description, "EMQX Authentication/ACL with MongoDB"}, + {vsn, "4.4.7"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_auth_mongo_sup]}, {applications, [kernel,stdlib,mongodb,ecpool]}, {mod, {emqx_auth_mongo_app,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-auth-mongo"} ]} diff --git a/apps/emqx_auth_mongo/src/emqx_auth_mongo.appup.src b/apps/emqx_auth_mongo/src/emqx_auth_mongo.appup.src index b3c2b92ef..9d500d005 100644 --- a/apps/emqx_auth_mongo/src/emqx_auth_mongo.appup.src +++ b/apps/emqx_auth_mongo/src/emqx_auth_mongo.appup.src @@ -1,7 +1,10 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.4.5", + [{"4.4.6", + [{load_module,emqx_auth_mongo,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mongo,brutal_purge,soft_purge,[]}]}, + {"4.4.5", [{load_module,emqx_acl_mongo,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mongo,brutal_purge,soft_purge,[]}]}, {"4.4.4", @@ -22,7 +25,10 @@ {load_module,emqx_auth_mongo,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mongo,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{"4.4.5", + [{"4.4.6", + [{load_module,emqx_auth_mongo,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mongo,brutal_purge,soft_purge,[]}]}, + {"4.4.5", [{load_module,emqx_acl_mongo,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mongo,brutal_purge,soft_purge,[]}]}, {"4.4.4", diff --git a/apps/emqx_auth_mongo/src/emqx_auth_mongo.erl b/apps/emqx_auth_mongo/src/emqx_auth_mongo.erl index 9ca272c65..94bced3fa 100644 --- a/apps/emqx_auth_mongo/src/emqx_auth_mongo.erl +++ b/apps/emqx_auth_mongo/src/emqx_auth_mongo.erl @@ -52,10 +52,11 @@ check(ClientInfo = #{password := Password}, AuthResult, hash = HashType, selector = Selector} = AuthQuery, Pool = maps:get(pool, Env, ?APP), case query(Pool, Collection, maps:from_list(replvars(Selector, ClientInfo))) of - undefined -> ok; + undefined -> + ?LOG_SENSITIVE(debug, "[MongoDB] Auth ignored, Client: ~p", [ClientInfo]); {error, Reason} -> ?tp(emqx_auth_mongo_check_authn_error, #{error => Reason}), - ?LOG_SENSITIVE(error, "[MongoDB] Can't connect to MongoDB server: ~0p", [Reason]), + ?LOG_SENSITIVE(error, "[MongoDB] Auth failed, Can't connect to MongoDB server: ~0p", [Reason]), {stop, AuthResult#{auth_result => not_authorized, anonymous => false}}; UserMap -> Result = case [maps:get(Field, UserMap, undefined) || Field <- Fields] of @@ -69,7 +70,7 @@ check(ClientInfo = #{password := Password}, AuthResult, ok -> ?tp(emqx_auth_mongo_superuser_check_authn_ok, #{}), ?LOG_SENSITIVE(debug, - "[MongoDB] Auth from mongo succeeded, Client: ~p", + "[MongoDB] Auth succeeded, Client: ~p", [ClientInfo]), {stop, AuthResult#{is_superuser => is_superuser(Pool, SuperQuery, ClientInfo), anonymous => false, diff --git a/apps/emqx_auth_mysql/src/emqx_acl_mysql.erl b/apps/emqx_auth_mysql/src/emqx_acl_mysql.erl index a5b0f86b2..81c34b602 100644 --- a/apps/emqx_auth_mysql/src/emqx_acl_mysql.erl +++ b/apps/emqx_auth_mysql/src/emqx_acl_mysql.erl @@ -28,7 +28,10 @@ check_acl(ClientInfo, PubSub, Topic, NoMatchAction, #{pool := Pool} = State) -> case do_check_acl(Pool, ClientInfo, PubSub, Topic, NoMatchAction, State) of - ok -> ok; + ok -> + ?LOG_SENSITIVE(debug, + "[MySQL] ACL ignored, Topic: ~p, Action: ~p for Client: ~p", + [Topic, PubSub, ClientInfo]); {stop, allow} -> ?LOG_SENSITIVE(debug, "[MySQL] Allow Topic: ~p, Action: ~p for Client: ~p", diff --git a/apps/emqx_auth_mysql/src/emqx_auth_mysql.app.src b/apps/emqx_auth_mysql/src/emqx_auth_mysql.app.src index abfa86c5f..0c4c44ef5 100644 --- a/apps/emqx_auth_mysql/src/emqx_auth_mysql.app.src +++ b/apps/emqx_auth_mysql/src/emqx_auth_mysql.app.src @@ -1,13 +1,13 @@ {application, emqx_auth_mysql, - [{description, "EMQ X Authentication/ACL with MySQL"}, - {vsn, "4.3.5"}, % strict semver, bump manually! + [{description, "EMQX Authentication/ACL with MySQL"}, + {vsn, "4.3.6"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_auth_mysql_sup]}, {applications, [kernel,stdlib,mysql,ecpool]}, {mod, {emqx_auth_mysql_app,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-auth-mysql"} ]} diff --git a/apps/emqx_auth_mysql/src/emqx_auth_mysql.appup.src b/apps/emqx_auth_mysql/src/emqx_auth_mysql.appup.src index a0a6b036d..8c166751a 100644 --- a/apps/emqx_auth_mysql/src/emqx_auth_mysql.appup.src +++ b/apps/emqx_auth_mysql/src/emqx_auth_mysql.appup.src @@ -1,7 +1,10 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.3.4", + [{"4.3.5", + [{load_module,emqx_auth_mysql,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mysql,brutal_purge,soft_purge,[]}]}, + {"4.3.4", [{load_module,emqx_auth_mysql,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mysql,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mysql_cli,brutal_purge,soft_purge,[]}]}, @@ -20,7 +23,10 @@ {load_module,emqx_auth_mysql,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mysql,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{"4.3.4", + [{"4.3.5", + [{load_module,emqx_auth_mysql,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mysql,brutal_purge,soft_purge,[]}]}, + {"4.3.4", [{load_module,emqx_auth_mysql,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mysql,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mysql_cli,brutal_purge,soft_purge,[]}]}, diff --git a/apps/emqx_auth_mysql/src/emqx_auth_mysql.erl b/apps/emqx_auth_mysql/src/emqx_auth_mysql.erl index 94045e1ad..ca991f008 100644 --- a/apps/emqx_auth_mysql/src/emqx_auth_mysql.erl +++ b/apps/emqx_auth_mysql/src/emqx_auth_mysql.erl @@ -46,16 +46,14 @@ check(ClientInfo = #{password := Password}, AuthResult, end, case CheckPass of ok -> - ?LOG_SENSITIVE(debug, - "[MySQL] Auth from mysql succeeded, Client: ~p", - [ClientInfo]), + ?LOG_SENSITIVE(debug, "[MySQL] Auth succeeded, Client: ~p", [ClientInfo]), {stop, AuthResult#{is_superuser => is_superuser(Pool, SuperQuery, ClientInfo), anonymous => false, auth_result => success}}; {error, not_found} -> - ok; + ?LOG_SENSITIVE(debug, "[MySQL] Auth ignored, Client: ~p", [ClientInfo]); {error, ResultCode} -> - ?LOG_SENSITIVE(error, "[MySQL] Auth from mysql failed: ~p", [ResultCode]), + ?LOG_SENSITIVE(error, "[MySQL] Auth failed: ~p", [ResultCode]), {stop, AuthResult#{auth_result => ResultCode, anonymous => false}} end. diff --git a/apps/emqx_auth_pgsql/src/emqx_acl_pgsql.erl b/apps/emqx_auth_pgsql/src/emqx_acl_pgsql.erl index 1afb93975..f4aa3ddfa 100644 --- a/apps/emqx_auth_pgsql/src/emqx_acl_pgsql.erl +++ b/apps/emqx_auth_pgsql/src/emqx_acl_pgsql.erl @@ -32,7 +32,10 @@ do_check_acl(_Pool, #{username := <<$$, _/binary>>}, _PubSub, _Topic, _NoMatchAc ok; do_check_acl(Pool, ClientInfo, PubSub, Topic, _NoMatchAction, #{acl_query := {AclSql, AclParams}}) -> case emqx_auth_pgsql_cli:equery(Pool, AclSql, AclParams, ClientInfo) of - {ok, _, []} -> ok; + {ok, _, []} -> + ?LOG_SENSITIVE(debug, + "[Postgres] ACL ignored, Topic: ~p, Action: ~p for Client: ~p", + [Topic, PubSub, ClientInfo]); {ok, _, Rows} -> Rules = filter(PubSub, compile(Rows)), case match(ClientInfo, Topic, Rules) of diff --git a/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.app.src b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.app.src index 96a810d7c..edbbcba9f 100644 --- a/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.app.src +++ b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.app.src @@ -1,13 +1,13 @@ {application, emqx_auth_pgsql, - [{description, "EMQ X Authentication/ACL with PostgreSQL"}, - {vsn, "4.4.5"}, % strict semver, bump manually! + [{description, "EMQX Authentication/ACL with PostgreSQL"}, + {vsn, "4.4.6"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_auth_pgsql_sup]}, {applications, [kernel,stdlib,epgsql,ecpool]}, {mod, {emqx_auth_pgsql_app,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-auth-pgsql"} ]} diff --git a/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.appup.src b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.appup.src index 98826f918..7a661c5c7 100644 --- a/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.appup.src +++ b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.appup.src @@ -1,7 +1,10 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.4.4", + [{"4.4.5", + [{load_module,emqx_auth_pgsql,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_pgsql,brutal_purge,soft_purge,[]}]}, + {"4.4.4", [{load_module,emqx_acl_pgsql,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_pgsql,brutal_purge,soft_purge,[]}]}, {"4.4.3", @@ -14,7 +17,10 @@ {load_module,emqx_auth_pgsql,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_pgsql_app,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{"4.4.4", + [{"4.4.5", + [{load_module,emqx_auth_pgsql,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_pgsql,brutal_purge,soft_purge,[]}]}, + {"4.4.4", [{load_module,emqx_acl_pgsql,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_pgsql,brutal_purge,soft_purge,[]}]}, {"4.4.3", diff --git a/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.erl b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.erl index 8f75c1279..e7826bc49 100644 --- a/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.erl +++ b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.erl @@ -45,16 +45,14 @@ check(ClientInfo = #{password := Password}, AuthResult, end, case CheckPass of ok -> - ?LOG_SENSITIVE(debug, - "[Postgres] Auth from pgsql succeeded, Client: ~p", - [ClientInfo]), + ?LOG_SENSITIVE(debug, "[Postgres] Auth succeeded, Client: ~p", [ClientInfo]), {stop, AuthResult#{is_superuser => is_superuser(Pool, SuperQuery, ClientInfo), anonymous => false, auth_result => success}}; {error, not_found} -> - ok; + ?LOG_SENSITIVE(debug, "[Postgres] Auth ignored, Client: ~p", [ClientInfo]); {error, ResultCode} -> - ?LOG_SENSITIVE(error, "[Postgres] Auth from pgsql failed: ~p", [ResultCode]), + ?LOG_SENSITIVE(error, "[Postgres] Auth failed: ~p", [ResultCode]), {stop, AuthResult#{auth_result => ResultCode, anonymous => false}} end. diff --git a/apps/emqx_auth_redis/src/emqx_acl_redis.erl b/apps/emqx_auth_redis/src/emqx_acl_redis.erl index 74a68905c..6c41261c5 100644 --- a/apps/emqx_auth_redis/src/emqx_acl_redis.erl +++ b/apps/emqx_auth_redis/src/emqx_acl_redis.erl @@ -30,7 +30,10 @@ check_acl(#{username := <<$$, _/binary>>}, _PubSub, _Topic, _AclResult, _Config) check_acl(ClientInfo, PubSub, Topic, _AclResult, #{acl_cmd := AclCmd, timeout := Timeout, type := Type, pool := Pool}) -> case emqx_auth_redis_cli:q(Pool, Type, AclCmd, ClientInfo, Timeout) of - {ok, []} -> ok; + {ok, []} -> + ?LOG_SENSITIVE(debug, + "[Redis] ACL ignored, Topic: ~p, Action: ~p for Client: ~p", + [Topic, PubSub, ClientInfo]); {ok, Rules} -> case match(ClientInfo, PubSub, Topic, Rules) of allow -> diff --git a/apps/emqx_auth_redis/src/emqx_auth_redis.app.src b/apps/emqx_auth_redis/src/emqx_auth_redis.app.src index 0fb0ecaff..04493152e 100644 --- a/apps/emqx_auth_redis/src/emqx_auth_redis.app.src +++ b/apps/emqx_auth_redis/src/emqx_auth_redis.app.src @@ -1,13 +1,13 @@ {application, emqx_auth_redis, - [{description, "EMQ X Authentication/ACL with Redis"}, - {vsn, "4.3.5"}, % strict semver, bump manually! + [{description, "EMQX Authentication/ACL with Redis"}, + {vsn, "4.3.6"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_auth_redis_sup]}, {applications, [kernel,stdlib,eredis,eredis_cluster,ecpool]}, {mod, {emqx_auth_redis_app, []}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-auth-redis"} ]} diff --git a/apps/emqx_auth_redis/src/emqx_auth_redis.appup.src b/apps/emqx_auth_redis/src/emqx_auth_redis.appup.src index c3c25571a..a2728cfee 100644 --- a/apps/emqx_auth_redis/src/emqx_auth_redis.appup.src +++ b/apps/emqx_auth_redis/src/emqx_auth_redis.appup.src @@ -1,8 +1,12 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.3.4", - [{load_module,emqx_acl_redis,brutal_purge,soft_purge,[]}]}, + [{"4.3.5", + [{load_module,emqx_acl_redis,brutal_purge,soft_purge,[]}, + {load_module,emqx_auth_redis,brutal_purge,soft_purge,[]}]}, + {"4.3.4", + [{load_module,emqx_auth_redis,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_redis,brutal_purge,soft_purge,[]}]}, {"4.3.3", [{load_module,emqx_acl_redis,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_redis,brutal_purge,soft_purge,[]}, @@ -18,8 +22,12 @@ {load_module,emqx_auth_redis,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_redis,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{"4.3.4", - [{load_module,emqx_acl_redis,brutal_purge,soft_purge,[]}]}, + [{"4.3.5", + [{load_module,emqx_acl_redis,brutal_purge,soft_purge,[]}, + {load_module,emqx_auth_redis,brutal_purge,soft_purge,[]}]}, + {"4.3.4", + [{load_module,emqx_auth_redis,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_redis,brutal_purge,soft_purge,[]}]}, {"4.3.3", [{load_module,emqx_acl_redis,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_redis,brutal_purge,soft_purge,[]}, diff --git a/apps/emqx_auth_redis/src/emqx_auth_redis.erl b/apps/emqx_auth_redis/src/emqx_auth_redis.erl index fae22f3f1..711d85667 100644 --- a/apps/emqx_auth_redis/src/emqx_auth_redis.erl +++ b/apps/emqx_auth_redis/src/emqx_auth_redis.erl @@ -47,14 +47,15 @@ check(ClientInfo = #{password := Password}, AuthResult, end, case CheckPass of ok -> + ?LOG_SENSITIVE(debug, "[Redis] Auth succeeded, Client: ~p", [ClientInfo]), IsSuperuser = is_superuser(Pool, Type, SuperCmd, ClientInfo, Timeout), {stop, AuthResult#{is_superuser => IsSuperuser, anonymous => false, auth_result => success}}; {error, not_found} -> - ok; + ?LOG_SENSITIVE(debug, "[Redis] Auth ignored, Client: ~p", [ClientInfo]); {error, ResultCode} -> - ?LOG_SENSITIVE(error, "[Redis] Auth from redis failed: ~p", [ResultCode]), + ?LOG_SENSITIVE(error, "[Redis] Auth failed: ~p", [ResultCode]), {stop, AuthResult#{auth_result => ResultCode, anonymous => false}} end. diff --git a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.app.src b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.app.src index b58be5d2e..5a6988a5a 100644 --- a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.app.src +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.app.src @@ -1,13 +1,13 @@ {application, emqx_bridge_mqtt, - [{description, "EMQ X Bridge to MQTT Broker"}, - {vsn, "4.3.8"}, % strict semver, bump manually! + [{description, "EMQX Bridge to MQTT Broker"}, + {vsn, "4.3.9"}, % strict semver, bump manually! {modules, []}, {registered, []}, {applications, [kernel,stdlib,replayq,emqtt]}, {mod, {emqx_bridge_mqtt_app, []}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-bridge-mqtt"} ]} diff --git a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.appup.src b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.appup.src index 013371592..a488502a0 100644 --- a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.appup.src +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.appup.src @@ -1,7 +1,9 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.3.7", + [{"4.3.8", + [{load_module,emqx_bridge_mqtt_actions,brutal_purge,soft_purge,[]}]}, + {"4.3.7", [{load_module,emqx_bridge_mqtt_actions,brutal_purge,soft_purge,[]}]}, {"4.3.6", [{load_module,emqx_bridge_connect,brutal_purge,soft_purge,[]}, @@ -23,7 +25,9 @@ {load_module,emqx_bridge_worker,brutal_purge,soft_purge,[]}, {load_module,emqx_bridge_mqtt_actions,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{"4.3.7", + [{"4.3.8", + [{load_module,emqx_bridge_mqtt_actions,brutal_purge,soft_purge,[]}]}, + {"4.3.7", [{load_module,emqx_bridge_mqtt_actions,brutal_purge,soft_purge,[]}]}, {"4.3.6", [{load_module,emqx_bridge_connect,brutal_purge,soft_purge,[]}, diff --git a/apps/emqx_coap/src/emqx_coap.app.src b/apps/emqx_coap/src/emqx_coap.app.src index c0648d715..c32b45425 100644 --- a/apps/emqx_coap/src/emqx_coap.app.src +++ b/apps/emqx_coap/src/emqx_coap.app.src @@ -1,13 +1,13 @@ {application, emqx_coap, - [{description, "EMQ X CoAP Gateway"}, - {vsn, "4.3.3"}, % strict semver, bump manually! + [{description, "EMQX CoAP Gateway"}, + {vsn, "4.3.4"}, % strict semver, bump manually! {modules, []}, {registered, []}, {applications, [kernel,stdlib,gen_coap]}, {mod, {emqx_coap_app, []}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-coap"} ]} diff --git a/apps/emqx_exhook/src/emqx_exhook.app.src b/apps/emqx_exhook/src/emqx_exhook.app.src index 839d83b96..f5c0664ee 100644 --- a/apps/emqx_exhook/src/emqx_exhook.app.src +++ b/apps/emqx_exhook/src/emqx_exhook.app.src @@ -1,13 +1,13 @@ %% -*- mode: erlang -*- {application, emqx_exhook, - [{description, "EMQ X Extension for Hook"}, - {vsn, "4.4.6"}, + [{description, "EMQX Extension for Hook"}, + {vsn, "4.4.7"}, {modules, []}, {registered, []}, {mod, {emqx_exhook_app, []}}, {applications, [kernel,stdlib,grpc]}, {env,[]}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}]} ]}. diff --git a/apps/emqx_exproto/src/emqx_exproto.app.src b/apps/emqx_exproto/src/emqx_exproto.app.src index ef4f7a8ff..6b508b338 100644 --- a/apps/emqx_exproto/src/emqx_exproto.app.src +++ b/apps/emqx_exproto/src/emqx_exproto.app.src @@ -1,12 +1,12 @@ {application, emqx_exproto, - [{description, "EMQ X Extension for Protocol"}, - {vsn, "4.3.15"}, %% 4.3.3 is used by ee + [{description, "EMQX Extension for Protocol"}, + {vsn, "4.3.16"}, %% 4.3.3 is used by ee {modules, []}, {registered, []}, {mod, {emqx_exproto_app, []}}, {applications, [kernel,stdlib,grpc]}, {env,[]}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}]} ]}. diff --git a/apps/emqx_lua_hook/src/emqx_lua_hook.app.src b/apps/emqx_lua_hook/src/emqx_lua_hook.app.src index 550981b70..20ed9a221 100644 --- a/apps/emqx_lua_hook/src/emqx_lua_hook.app.src +++ b/apps/emqx_lua_hook/src/emqx_lua_hook.app.src @@ -1,13 +1,13 @@ {application, emqx_lua_hook, - [{description, "EMQ X Lua Hooks"}, - {vsn, "4.3.2"}, % strict semver, bump manually! + [{description, "EMQX Lua Hooks"}, + {vsn, "4.3.3"}, % strict semver, bump manually! {modules, []}, {registered, []}, {applications, [kernel,stdlib]}, {mod, {emqx_lua_hook_app,[]}}, {env,[]}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-lua-hook"} ]} diff --git a/apps/emqx_lua_hook/src/emqx_lua_hook.appup.src b/apps/emqx_lua_hook/src/emqx_lua_hook.appup.src index c4178c620..166d5eb54 100644 --- a/apps/emqx_lua_hook/src/emqx_lua_hook.appup.src +++ b/apps/emqx_lua_hook/src/emqx_lua_hook.appup.src @@ -2,6 +2,8 @@ %% Unless you know what you are doing, DO NOT edit manually!! {VSN, [{"4.3.1",[{load_module,emqx_lua_script,brutal_purge,soft_purge,[]}]}, - {"4.3.0",[{load_module,emqx_lua_script,brutal_purge,soft_purge,[]}]}], + {"4.3.0",[{load_module,emqx_lua_script,brutal_purge,soft_purge,[]}]}, + {<<".*">>,[]}], [{"4.3.1",[{load_module,emqx_lua_script,brutal_purge,soft_purge,[]}]}, - {"4.3.0",[{load_module,emqx_lua_script,brutal_purge,soft_purge,[]}]}]}. + {"4.3.0",[{load_module,emqx_lua_script,brutal_purge,soft_purge,[]}]}, + {<<".*">>,[]}]}. diff --git a/apps/emqx_lwm2m/src/emqx_lwm2m.app.src b/apps/emqx_lwm2m/src/emqx_lwm2m.app.src index 6b0e6bd92..489fe982e 100644 --- a/apps/emqx_lwm2m/src/emqx_lwm2m.app.src +++ b/apps/emqx_lwm2m/src/emqx_lwm2m.app.src @@ -1,6 +1,6 @@ {application,emqx_lwm2m, - [{description,"EMQ X LwM2M Gateway"}, - {vsn, "4.3.8"}, % strict semver, bump manually! + [{description,"EMQX LwM2M Gateway"}, + {vsn, "4.3.9"}, % strict semver, bump manually! {modules,[]}, {registered,[emqx_lwm2m_sup]}, {applications,[kernel,stdlib,lwm2m_coap]}, diff --git a/apps/emqx_lwm2m/src/emqx_lwm2m.appup.src b/apps/emqx_lwm2m/src/emqx_lwm2m.appup.src index 793feecd1..c172ca572 100644 --- a/apps/emqx_lwm2m/src/emqx_lwm2m.appup.src +++ b/apps/emqx_lwm2m/src/emqx_lwm2m.appup.src @@ -7,14 +7,18 @@ {load_module,emqx_lwm2m_message,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_json,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_cmd_handler,brutal_purge,soft_purge,[]}]}, - {<<"4\\.3\\.[0-1]">>,[{restart_application,emqx_lwm2m}]}, - {"4.3.2", + {"4.3.6", [{load_module,emqx_lwm2m_xml_object_db,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_xml_object,brutal_purge,soft_purge,[]}, + {load_module,emqx_lwm2m_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_lwm2m_json,brutal_purge,soft_purge,[]}, + {load_module,emqx_lwm2m_cmd_handler,brutal_purge,soft_purge,[]}]}, + {"4.3.5", + [{load_module,emqx_lwm2m_xml_object_db,brutal_purge,soft_purge,[]}, + {load_module,emqx_lwm2m_xml_object,brutal_purge,soft_purge,[]}, + {load_module,emqx_lwm2m_message,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_json,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_cmd_handler,brutal_purge,soft_purge,[]}, - {load_module,emqx_lwm2m_protocol,brutal_purge,soft_purge,[]}, - {load_module,emqx_lwm2m_message,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_api,brutal_purge,soft_purge,[]}]}, {<<"4\\.3\\.[3-4]">>, [{load_module,emqx_lwm2m_xml_object_db,brutal_purge,soft_purge,[]}, @@ -24,33 +28,34 @@ {load_module,emqx_lwm2m_cmd_handler,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_protocol,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_api,brutal_purge,soft_purge,[]}]}, - {"4.3.5", + {"4.3.2", [{load_module,emqx_lwm2m_xml_object_db,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_xml_object,brutal_purge,soft_purge,[]}, - {load_module,emqx_lwm2m_message,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_json,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_cmd_handler,brutal_purge,soft_purge,[]}, - {load_module,emqx_lwm2m_api,brutal_purge,soft_purge,[]}]}, - {"4.3.6", - [{load_module,emqx_lwm2m_xml_object_db,brutal_purge,soft_purge,[]}, - {load_module,emqx_lwm2m_xml_object,brutal_purge,soft_purge,[]}, + {load_module,emqx_lwm2m_protocol,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_message,brutal_purge,soft_purge,[]}, - {load_module,emqx_lwm2m_json,brutal_purge,soft_purge,[]}, - {load_module,emqx_lwm2m_cmd_handler,brutal_purge,soft_purge,[]}]}], + {load_module,emqx_lwm2m_api,brutal_purge,soft_purge,[]}]}, + {<<"4\\.3\\.[0-1]">>,[{restart_application,emqx_lwm2m}]}, + {<<".*">>,[]}], [{"4.3.7", [{load_module,emqx_lwm2m_xml_object_db,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_xml_object,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_message,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_json,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_cmd_handler,brutal_purge,soft_purge,[]}]}, - {<<"4\\.3\\.[0-1]">>,[{restart_application,emqx_lwm2m}]}, - {"4.3.2", + {"4.3.6", [{load_module,emqx_lwm2m_xml_object_db,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_xml_object,brutal_purge,soft_purge,[]}, + {load_module,emqx_lwm2m_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_lwm2m_json,brutal_purge,soft_purge,[]}, + {load_module,emqx_lwm2m_cmd_handler,brutal_purge,soft_purge,[]}]}, + {"4.3.5", + [{load_module,emqx_lwm2m_xml_object_db,brutal_purge,soft_purge,[]}, + {load_module,emqx_lwm2m_xml_object,brutal_purge,soft_purge,[]}, + {load_module,emqx_lwm2m_message,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_json,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_cmd_handler,brutal_purge,soft_purge,[]}, - {load_module,emqx_lwm2m_protocol,brutal_purge,soft_purge,[]}, - {load_module,emqx_lwm2m_message,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_api,brutal_purge,soft_purge,[]}]}, {<<"4\\.3\\.[3-4]">>, [{load_module,emqx_lwm2m_xml_object_db,brutal_purge,soft_purge,[]}, @@ -60,16 +65,13 @@ {load_module,emqx_lwm2m_cmd_handler,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_protocol,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_api,brutal_purge,soft_purge,[]}]}, - {"4.3.5", + {"4.3.2", [{load_module,emqx_lwm2m_xml_object_db,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_xml_object,brutal_purge,soft_purge,[]}, - {load_module,emqx_lwm2m_message,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_json,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_cmd_handler,brutal_purge,soft_purge,[]}, - {load_module,emqx_lwm2m_api,brutal_purge,soft_purge,[]}]}, - {"4.3.6", - [{load_module,emqx_lwm2m_xml_object_db,brutal_purge,soft_purge,[]}, - {load_module,emqx_lwm2m_xml_object,brutal_purge,soft_purge,[]}, + {load_module,emqx_lwm2m_protocol,brutal_purge,soft_purge,[]}, {load_module,emqx_lwm2m_message,brutal_purge,soft_purge,[]}, - {load_module,emqx_lwm2m_json,brutal_purge,soft_purge,[]}, - {load_module,emqx_lwm2m_cmd_handler,brutal_purge,soft_purge,[]}]}]}. + {load_module,emqx_lwm2m_api,brutal_purge,soft_purge,[]}]}, + {<<"4\\.3\\.[0-1]">>,[{restart_application,emqx_lwm2m}]}, + {<<".*">>,[]}]}. diff --git a/apps/emqx_management/src/emqx_management.app.src b/apps/emqx_management/src/emqx_management.app.src index b505e2c69..888ff2aee 100644 --- a/apps/emqx_management/src/emqx_management.app.src +++ b/apps/emqx_management/src/emqx_management.app.src @@ -1,13 +1,13 @@ {application, emqx_management, - [{description, "EMQ X Management API and CLI"}, - {vsn, "4.4.13"}, % strict semver, bump manually! + [{description, "EMQX Management API and CLI"}, + {vsn, "4.4.14"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_management_sup]}, {applications, [kernel,stdlib,emqx_plugin_libs,minirest]}, {mod, {emqx_mgmt_app,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-management"} ]} diff --git a/apps/emqx_plugin_libs/src/emqx_plugin_libs.app.src b/apps/emqx_plugin_libs/src/emqx_plugin_libs.app.src index 2b59d095b..dc0d2b86f 100644 --- a/apps/emqx_plugin_libs/src/emqx_plugin_libs.app.src +++ b/apps/emqx_plugin_libs/src/emqx_plugin_libs.app.src @@ -1,6 +1,6 @@ {application, emqx_plugin_libs, - [{description, "EMQ X Plugin utility libs"}, - {vsn, "4.4.6"}, + [{description, "EMQX Plugin utility libs"}, + {vsn, "4.4.8"}, {modules, []}, {applications, [kernel,stdlib]}, {env, []} diff --git a/apps/emqx_plugin_libs/src/emqx_plugin_libs.appup.src b/apps/emqx_plugin_libs/src/emqx_plugin_libs.appup.src index b1042d289..f463631fd 100644 --- a/apps/emqx_plugin_libs/src/emqx_plugin_libs.appup.src +++ b/apps/emqx_plugin_libs/src/emqx_plugin_libs.appup.src @@ -1,14 +1,16 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [ - {<<"4\\.4\\.[3-5]">>, + [{"4.4.7",[{load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}]}, + {"4.4.6",[{load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}]}, + {<<"4\\.4\\.[3-5]">>, [{load_module,emqx_trace,brutal_purge,soft_purge,[]}, - {load_module,emqx_trace_api,brutal_purge,soft_purge,[]}]}, - {"4.4.2",[ - {load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}, - {load_module,emqx_trace,brutal_purge,soft_purge,[]}, - {load_module,emqx_trace_api,brutal_purge,soft_purge,[]}]}, + {load_module,emqx_trace_api,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}]}, + {"4.4.2", + [{load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}, + {load_module,emqx_trace,brutal_purge,soft_purge,[]}, + {load_module,emqx_trace_api,brutal_purge,soft_purge,[]}]}, {"4.4.1", [{load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}, {load_module,emqx_trace,brutal_purge,soft_purge,[]}, @@ -20,17 +22,16 @@ {update,emqx_slow_subs,{advanced,["4.4.0"]}}, {load_module,emqx_slow_subs_api,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [ - {<<"4\\.4\\.[3-5]">>, + [{"4.4.7",[{load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}]}, + {"4.4.6",[{load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}]}, + {<<"4\\.4\\.[3-5]">>, [{load_module,emqx_trace,brutal_purge,soft_purge,[]}, - {load_module,emqx_trace_api,brutal_purge,soft_purge,[]}]}, - {"4.4.3", - [{load_module,emqx_trace,brutal_purge,soft_purge,[]}, - {load_module,emqx_trace_api,brutal_purge,soft_purge,[]}]}, + {load_module,emqx_trace_api,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}]}, {"4.4.2", - [{load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}, - {load_module,emqx_trace,brutal_purge,soft_purge,[]}, - {load_module,emqx_trace_api,brutal_purge,soft_purge,[]}]}, + [{load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}, + {load_module,emqx_trace,brutal_purge,soft_purge,[]}, + {load_module,emqx_trace_api,brutal_purge,soft_purge,[]}]}, {"4.4.1", [{load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}, {load_module,emqx_trace,brutal_purge,soft_purge,[]}, diff --git a/apps/emqx_plugin_libs/src/emqx_plugin_libs_ssl.erl b/apps/emqx_plugin_libs/src/emqx_plugin_libs_ssl.erl index d863d6981..15588ab76 100644 --- a/apps/emqx_plugin_libs/src/emqx_plugin_libs_ssl.erl +++ b/apps/emqx_plugin_libs/src/emqx_plugin_libs_ssl.erl @@ -18,9 +18,14 @@ -export([save_files_return_opts/2, save_files_return_opts/3, + save_files_return_opts/4, save_file/2 ]). +-export([maybe_delete_dir/1, + maybe_delete_dir/2 + ]). + -type file_input_key() :: binary(). %% <<"file">> | <<"filename">> -type file_input() :: #{file_input_key() => binary()}. @@ -38,11 +43,18 @@ -type opt_key() :: keyfile | certfile | cacertfile | verify | versions | ciphers. -type opt_value() :: term(). -type opts() :: [{opt_key(), opt_value()}]. +-type dirname() :: atom() | string() | binary(). %% @doc Parse ssl options input. %% If the input contains file content, save the files in the given dir. %% Returns ssl options for Erlang's ssl application. --spec save_files_return_opts(opts_input(), atom() | string() | binary(), +-spec save_files_return_opts(opts_input(), dirname(), + string() | binary(), dirname()) -> opts(). +save_files_return_opts(Options, SubDir, ResId, ResSubdir) -> + Dir = filename:join([emqx:get_env(data_dir), SubDir, ResId, ResSubdir]), + save_files_return_opts(Options, Dir). + +-spec save_files_return_opts(opts_input(), dirname(), string() | binary()) -> opts(). save_files_return_opts(Options, SubDir, ResId) -> Dir = filename:join([emqx:get_env(data_dir), SubDir, ResId]), @@ -141,6 +153,20 @@ maybe_save_file(FileName, Content, Dir) -> error({"failed_to_save_ssl_file", FullFilename, Reason}) end. +maybe_delete_dir(SubDir, ResId) -> + Dir = filename:join([emqx:get_env(data_dir), SubDir, ResId]), + maybe_delete_dir(Dir). + +maybe_delete_dir(Dir) -> + case file:del_dir_r(Dir) of + ok -> + ok; + {error, enoent} -> + ok; + {error, Reason} -> + logger:error("Delete Resource dir ~p failed for reason: ~p", [Dir, Reason]) + end. + ensure_str(L) when is_list(L) -> L; ensure_str(B) when is_binary(B) -> unicode:characters_to_list(B, utf8). diff --git a/apps/emqx_prometheus/src/emqx_prometheus.app.src b/apps/emqx_prometheus/src/emqx_prometheus.app.src index 6e7d7400f..79bd4738a 100644 --- a/apps/emqx_prometheus/src/emqx_prometheus.app.src +++ b/apps/emqx_prometheus/src/emqx_prometheus.app.src @@ -1,13 +1,13 @@ {application, emqx_prometheus, - [{description, "Prometheus for EMQ X"}, - {vsn, "4.3.2"}, % strict semver, bump manually! + [{description, "Prometheus for EMQX"}, + {vsn, "4.3.3"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_prometheus_sup]}, {applications, [kernel,stdlib,prometheus]}, {mod, {emqx_prometheus_app,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-prometheus"} ]} diff --git a/apps/emqx_psk_file/src/emqx_psk_file.app.src b/apps/emqx_psk_file/src/emqx_psk_file.app.src index ef18c8b69..ada1410f5 100644 --- a/apps/emqx_psk_file/src/emqx_psk_file.app.src +++ b/apps/emqx_psk_file/src/emqx_psk_file.app.src @@ -1,13 +1,13 @@ {application, emqx_psk_file, [{description,"EMQX PSK Plugin from File"}, - {vsn, "4.3.1"}, % strict semver, bump manually! + {vsn, "4.3.2"}, % strict semver, bump manually! {modules,[]}, {registered,[emqx_psk_file_sup]}, {applications,[kernel,stdlib]}, {mod,{emqx_psk_file_app,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-psk-file"} ]} diff --git a/apps/emqx_psk_file/src/emqx_psk_file.appup.src b/apps/emqx_psk_file/src/emqx_psk_file.appup.src index c782000b5..6d70231ce 100644 --- a/apps/emqx_psk_file/src/emqx_psk_file.appup.src +++ b/apps/emqx_psk_file/src/emqx_psk_file.appup.src @@ -2,9 +2,11 @@ {VSN, [{"4.3.0", [{load_module,emqx_psk_file,brutal_purge,soft_purge,[]}, - {load_module,emqx_psk_file_sup,brutal_purge,soft_purge,[]}]} + {load_module,emqx_psk_file_sup,brutal_purge,soft_purge,[]}]}, + {<<".*">>,[]} ], [{"4.3.0", [{load_module,emqx_psk_file,brutal_purge,soft_purge,[]}, - {load_module,emqx_psk_file_sup,brutal_purge,soft_purge,[]}]} + {load_module,emqx_psk_file_sup,brutal_purge,soft_purge,[]}]}, + {<<".*">>,[]} ]}. diff --git a/apps/emqx_recon/src/emqx_recon.app.src b/apps/emqx_recon/src/emqx_recon.app.src index 061ed8e93..c2bbfba56 100644 --- a/apps/emqx_recon/src/emqx_recon.app.src +++ b/apps/emqx_recon/src/emqx_recon.app.src @@ -1,13 +1,13 @@ {application, emqx_recon, - [{description, "EMQ X Recon Plugin"}, - {vsn, "4.3.0"}, % strict semver, bump manually! + [{description, "EMQX Recon Plugin"}, + {vsn, "4.3.1"}, % strict semver, bump manually! {modules, []}, {registered, []}, {applications, [kernel,stdlib,recon]}, {mod, {emqx_recon,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-recon"} ]} diff --git a/apps/emqx_retainer/src/emqx_retainer.app.src b/apps/emqx_retainer/src/emqx_retainer.app.src index 941038d73..1f1e5821b 100644 --- a/apps/emqx_retainer/src/emqx_retainer.app.src +++ b/apps/emqx_retainer/src/emqx_retainer.app.src @@ -1,13 +1,13 @@ {application, emqx_retainer, - [{description, "EMQ X Retainer"}, - {vsn, "4.4.4"}, % strict semver, bump manually! + [{description, "EMQX Retainer"}, + {vsn, "4.4.5"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_retainer_sup]}, {applications, [kernel,stdlib]}, {mod, {emqx_retainer_app,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-retainer"} ]} diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine.app.src b/apps/emqx_rule_engine/src/emqx_rule_engine.app.src index af8276a86..e315403ca 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.app.src +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.app.src @@ -1,13 +1,13 @@ {application, emqx_rule_engine, - [{description, "EMQ X Rule Engine"}, - {vsn, "4.4.15"}, % strict semver, bump manually! + [{description, "EMQX Rule Engine"}, + {vsn, "4.4.16"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_rule_engine_sup, emqx_rule_registry, emqx_rule_engine_jwt_sup]}, {applications, [kernel,stdlib,rulesql,getopt,jose]}, {mod, {emqx_rule_engine_app, []}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-rule-engine"} ]} diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src b/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src index cdf8fb959..2b0493d3b 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src @@ -1,14 +1,18 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{<<"4\\.4\\.1[3-4]">>, - [{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + [{"4.4.15", + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]}, + {<<"4\\.4\\.1[3-4]">>, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]}, - {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - ]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]}, {"4.4.12", - [{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, @@ -16,7 +20,8 @@ {update,emqx_rule_engine_jwt_sup,supervisor}, {load_module,emqx_rule_engine_jwt,brutal_purge,soft_purge,[]}]}, {"4.4.11", - [{load_module,emqx_rule_engine_jwt_worker,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_jwt_worker,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]}, {update,emqx_rule_engine_jwt_sup,supervisor}, @@ -25,10 +30,10 @@ {load_module,emqx_rule_engine_sup,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}, {apply,{emqx_rule_engine_sup,ensure_api_delegator_started,[]}}, - {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - ]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]}, {"4.4.10", - [{add_module,emqx_rule_engine_jwt}, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {add_module,emqx_rule_engine_jwt}, {add_module,emqx_rule_engine_jwt_worker}, {add_module,emqx_rule_engine_jwt_sup}, {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, @@ -45,7 +50,8 @@ {load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]}, {"4.4.9", - [{add_module,emqx_rule_engine_jwt}, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {add_module,emqx_rule_engine_jwt}, {add_module,emqx_rule_engine_jwt_worker}, {add_module,emqx_rule_engine_jwt_sup}, {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, @@ -232,14 +238,18 @@ {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{<<"4\\.4\\.1[3-4]">>, - [{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + [{"4.4.15", + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]}, + {<<"4\\.4\\.1[3-4]">>, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]}, - {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - ]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]}, {"4.4.12", - [{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, @@ -247,7 +257,8 @@ {update,emqx_rule_engine_jwt_sup,supervisor}, {load_module,emqx_rule_engine_jwt,brutal_purge,soft_purge,[]}]}, {"4.4.11", - [{load_module,emqx_rule_engine_jwt_worker,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_jwt_worker,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]}, {update,emqx_rule_engine_jwt_sup,supervisor}, @@ -258,7 +269,8 @@ {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]}, {"4.4.10", - [{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, {apply,{emqx_rule_engine_sup,ensure_api_delegator_stopped,[]}}, {load_module,emqx_rule_utils,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]}, @@ -276,7 +288,8 @@ {delete_module,emqx_rule_engine_jwt_worker}, {delete_module,emqx_rule_engine_jwt}]}, {"4.4.9", - [{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, {apply,{emqx_rule_engine_sup,ensure_api_delegator_stopped,[]}}, {load_module,emqx_rule_utils,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]}, diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine.erl b/apps/emqx_rule_engine/src/emqx_rule_engine.erl index b7467a81f..03ae80bd9 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.erl @@ -89,6 +89,7 @@ try (_EXP_) catch throw : Reason -> + _EXP_ON_FAIL_, throw({_ERROR_CONTEXT_, Reason}); _EXCLASS_:_EXCPTION_:_ST_ -> _EXP_ON_FAIL_, @@ -492,13 +493,16 @@ delete_resource(ResId) -> case emqx_rule_registry:remove_resource(ResId) of ok -> _ = ?CLUSTER_CALL(clear_resource, [ModD, Destroy, ResId, ResType]), - ok; + emqx_plugin_libs_ssl:maybe_delete_dir("rules", ResId); {error, _} = R -> R end catch throw:Reason -> {error, Reason} end; not_found -> + %% always try to remove the dir as the resource might be created but have + %% not been initialized yet. + emqx_plugin_libs_ssl:maybe_delete_dir("rules", ResId), {error, not_found} end. @@ -711,7 +715,9 @@ action_instance_id(ActionName) -> iolist_to_binary([atom_to_list(ActionName), "_", integer_to_list(erlang:system_time())]). init_resource(Module, OnCreate, ResId, Config) -> - Params = ?RAISE(Module:OnCreate(ResId, Config), {Module, OnCreate}), + Params = ?RAISE(Module:OnCreate(ResId, Config), + emqx_plugin_libs_ssl:maybe_delete_dir("rules", ResId), + {Module, OnCreate}), ResParams = #resource_params{id = ResId, params = Params, status = #{is_alive => true}}, diff --git a/apps/emqx_rule_engine/src/emqx_rule_runtime.erl b/apps/emqx_rule_engine/src/emqx_rule_runtime.erl index d83731765..f8927dd05 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_runtime.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_runtime.erl @@ -265,6 +265,8 @@ take_action(#action_instance{id = Id, name = ActName, fallbacks = Fallbacks} = A emqx_rule_metrics:inc_actions_taken(Id), apply_action_func(Selected, Envs, Apply, ActName) of + badact_quiet -> + handle_action_failure(OnFailed, Id, Fallbacks, Selected, Envs, badact_quiet); {badact, Reason} -> handle_action_failure(OnFailed, Id, Fallbacks, Selected, Envs, Reason); Result -> Result @@ -320,11 +322,13 @@ wait_action_on(Id, RetryN) -> end. handle_action_failure(continue, _Id, Fallbacks, Selected, Envs = #{metadata := Metadata}, Reason) -> - ?LOG_RULE_ACTION(error, Metadata, "Continue next action, reason: ~0p", [Reason]), + Reason =/= badact_quiet andalso + ?LOG_RULE_ACTION(error, Metadata, "Continue next action, reason: ~0p", [Reason]), _ = take_actions(Fallbacks, Selected, Envs, continue), failed; handle_action_failure(stop, Id, Fallbacks, Selected, Envs = #{metadata := Metadata}, Reason) -> - ?LOG_RULE_ACTION(error, Metadata, "Skip all actions, reason: ~0p", [Reason]), + Reason =/= badact_quiet andalso + ?LOG_RULE_ACTION(error, Metadata, "Skip all actions, reason: ~0p", [Reason]), _ = take_actions(Fallbacks, Selected, Envs, continue), error({take_action_failed, {Id, Reason}}). diff --git a/apps/emqx_rule_engine/test/emqx_rule_monitor_SUITE.erl b/apps/emqx_rule_engine/test/emqx_rule_monitor_SUITE.erl index 646f2644f..1d42cacb4 100644 --- a/apps/emqx_rule_engine/test/emqx_rule_monitor_SUITE.erl +++ b/apps/emqx_rule_engine/test/emqx_rule_monitor_SUITE.erl @@ -40,6 +40,8 @@ groups() -> ]. init_per_suite(Config) -> + %% ensure alarm_handler started + {ok, _} = application:ensure_all_started(sasl), ok = ekka_mnesia:start(), ok = emqx_rule_registry:mnesia(boot), Config. diff --git a/apps/emqx_sasl/src/emqx_sasl.app.src b/apps/emqx_sasl/src/emqx_sasl.app.src index b079376d9..eb86d156b 100644 --- a/apps/emqx_sasl/src/emqx_sasl.app.src +++ b/apps/emqx_sasl/src/emqx_sasl.app.src @@ -1,13 +1,13 @@ {application, emqx_sasl, - [{description, "EMQ X SASL"}, - {vsn, "4.3.0"}, % strict semver, bump manually! + [{description, "EMQX SASL"}, + {vsn, "4.3.1"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_sasl_sup]}, {applications, [kernel,stdlib,pbkdf2]}, {mod, {emqx_sasl_app,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-sasl"} ]} diff --git a/apps/emqx_sn/src/emqx_sn.app.src b/apps/emqx_sn/src/emqx_sn.app.src index 46c2df084..7101dc00e 100644 --- a/apps/emqx_sn/src/emqx_sn.app.src +++ b/apps/emqx_sn/src/emqx_sn.app.src @@ -1,13 +1,13 @@ {application, emqx_sn, - [{description, "EMQ X MQTT-SN Plugin"}, - {vsn, "4.3.8"}, % strict semver, bump manually! + [{description, "EMQX MQTT-SN Plugin"}, + {vsn, "4.3.9"}, % strict semver, bump manually! {modules, []}, {registered, []}, {applications, [kernel,stdlib,esockd]}, {mod, {emqx_sn_app,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-sn"} ]} diff --git a/apps/emqx_sn/src/emqx_sn.appup.src b/apps/emqx_sn/src/emqx_sn.appup.src index c87bbb0a1..8f429ee6f 100644 --- a/apps/emqx_sn/src/emqx_sn.appup.src +++ b/apps/emqx_sn/src/emqx_sn.appup.src @@ -29,7 +29,8 @@ {load_module,emqx_sn_app,brutal_purge,soft_purge,[]}, {update,emqx_sn_gateway,{advanced,["4.3.2"]}} ]}, - {<<"4\\.3\\.[0-1]">>, [{restart_application,emqx_sn}]} + {<<"4\\.3\\.[0-1]">>, [{restart_application,emqx_sn}]}, + {<<".*">>,[]} ], [ {"4.3.7",[ @@ -60,5 +61,6 @@ {load_module,emqx_sn_app,brutal_purge,soft_purge,[]}, {update,emqx_sn_gateway,{advanced,["4.3.2"]}} ]}, - {<<"4\\.3\\.[0-1]">>, [{restart_application,emqx_sn}]} + {<<"4\\.3\\.[0-1]">>, [{restart_application,emqx_sn}]}, + {<<".*">>,[]} ]}. diff --git a/apps/emqx_stomp/src/emqx_stomp.app.src b/apps/emqx_stomp/src/emqx_stomp.app.src index 13afb9e67..57cf6acca 100644 --- a/apps/emqx_stomp/src/emqx_stomp.app.src +++ b/apps/emqx_stomp/src/emqx_stomp.app.src @@ -1,13 +1,13 @@ {application, emqx_stomp, - [{description, "EMQ X Stomp Protocol Plugin"}, - {vsn, "4.3.7"}, % strict semver, bump manually! + [{description, "EMQX Stomp Protocol Plugin"}, + {vsn, "4.3.8"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_stomp_sup]}, {applications, [kernel,stdlib]}, {mod, {emqx_stomp,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-stomp"} ]} diff --git a/apps/emqx_web_hook/src/emqx_web_hook.app.src b/apps/emqx_web_hook/src/emqx_web_hook.app.src index 34050490b..cf1d53984 100644 --- a/apps/emqx_web_hook/src/emqx_web_hook.app.src +++ b/apps/emqx_web_hook/src/emqx_web_hook.app.src @@ -1,13 +1,13 @@ {application, emqx_web_hook, - [{description, "EMQ X WebHook Plugin"}, - {vsn, "4.3.16"}, % strict semver, bump manually! + [{description, "EMQX WebHook Plugin"}, + {vsn, "4.3.18"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_web_hook_sup]}, {applications, [kernel,stdlib,ehttpc]}, {mod, {emqx_web_hook_app,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-web-hook"} ]} diff --git a/apps/emqx_web_hook/src/emqx_web_hook.appup.src b/apps/emqx_web_hook/src/emqx_web_hook.appup.src index b66a1eb96..cf4f5235d 100644 --- a/apps/emqx_web_hook/src/emqx_web_hook.appup.src +++ b/apps/emqx_web_hook/src/emqx_web_hook.appup.src @@ -1,7 +1,9 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.3.15", + [{"4.3.17",[{load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, + {"4.3.16",[{load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, + {"4.3.15", [{load_module,emqx_web_hook_app,brutal_purge,soft_purge,[]}, {load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, {"4.3.14", @@ -32,7 +34,9 @@ [{load_module,emqx_web_hook_app,brutal_purge,soft_purge,[]}, {load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{"4.3.15", + [{"4.3.17",[{load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, + {"4.3.16",[{load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, + {"4.3.15", [{load_module,emqx_web_hook_app,brutal_purge,soft_purge,[]}, {load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, {"4.3.14", diff --git a/build b/build index 59a237c46..febceafa2 100755 --- a/build +++ b/build @@ -304,7 +304,7 @@ make_docker() { ## This function accepts any base docker image, ## a emqx zip-image, and a image tag (for the image to be built), -## to build a docker image which runs EMQ X +## to build a docker image which runs EMQX ## ## Export below variables to quickly build an image ## diff --git a/changes/v4.4.15-en.md b/changes/v4.4.15-en.md index d040b7591..e97cdf586 100644 --- a/changes/v4.4.15-en.md +++ b/changes/v4.4.15-en.md @@ -52,5 +52,4 @@ - Fix crash when updating a client's keepalive via the HTTP API if it connects with keepalive disabled [#9933](https://github.com/emqx/emqx/pull/9933). -- Fix that `Erlang distribution` can't use TLS [#9981](https://github.com/emqx/emqx/pull/9981). - About `Erlang distribution`, See [here](https://www.emqx.io/docs/en/v4.4/advanced/cluster.html#distributed-erlang) for details. +- Delete the files directory when `resources` were deleted to avoid files leaking [#10039](https://github.com/emqx/emqx/pull/10039). diff --git a/changes/v4.4.15-zh.md b/changes/v4.4.15-zh.md index 3dcddbd0a..bc8da5f6c 100644 --- a/changes/v4.4.15-zh.md +++ b/changes/v4.4.15-zh.md @@ -2,8 +2,6 @@ ## 增强 -## 修复 - - MongoDB 库已升级至支持 MongoDB 5.1 及以上版本[#9707](https://github.com/emqx/emqx/pull/9707)。 - 现在 Dashboard 支持 HAProxy 的 Proxy Protocol 了 [9803](https://github.com/emqx/emqx/pull/9803)。 @@ -20,7 +18,7 @@ - 为认证和授权添加了更多调试日志 [#9943](https://github.com/emqx/emqx/pull/9943)。 -- 将统计数据 `live_connections.count` 和 `live_connections.max` 公开给 Prometheus [#9929](https://github.com/emqx/emqx/pull/9929). +- 将统计数据 `live_connections.count` 和 `live_connections.max` 公开给 Prometheus [#9929](https://github.com/emqx/emqx/pull/9929)。 ## 修复 @@ -53,5 +51,4 @@ - 修复当客户端连接禁用 keepalive 时, 通过 HTTP API 更新其 keepalive 会崩溃的问题 [#9933](https://github.com/emqx/emqx/pull/9933)。 -- 修复 `Erlang distribution` 无法使用 TLS 的问题 [#9981](https://github.com/emqx/emqx/pull/9981)。 - 关于 `Erlang distribution`, 详见 [这里](https://www.emqx.io/docs/zh/v4.4/advanced/cluster.html)。 +- 在 `资源` 删除时清理其文件目录以防止文件泄露 [#10039](https://github.com/emqx/emqx/pull/10039)。 diff --git a/changes/v4.4.16-en.md b/changes/v4.4.16-en.md index a853b9e95..10fe78043 100644 --- a/changes/v4.4.16-en.md +++ b/changes/v4.4.16-en.md @@ -1,6 +1,17 @@ # v4.4.16 +## Enhancements + +- Change "EMQ X" to "EMQX" from the outputs of CLIs and names of plugins [#10099](https://github.com/emqx/emqx/pull/10099). + ## Bug fixes -- Fixed MQTT bridge TLS connection could not verify wildcard certificate from peer[#10094](https://github.com/emqx/emqx/pull/10094). - +- Avoid changing the payload of MQTT messages when printing debug logs [#10091](https://github.com/emqx/emqx/pull/10091). + Before this fix, if EMQX receives a message with Payload "e\ne\nc\nc\n2\n\n\n", the log message will be as follows: + ``` + 2023-03-08T13:28:04.320622+08:00 [debug] mqttx_e34bd582@127.0.0.1:54020 [MQTT] RECV PUBLISH(Q1, R0, D0, Topic=t/1, PacketId=39467, Payload=e, e, c, c, 2, , , ) + ``` + This is the corresponding log message now: + ``` + 2023-03-08T14:26:50.935575+08:00 [debug] mqttx_e34bd582@127.0.0.1:54020 [MQTT] RECV PUBLISH(Q1, R0, D0, Topic=t/1, PacketId=39467, Payload=<<"e\ne\nc\nc\n2\n\n\n">>) + ``` diff --git a/changes/v4.4.16-zh.md b/changes/v4.4.16-zh.md index ae73cd85d..44750de95 100644 --- a/changes/v4.4.16-zh.md +++ b/changes/v4.4.16-zh.md @@ -1,5 +1,17 @@ # v4.4.16 +## 增强 + +- 从命令行的输出里和插件的名字中,把 "EMQ X" 改成 "EMQX" [#10099](https://github.com/emqx/emqx/pull/10099)。 + ## 修复 -- 修正了 MQTT 桥接 TLS 连接无法验证对端的带通配符的证书[#10094](https://github.com/emqx/emqx/pull/10094)。 +- 避免打印 debug 日志的时候改动 MQTT 消息的 Payload 的内容 [#10091](https://github.com/emqx/emqx/pull/10091)。 + 在这个修复之前,如果 EMQX 收到一个 Payload 为 "e\ne\nc\nc\n2\n\n\n" 的消息,日志打印会变成这样: + ``` + 2023-03-08T13:28:04.320622+08:00 [debug] mqttx_e34bd582@127.0.0.1:54020 [MQTT] RECV PUBLISH(Q1, R0, D0, Topic=t/1, PacketId=39467, Payload=e, e, c, c, 2, , , ) + ``` + 这是此修复之后的样子: + ``` + 2023-03-08T14:26:50.935575+08:00 [debug] mqttx_e34bd582@127.0.0.1:54020 [MQTT] RECV PUBLISH(Q1, R0, D0, Topic=t/1, PacketId=39467, Payload=<<"e\ne\nc\nc\n2\n\n\n">>) + ``` diff --git a/changes/v4.4.17-en.md b/changes/v4.4.17-en.md new file mode 100644 index 000000000..03d3f037a --- /dev/null +++ b/changes/v4.4.17-en.md @@ -0,0 +1,10 @@ +# v4.4.17 + +## Enhancements + +## Bug fixes + +- Fix that `Erlang distribution` can't use TLS [#9981](https://github.com/emqx/emqx/pull/9981). + About `Erlang distribution`, See [here](https://www.emqx.io/docs/en/v4.4/advanced/cluster.html#distributed-erlang) for details. + +- Fixed MQTT bridge TLS connection could not verify wildcard certificate from peer[#10094](https://github.com/emqx/emqx/pull/10094). diff --git a/changes/v4.4.17-zh.md b/changes/v4.4.17-zh.md new file mode 100644 index 000000000..bf83dadb1 --- /dev/null +++ b/changes/v4.4.17-zh.md @@ -0,0 +1,10 @@ +# v4.4.17 + +## 增强 + +## 修复 + +- 修复 `Erlang distribution` 无法使用 TLS 的问题 [#9981](https://github.com/emqx/emqx/pull/9981)。 + 关于 `Erlang distribution`, 详见 [这里](https://www.emqx.io/docs/zh/v4.4/advanced/cluster.html)。 + +- 修正了 MQTT 桥接 TLS 连接无法验证对端的带通配符的证书[#10094](https://github.com/emqx/emqx/pull/10094)。 diff --git a/data/relup-paths.eterm b/data/relup-paths.eterm index 1f075e888..fd93fb19b 100644 --- a/data/relup-paths.eterm +++ b/data/relup-paths.eterm @@ -63,8 +63,20 @@ <<"4.4.13">>,<<"4.4.2">>,<<"4.4.3">>,<<"4.4.4">>,<<"4.4.5">>, <<"4.4.6">>,<<"4.4.7">>,<<"4.4.8">>,<<"4.4.9">>], otp => <<"24.3.4.2-1">>}}. +{<<"4.4.15">>, + #{from_versions => + [<<"4.4.0">>,<<"4.4.1">>,<<"4.4.10">>,<<"4.4.11">>,<<"4.4.12">>, + <<"4.4.13">>,<<"4.4.14">>,<<"4.4.2">>,<<"4.4.3">>,<<"4.4.4">>,<<"4.4.5">>, + <<"4.4.6">>,<<"4.4.7">>,<<"4.4.8">>,<<"4.4.9">>], + otp => <<"24.3.4.2-1">>}}. +{<<"4.4.16">>, + #{from_versions => + [<<"4.4.0">>,<<"4.4.1">>,<<"4.4.10">>,<<"4.4.11">>,<<"4.4.12">>, + <<"4.4.13">>,<<"4.4.14">>,<<"4.4.15">>,<<"4.4.2">>,<<"4.4.3">>,<<"4.4.4">>,<<"4.4.5">>, + <<"4.4.6">>,<<"4.4.7">>,<<"4.4.8">>,<<"4.4.9">>], + otp => <<"24.3.4.2-1">>}}. {<<"4.5.0">>, #{from_versions => - [<<"4.4.10">>,<<"4.4.11">>,<<"4.4.13">>,<<"4.4.14">>,<<"4.4.8">>, + [<<"4.4.10">>,<<"4.4.11">>,<<"4.4.13">>,<<"4.4.14">>,<<"4.4.15">>,<<"4.4.16">>,<<"4.4.8">>, <<"4.4.9">>], otp => <<"24.3.4.2-1">>}}. diff --git a/deploy/charts/emqx/Chart.yaml b/deploy/charts/emqx/Chart.yaml index 092af1ab7..5adffeb03 100644 --- a/deploy/charts/emqx/Chart.yaml +++ b/deploy/charts/emqx/Chart.yaml @@ -13,8 +13,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: 4.4.14 +version: 4.4.16 # 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: 4.4.14 +appVersion: 4.4.16 diff --git a/deploy/docker/README.md b/deploy/docker/README.md index 35eb68e82..85e7715ad 100644 --- a/deploy/docker/README.md +++ b/deploy/docker/README.md @@ -243,7 +243,7 @@ Let's create a static node list cluster from docker-compose. + Start the docker-compose cluster ```bash - docker-compose -p my_emqx up -d + docker compose -p my_emqx up -d ``` + View cluster diff --git a/include/emqx_release.hrl b/include/emqx_release.hrl index bba0303d1..5e85d8510 100644 --- a/include/emqx_release.hrl +++ b/include/emqx_release.hrl @@ -29,7 +29,7 @@ -ifndef(EMQX_ENTERPRISE). --define(EMQX_RELEASE, {opensource, "4.4.14"}). +-define(EMQX_RELEASE, {opensource, "4.4.16"}). -else. diff --git a/lib-ce/emqx_dashboard/src/emqx_dashboard.app.src b/lib-ce/emqx_dashboard/src/emqx_dashboard.app.src index a870ede61..ce59a046c 100644 --- a/lib-ce/emqx_dashboard/src/emqx_dashboard.app.src +++ b/lib-ce/emqx_dashboard/src/emqx_dashboard.app.src @@ -1,13 +1,13 @@ {application, emqx_dashboard, [{description, "EMQX Web Dashboard"}, - {vsn, "4.4.14"}, % strict semver, bump manually! + {vsn, "4.4.15"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_dashboard_sup]}, {applications, [kernel,stdlib,mnesia,minirest]}, {mod, {emqx_dashboard_app,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-dashboard"} ]} diff --git a/lib-ce/emqx_modules/src/emqx_mod_rewrite.erl b/lib-ce/emqx_modules/src/emqx_mod_rewrite.erl index c21211d78..c387710f1 100644 --- a/lib-ce/emqx_modules/src/emqx_mod_rewrite.erl +++ b/lib-ce/emqx_modules/src/emqx_mod_rewrite.erl @@ -155,11 +155,11 @@ rewrite(Topic, MP, Dest, Binds) -> NewTopic. fill_client_binds(#{clientid := ClientId, username := Username}) -> - filter_client_binds([{"%c", ClientId}, {"%u", Username}]); + filter_client_binds([{"%c", bin(ClientId)}, {"%u", bin(Username)}]); fill_client_binds(#message{from = ClientId, headers = Headers}) -> Username = maps:get(username, Headers, undefined), - filter_client_binds([{"%c", ClientId}, {"%u", Username}]). + filter_client_binds([{"%c", bin(ClientId)}, {"%u", bin(Username)}]). filter_client_binds(Binds) -> lists:filter(fun({_, undefined}) -> false; @@ -184,3 +184,7 @@ validate_topic(Type, Topic) -> error:Reason -> {error, Reason} end. + +bin(S) when is_binary(S) -> S; +bin(S) when is_list(S) -> list_to_binary(S); +bin(S) when is_atom(S) -> atom_to_binary(S, utf8). diff --git a/lib-ce/emqx_modules/src/emqx_modules.app.src b/lib-ce/emqx_modules/src/emqx_modules.app.src index a2694a5e6..e1f075344 100644 --- a/lib-ce/emqx_modules/src/emqx_modules.app.src +++ b/lib-ce/emqx_modules/src/emqx_modules.app.src @@ -1,6 +1,6 @@ {application, emqx_modules, - [{description, "EMQ X Module Management"}, - {vsn, "4.4.9"}, + [{description, "EMQX Module Management"}, + {vsn, "4.4.10"}, {modules, []}, {applications, [kernel,stdlib]}, {mod, {emqx_modules_app, []}}, diff --git a/lib-ce/emqx_modules/src/emqx_modules.appup.src b/lib-ce/emqx_modules/src/emqx_modules.appup.src index 15e5acd2e..46a8822c7 100644 --- a/lib-ce/emqx_modules/src/emqx_modules.appup.src +++ b/lib-ce/emqx_modules/src/emqx_modules.appup.src @@ -1,7 +1,8 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{<<"4\\.4\\.[6-8]">>, + [{"4.4.9",[{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]}, + {<<"4\\.4\\.[6-8]">>, [{load_module,emqx_modules,brutal_purge,soft_purge,[]}, {load_module,emqx_mod_acl_internal,brutal_purge,soft_purge,[]}, {load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, @@ -38,7 +39,8 @@ {load_module,emqx_mod_sup,brutal_purge,soft_purge,[]} ]}, {<<".*">>,[]}], - [{<<"4\\.4\\.[6-8]">>, + [{"4.4.9",[{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]}, + {<<"4\\.4\\.[6-8]">>, [{load_module,emqx_modules,brutal_purge,soft_purge,[]}, {load_module,emqx_mod_acl_internal,brutal_purge,soft_purge,[]}, {load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, diff --git a/lib-ce/emqx_modules/test/emqx_mod_delayed_SUITE.erl b/lib-ce/emqx_modules/test/emqx_mod_delayed_SUITE.erl index 715e541f0..e00387494 100644 --- a/lib-ce/emqx_modules/test/emqx_mod_delayed_SUITE.erl +++ b/lib-ce/emqx_modules/test/emqx_mod_delayed_SUITE.erl @@ -58,13 +58,13 @@ set_special_configs(_App) -> t_load_case(_) -> UnHooks = emqx_hooks:lookup('message.publish'), ?assertEqual([], UnHooks), - ok = emqx_mod_delayed:load([]), + _ = emqx_mod_delayed:load([]), Hooks = emqx_hooks:lookup('message.publish'), ?assertEqual(1, length(Hooks)), ok. t_delayed_message(_) -> - ok = emqx_mod_delayed:load([]), + _ = emqx_mod_delayed:load([]), DelayedMsg = emqx_message:make(?MODULE, 1, <<"$delayed/1/publish">>, <<"delayed_m">>), ?assertEqual({stop, DelayedMsg#message{topic = <<"publish">>, headers = #{allow_publish => false}}}, on_message_publish(DelayedMsg)), @@ -81,7 +81,7 @@ t_delayed_message(_) -> ok = emqx_mod_delayed:unload([]). t_banned_delayed(_) -> - ok = emqx_mod_delayed:load([]), + _ = emqx_mod_delayed:load([]), ClientId1 = <<"bc1">>, ClientId2 = <<"bc2">>, @@ -119,6 +119,7 @@ t_banned_delayed(_) -> snabbkaffe:stop(), emqx_banned:delete(Who), + timer:sleep(500), EmptyKey = mnesia:dirty_all_keys(emqx_mod_delayed), ?assertEqual([], EmptyKey), ok = emqx_mod_delayed:unload([]). diff --git a/lib-ce/emqx_telemetry/src/emqx_telemetry.app.src b/lib-ce/emqx_telemetry/src/emqx_telemetry.app.src index 52bfe7b10..ed1174653 100644 --- a/lib-ce/emqx_telemetry/src/emqx_telemetry.app.src +++ b/lib-ce/emqx_telemetry/src/emqx_telemetry.app.src @@ -1,13 +1,13 @@ {application, emqx_telemetry, - [{description, "EMQ X Telemetry"}, - {vsn, "4.3.4"}, % strict semver, bump manually! + [{description, "EMQX Telemetry"}, + {vsn, "4.3.6"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_telemetry_sup]}, {applications, [kernel,stdlib]}, {mod, {emqx_telemetry_app,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx-telemetry"} ]} diff --git a/lib-ce/emqx_telemetry/src/emqx_telemetry.appup.src b/lib-ce/emqx_telemetry/src/emqx_telemetry.appup.src index 3d079e839..3e5d0bcdf 100644 --- a/lib-ce/emqx_telemetry/src/emqx_telemetry.appup.src +++ b/lib-ce/emqx_telemetry/src/emqx_telemetry.appup.src @@ -1,11 +1,9 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.3.3",[{load_module,emqx_telemetry,brutal_purge,soft_purge,[]}]}, - {<<"4\\.3\\.[0-2]">>, + [{<<"4\\.3\\.[0-4]">>, [{load_module,emqx_telemetry,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{"4.3.3",[{load_module,emqx_telemetry,brutal_purge,soft_purge,[]}]}, - {<<"4\\.3\\.[0-2]">>, + [{<<"4\\.3\\.[0-4]">>, [{load_module,emqx_telemetry,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}]}. diff --git a/lib-ce/emqx_telemetry/src/emqx_telemetry.erl b/lib-ce/emqx_telemetry/src/emqx_telemetry.erl index 9935d5005..aa8acaab7 100644 --- a/lib-ce/emqx_telemetry/src/emqx_telemetry.erl +++ b/lib-ce/emqx_telemetry/src/emqx_telemetry.erl @@ -75,7 +75,7 @@ enabled :: undefined | boolean(), - url :: string(), + url :: undefined | string(), report_interval :: undefined | non_neg_integer(), @@ -90,6 +90,8 @@ -define(TELEMETRY, emqx_telemetry). +-define(HTTP_TIMEOUT, 10). + %%-------------------------------------------------------------------- %% Mnesia bootstrap %%-------------------------------------------------------------------- @@ -115,19 +117,19 @@ stop() -> gen_server:stop(?MODULE). enable() -> - gen_server:call(?MODULE, enable). + gen_server:call(?MODULE, enable, infinity). disable() -> - gen_server:call(?MODULE, disable). + gen_server:call(?MODULE, disable, infinity). is_enabled() -> - gen_server:call(?MODULE, is_enabled). + gen_server:call(?MODULE, is_enabled, infinity). get_uuid() -> - gen_server:call(?MODULE, get_uuid). + gen_server:call(?MODULE, get_uuid, infinity). get_telemetry() -> - gen_server:call(?MODULE, get_telemetry). + gen_server:call(?MODULE, get_telemetry, infinity). %%-------------------------------------------------------------------- %% gen_server callbacks @@ -353,15 +355,18 @@ report_telemetry(State = #state{url = URL}) -> Data = get_telemetry(State), case emqx_json:safe_encode(Data) of {ok, Bin} -> - httpc_request(post, URL, [], Bin), + _ = httpc_request(post, URL, [], Bin), ?tp(debug, telemetry_data_reported, #{}); {error, Reason} -> %% debug? why? ?tp(debug, telemetry_data_encode_error, #{data => Data, reason => Reason}) end. +%% we might set url = undefined in testcase +httpc_request(_, undefined, _, _) -> + ignore; httpc_request(Method, URL, Headers, Body) -> - HTTPOptions = [{timeout, timer:seconds(10)}, {ssl, [{verify, verify_none}]}], + HTTPOptions = [{timeout, timer:seconds(?HTTP_TIMEOUT)}, {ssl, [{verify, verify_none}]}], Options = [], httpc:request(Method, {URL, Headers, "application/json", Body}, HTTPOptions, Options). diff --git a/lib-ce/emqx_telemetry/test/emqx_telemetry_SUITE.erl b/lib-ce/emqx_telemetry/test/emqx_telemetry_SUITE.erl index ec9a764ff..d018ad3e9 100644 --- a/lib-ce/emqx_telemetry/test/emqx_telemetry_SUITE.erl +++ b/lib-ce/emqx_telemetry/test/emqx_telemetry_SUITE.erl @@ -42,7 +42,7 @@ t_uuid(_) -> {ok, UUID2} = emqx_telemetry:get_uuid(), emqx_telemetry:stop(), emqx_telemetry:start_link([{enabled, true}, - {url, "https://telemetry.emqx.io/api/telemetry"}, + {url, undefined}, {report_interval, 7 * 24 * 60 * 60}]), {ok, UUID3} = emqx_telemetry:get_uuid(), ?assertEqual(UUID2, UUID3). @@ -80,7 +80,7 @@ t_send_after_enable(_) -> ok = snabbkaffe:start_trace(), try ok = emqx_telemetry:enable(), - ?assertMatch({ok, _}, ?block_until(#{?snk_kind := telemetry_data_reported}, 2000, 100)) + ?assertMatch({ok, _}, ?block_until(#{?snk_kind := telemetry_data_reported}, 15000, 100)) after ok = snabbkaffe:stop() end. diff --git a/rebar.config.erl b/rebar.config.erl index 9485bb38e..b3e4bf5bb 100644 --- a/rebar.config.erl +++ b/rebar.config.erl @@ -186,9 +186,9 @@ distro() -> _ -> false end. -emqx_description(cloud, true) -> "EMQ X Enterprise"; -emqx_description(cloud, false) -> "EMQ X Broker"; -emqx_description(edge, _) -> "EMQ X Edge". +emqx_description(cloud, true) -> "EMQX Enterprise"; +emqx_description(cloud, false) -> "EMQX Broker"; +emqx_description(edge, _) -> "EMQX Edge". overlay_vars(_RelType, PkgType, true) -> ee_overlay_vars(PkgType); diff --git a/scripts/buildx.sh b/scripts/buildx.sh index 5df4cc3fe..b1134b964 100755 --- a/scripts/buildx.sh +++ b/scripts/buildx.sh @@ -15,10 +15,10 @@ set -euo pipefail help() { echo echo "-h|--help: To display this usage information" - echo "--profile : EMQ X profile to build, e.g. emqx, emqx-edge" + echo "--profile : EMQX profile to build, e.g. emqx, emqx-edge" echo "--pkgtype zip|pkg: Specify which package to build, zip for .zip and pkg for .rpm or .deb" - echo "--arch amd64|arm64: Target arch to build the EMQ X package for" - echo "--src_dir : EMQ X source ode in this dir, default to PWD" + echo "--arch amd64|arm64: Target arch to build the EMQX package for" + echo "--src_dir : EMQX source ode in this dir, default to PWD" echo "--builder : Builder image to pull" echo " E.g. ghcr.io/emqx/emqx-builder/4.4-20:24.3.4.2-1-debian11" echo "--ssh: Pass ssh agent to the builder." diff --git a/scripts/get-dashboard.sh b/scripts/get-dashboard.sh index b4d08c216..b194074bf 100755 --- a/scripts/get-dashboard.sh +++ b/scripts/get-dashboard.sh @@ -9,12 +9,12 @@ PKG_VSN="${PKG_VSN:-$(./pkg-vsn.sh)}" case "${PKG_VSN}" in 4.3*) EMQX_CE_DASHBOARD_VERSION='v4.3.12' - EMQX_EE_DASHBOARD_VERSION='v4.3.27' + EMQX_EE_DASHBOARD_VERSION='v4.3.30' ;; 4.4*) # keep the above 4.3 untouched, otherwise conflicts! - EMQX_CE_DASHBOARD_VERSION='v4.4.8' - EMQX_EE_DASHBOARD_VERSION='v4.4.18' + EMQX_CE_DASHBOARD_VERSION='v4.4.10' + EMQX_EE_DASHBOARD_VERSION='v4.4.22' ;; *) echo "Unsupported version $PKG_VSN" >&2 diff --git a/src/emqx.app.src b/src/emqx.app.src index 4c082b971..715d9d554 100644 --- a/src/emqx.app.src +++ b/src/emqx.app.src @@ -1,12 +1,12 @@ {application, emqx, [{id, "emqx"}, - {description, "EMQ X"}, + {description, "EMQX"}, %% Note: this version is not the same as the release version! This %% is simply the emqx `application' version, which is separate from %% the emqx `release' version, which in turn is comprised of several %% apps, one of which is this. See `emqx_release.hrl' for more %% info. - {vsn, "4.4.15"}, % strict semver, bump manually! + {vsn, "4.4.16"}, % strict semver, bump manually! {modules, []}, {registered, []}, {applications, [ kernel @@ -21,7 +21,7 @@ {mod, {emqx_app,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, - {maintainers, ["EMQ X Team "]}, + {maintainers, ["EMQX Team "]}, {links, [{"Homepage", "https://emqx.io/"}, {"Github", "https://github.com/emqx/emqx"} ]} diff --git a/src/emqx.appup.src b/src/emqx.appup.src index 3711c84d5..8dc543d4d 100644 --- a/src/emqx.appup.src +++ b/src/emqx.appup.src @@ -1,7 +1,12 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.4.14", + [{"4.4.15", + [{load_module,emqx,brutal_purge,soft_purge,[]}, + {load_module,emqx_packet,brutal_purge,soft_purge,[]}, + {load_module,emqx_relup,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {"4.4.14", [{load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, {load_module,emqx_broker,brutal_purge,soft_purge,[]}, @@ -494,7 +499,12 @@ {apply,{application,set_env, [gen_rpc,insecure_auth_fallback_allowed,true]}}]}, {<<".*">>,[]}], - [{"4.4.14", + [{"4.4.15", + [{load_module,emqx,brutal_purge,soft_purge,[]}, + {load_module,emqx_packet,brutal_purge,soft_purge,[]}, + {load_module,emqx_relup,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {"4.4.14", [{load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, {load_module,emqx_broker,brutal_purge,soft_purge,[]}, diff --git a/src/emqx.erl b/src/emqx.erl index 85d154023..2d6894374 100644 --- a/src/emqx.erl +++ b/src/emqx.erl @@ -20,7 +20,7 @@ -include("logger.hrl"). -include("types.hrl"). --logger_header("[EMQ X]"). +-logger_header("[EMQX]"). %% Start/Stop the application -export([ start/0 diff --git a/src/emqx_app.erl b/src/emqx_app.erl index 6efa5325d..abbe755f0 100644 --- a/src/emqx_app.erl +++ b/src/emqx_app.erl @@ -156,7 +156,10 @@ get_description() -> case os:getenv("EMQX_DESCRIPTION") of false -> Descr0; "" -> Descr0; - Str -> string:strip(Str, both, $\n) + Str -> + %% We replace the "EMQ X" to "EMQX" incase the description has been + %% loaded to the OS Envs and cannot be changed without reboot. + replace_emq_x_to_emqx(string:strip(Str, both, $\n)) end. get_release() -> @@ -183,3 +186,6 @@ start_autocluster() -> ekka:callback(reboot, fun emqx:reboot/0), _ = ekka:autocluster(?APP), %% returns 'ok' or a pid or 'any()' as in spec ok. + +replace_emq_x_to_emqx(Str) -> + re:replace(Str, "\\bEMQ X\\b", "EMQX", [{return,list}]). diff --git a/src/emqx_packet.erl b/src/emqx_packet.erl index d91ac6f44..293d32121 100644 --- a/src/emqx_packet.erl +++ b/src/emqx_packet.erl @@ -438,7 +438,7 @@ format_variable(undefined, _) -> format_variable(Variable, undefined) -> format_variable(Variable); format_variable(Variable, Payload) -> - [format_variable(Variable), ", Payload=", Payload]. + [format_variable(Variable), io_lib:format(", Payload=~0p", [Payload])]. format_variable(#mqtt_packet_connect{ proto_ver = ProtoVer, diff --git a/src/emqx_relup.erl b/src/emqx_relup.erl index dc453e7ff..ba74d7b46 100644 --- a/src/emqx_relup.erl +++ b/src/emqx_relup.erl @@ -33,6 +33,7 @@ post_release_upgrade(FromRelVsn, _) -> ?INFO("emqx has been upgraded from ~s to ~s!", [FromRelVsn, CurrRelVsn]), maybe_refresh_jwt_module(FromRelVsn), _ = maybe_restart_oracle_resources(FromRelVsn), + _ = maybe_start_schema_registry(FromRelVsn), reload_components(). %% What to do after downgraded to an old release vsn. @@ -98,17 +99,9 @@ maybe_refresh_jwt_module(_) -> -ifdef(EMQX_ENTERPRISE). maybe_restart_oracle_resources("4.4." ++ PatchVsn0) -> - try - case list_to_integer(PatchVsn0) of - PatchVsn when PatchVsn =< 14 -> - emqx_rule_engine:start_all_resources_of_type(backend_oracle); - _ -> ok - end - catch - Err:Reason:ST -> - ?INFO("maybe_restart_oracle_resources failed: ~p", [{Err, Reason, ST}]), - ok - end; + do_when_vsn_lte(PatchVsn0, 14, ?FUNCTION_NAME, fun() -> + emqx_rule_engine:start_all_resources_of_type(backend_oracle) + end); maybe_restart_oracle_resources(_) -> ok. @@ -118,3 +111,32 @@ maybe_restart_oracle_resources(_) -> ok. -endif. + +-ifdef(EMQX_ENTERPRISE). +maybe_start_schema_registry("4.4." ++ PatchVsn0) -> + do_when_vsn_lte(PatchVsn0, 15, ?FUNCTION_NAME, fun() -> + emqx_plugins:load(emqx_schema_registry) + end); +maybe_start_schema_registry(_) -> + ok. +-else. +maybe_start_schema_registry(_) -> + ok. +-endif. + +-ifdef(EMQX_ENTERPRISE). +do_when_vsn_lte(SrcVsnStr, TargetVsn, ActionName, Action) -> + try + case list_to_integer(SrcVsnStr) of + Vsn when Vsn =< TargetVsn -> + ?INFO("doing ~p", [ActionName]), + _ = Action(), + ok; + _ -> ok + end + catch + Err:Reason:ST -> + ?INFO("~p failed: ~p", [ActionName, {Err, Reason, ST}]), + ok + end. +-endif. diff --git a/src/emqx_vm.erl b/src/emqx_vm.erl index b62dba96a..295e4d927 100644 --- a/src/emqx_vm.erl +++ b/src/emqx_vm.erl @@ -380,7 +380,7 @@ read_otp_version() -> Filename = filename:join([ReleasesDir, emqx_app:get_release(), "BUILT_ON"]), case file:read_file(Filename) of {ok, BuiltOn} -> - %% running on EQMX release + %% running on EMQX release BuiltOn; {error, enoent} -> OtpMajor = erlang:system_info(otp_release), diff --git a/test/emqx_plugins_SUITE_data/emqx_mini_plugin/src/emqx_mini_plugin.app.src b/test/emqx_plugins_SUITE_data/emqx_mini_plugin/src/emqx_mini_plugin.app.src index 413b4e1fd..28a7ae5cb 100644 --- a/test/emqx_plugins_SUITE_data/emqx_mini_plugin/src/emqx_mini_plugin.app.src +++ b/test/emqx_plugins_SUITE_data/emqx_mini_plugin/src/emqx_mini_plugin.app.src @@ -1,5 +1,5 @@ {application, emqx_mini_plugin, - [{description, "An EMQ X plugin for testcase"}, + [{description, "An EMQX plugin for testcase"}, {vsn, "0.1"}, {modules, []}, {registered, []},