From 7407b1b6edc9641aebc4541c285f0a67cb22abee Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Tue, 14 Mar 2023 14:42:00 +0800 Subject: [PATCH 1/2] fix: topic rewrite failed if clientid is an atom() --- lib-ce/emqx_modules/src/emqx_mod_rewrite.erl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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). From 0c670262e7537126ba051cc5fe54c7ce41d14c9a Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Tue, 14 Mar 2023 16:22:35 +0800 Subject: [PATCH 2/2] chore: update emqx_modules.appup.src --- lib-ce/emqx_modules/src/emqx_modules.appup.src | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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,[]},