From afa4c7d341038fff926027f80e4c455248ad9f5a Mon Sep 17 00:00:00 2001 From: William Yang Date: Thu, 13 Jan 2022 11:41:45 +0100 Subject: [PATCH 1/3] ci(mac): cache otp install only only cache otp installation instead of the entire kerl dir to save cache spaces --- .github/workflows/build_packages.yaml | 9 +++++---- .github/workflows/build_slim_packages.yaml | 10 +++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build_packages.yaml b/.github/workflows/build_packages.yaml index 3ab1f7086..e033832ed 100644 --- a/.github/workflows/build_packages.yaml +++ b/.github/workflows/build_packages.yaml @@ -126,8 +126,6 @@ jobs: path: source/_packages/${{ matrix.profile }}/. mac: - runs-on: macos-10.15 - needs: prepare strategy: @@ -137,6 +135,9 @@ jobs: - 23.2.7.2-emqx-3 exclude: - profile: emqx-edge + macos: + - macos-10.15 + runs-on: ${{ matrix.macos }} steps: - uses: actions/download-artifact@v2 @@ -154,8 +155,8 @@ jobs: - uses: actions/cache@v2 id: cache with: - path: ~/.kerl - key: erl${{ matrix.erl_otp }}-macos10.15 + path: ~/.kerl/${{ matrix.erl_otp }} + key: otp-install-${{ matrix.erl_otp }}-${{ matrix.macos }} - name: build erlang if: steps.cache.outputs.cache-hit != 'true' timeout-minutes: 60 diff --git a/.github/workflows/build_slim_packages.yaml b/.github/workflows/build_slim_packages.yaml index 85ca9b62f..c1c7ae62d 100644 --- a/.github/workflows/build_slim_packages.yaml +++ b/.github/workflows/build_slim_packages.yaml @@ -53,13 +53,13 @@ jobs: path: _packages/**/*.zip mac: - runs-on: macos-10.15 - strategy: matrix: erl_otp: - 23.2.7.2-emqx-3 - + macos: + - macos-11 + runs-on: ${{ matrix.macos }} steps: - uses: actions/checkout@v1 - name: prepare @@ -81,8 +81,8 @@ jobs: - uses: actions/cache@v2 id: cache with: - path: ~/.kerl - key: erl${{ matrix.erl_otp }}-macos10.15 + path: ~/.kerl/${{ matrix.erl_otp }} + key: otp-install-${{ matrix.erl_otp }}-${{ matrix.macos }} - name: build erlang if: steps.cache.outputs.cache-hit != 'true' timeout-minutes: 60 From 70c6ac4e0d1d986c66744f163e0f38a075c62589 Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Wed, 19 Jan 2022 19:15:21 +0800 Subject: [PATCH 2/3] fix(rule): deny POST rules or resources with empty ids --- .../src/emqx_rule_engine_api.erl | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl b/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl index 4fa3b8aa3..80de9be45 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl @@ -211,20 +211,32 @@ test_rule_sql(Params) -> end. do_create_rule(Params) -> - case emqx_rule_engine:create_rule(parse_rule_params(Params)) of - {ok, Rule} -> return({ok, record_to_map(Rule)}); - {error, {action_not_found, ActionName}} -> - return({error, 400, ?ERR_NO_ACTION(ActionName)}); + case parse_rule_params(Params) of + {ok, ParsedParams} -> + case emqx_rule_engine:create_rule(ParsedParams) of + {ok, Rule} -> return({ok, record_to_map(Rule)}); + {error, {action_not_found, ActionName}} -> + return({error, 400, ?ERR_NO_ACTION(ActionName)}); + {error, Reason} -> + ?LOG(error, "~p failed: ~0p", [?FUNCTION_NAME, Reason]), + return({error, 400, ?ERR_BADARGS(Reason)}) + end; {error, Reason} -> ?LOG(error, "~p failed: ~0p", [?FUNCTION_NAME, Reason]), return({error, 400, ?ERR_BADARGS(Reason)}) end. update_rule(#{id := Id}, Params) -> - case emqx_rule_engine:update_rule(parse_rule_params(Params, #{id => Id})) of - {ok, Rule} -> return({ok, record_to_map(Rule)}); - {error, {not_found, RuleId}} -> - return({error, 400, ?ERR_NO_RULE(RuleId)}); + case parse_rule_params(Params, #{id => Id}) of + {ok, ParsedParams} -> + case emqx_rule_engine:update_rule(ParsedParams) of + {ok, Rule} -> return({ok, record_to_map(Rule)}); + {error, {not_found, RuleId}} -> + return({error, 400, ?ERR_NO_RULE(RuleId)}); + {error, Reason} -> + ?LOG(error, "~p failed: ~0p", [?FUNCTION_NAME, Reason]), + return({error, 400, ?ERR_BADARGS(Reason)}) + end; {error, Reason} -> ?LOG(error, "~p failed: ~0p", [?FUNCTION_NAME, Reason]), return({error, 400, ?ERR_BADARGS(Reason)}) @@ -481,7 +493,9 @@ printable_actions(Actions) -> parse_rule_params(Params) -> parse_rule_params(Params, #{description => <<"">>}). parse_rule_params([], Rule) -> - Rule; + {ok, Rule}; +parse_rule_params([{<<"id">>, <<>>} | _], _) -> + {error, {empty_string_not_allowed, id}}; parse_rule_params([{<<"id">>, Id} | Params], Rule) -> parse_rule_params(Params, Rule#{id => Id}); parse_rule_params([{<<"rawsql">>, RawSQL} | Params], Rule) -> @@ -516,6 +530,8 @@ parse_resource_params(Params) -> parse_resource_params(Params, #{config => #{}, description => <<"">>}). parse_resource_params([], Res) -> {ok, Res}; +parse_resource_params([{<<"id">>, <<>>} | _], _Res) -> + {error, {empty_string_not_allowed, id}}; parse_resource_params([{<<"id">>, Id} | Params], Res) -> parse_resource_params(Params, Res#{id => Id}); parse_resource_params([{<<"type">>, ResourceType} | Params], Res) -> From 2d00373e4953c3a51714a166f91a5d5bd481508b Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Wed, 19 Jan 2022 19:51:25 +0800 Subject: [PATCH 3/3] fix(appup): update appup file for emqx_rule_engine_api --- .../src/emqx_rule_engine.appup.src | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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 be586e4ea..fffc6f0f6 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src @@ -6,6 +6,7 @@ , {load_module,emqx_rule_events,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} + , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} ]}, {"4.3.5", [ {update, emqx_rule_metrics, {advanced, ["4.3.5"]}} @@ -13,6 +14,7 @@ , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} + , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} ]}, {"4.3.4", [ {update, emqx_rule_metrics, {advanced, ["4.3.4"]}} @@ -20,6 +22,7 @@ , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} + , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} ]}, {"4.3.3", [ {update, emqx_rule_metrics, {advanced, ["4.3.3"]}} @@ -28,6 +31,7 @@ , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} + , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} ]}, {"4.3.2", [ {update, emqx_rule_metrics, {advanced, ["4.3.2"]}} @@ -37,6 +41,7 @@ , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} + , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} ]}, {"4.3.1", [ {update, emqx_rule_metrics, {advanced, ["4.3.1"]}} @@ -46,6 +51,7 @@ , {apply,{emqx_stats,cancel_update,[rule_registery_stats]}} , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} + , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} ]}, {"4.3.0", [ {update, emqx_rule_metrics, {advanced, ["4.3.0"]}} @@ -56,6 +62,7 @@ , {apply,{emqx_stats,cancel_update,[rule_registery_stats]}} , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} + , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} ]}, {<<".*">>, []} ], @@ -65,6 +72,7 @@ , {load_module,emqx_rule_events,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} + , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} ]}, {"4.3.5", [ {update, emqx_rule_metrics, {advanced, ["4.3.5"]}} @@ -72,6 +80,7 @@ , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} + , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} ]}, {"4.3.4", [ {update, emqx_rule_metrics, {advanced, ["4.3.4"]}} @@ -79,6 +88,7 @@ , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} + , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} ]}, {"4.3.3", [ {update, emqx_rule_metrics, {advanced, ["4.3.3"]}} @@ -87,6 +97,7 @@ , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} + , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} ]}, {"4.3.2", [ {update, emqx_rule_metrics, {advanced, ["4.3.2"]}} @@ -96,6 +107,7 @@ , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} + , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} ]}, {"4.3.1", [ {update, emqx_rule_metrics, {advanced, ["4.3.1"]}} @@ -105,6 +117,7 @@ , {apply,{emqx_stats,cancel_update,[rule_registery_stats]}} , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} + , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} ]}, {"4.3.0", [ {update, emqx_rule_metrics, {advanced, ["4.3.0"]}} @@ -115,6 +128,7 @@ , {apply,{emqx_stats,cancel_update,[rule_registery_stats]}} , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} + , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} ]}, {<<".*">>, []} ]