Merge pull request #8463 from DDDHuang/rewrite_log
chore(rewrite): add some log
This commit is contained in:
commit
6cc39dfa23
|
@ -20,6 +20,7 @@
|
||||||
|
|
||||||
-include_lib("emqx/include/emqx.hrl").
|
-include_lib("emqx/include/emqx.hrl").
|
||||||
-include_lib("emqx/include/emqx_mqtt.hrl").
|
-include_lib("emqx/include/emqx_mqtt.hrl").
|
||||||
|
-include_lib("emqx/include/logger.hrl").
|
||||||
|
|
||||||
-ifdef(TEST).
|
-ifdef(TEST).
|
||||||
-export([ compile/1
|
-export([ compile/1
|
||||||
|
@ -45,6 +46,7 @@
|
||||||
|
|
||||||
load(RawRules) ->
|
load(RawRules) ->
|
||||||
{PubRules, SubRules} = compile(RawRules),
|
{PubRules, SubRules} = compile(RawRules),
|
||||||
|
?LOG(info, "[Rewrite] Load rule pub ~0p sub ~0p", [PubRules, SubRules]),
|
||||||
emqx_hooks:put('client.subscribe', {?MODULE, rewrite_subscribe, [SubRules]}, 1000),
|
emqx_hooks:put('client.subscribe', {?MODULE, rewrite_subscribe, [SubRules]}, 1000),
|
||||||
emqx_hooks:put('client.unsubscribe', {?MODULE, rewrite_unsubscribe, [SubRules]}, 1000),
|
emqx_hooks:put('client.unsubscribe', {?MODULE, rewrite_unsubscribe, [SubRules]}, 1000),
|
||||||
emqx_hooks:put('message.publish', {?MODULE, rewrite_publish, [PubRules]}, 1000).
|
emqx_hooks:put('message.publish', {?MODULE, rewrite_publish, [PubRules]}, 1000).
|
||||||
|
@ -62,6 +64,7 @@ rewrite_publish(Message = #message{topic = Topic}, Rules) ->
|
||||||
{ok, Message#message{topic = match_and_rewrite(Topic, Rules, Binds)}}.
|
{ok, Message#message{topic = match_and_rewrite(Topic, Rules, Binds)}}.
|
||||||
|
|
||||||
unload(_) ->
|
unload(_) ->
|
||||||
|
?LOG(info, "[Rewrite] Unload"),
|
||||||
emqx_hooks:del('client.subscribe', {?MODULE, rewrite_subscribe}),
|
emqx_hooks:del('client.subscribe', {?MODULE, rewrite_subscribe}),
|
||||||
emqx_hooks:del('client.unsubscribe', {?MODULE, rewrite_unsubscribe}),
|
emqx_hooks:del('client.unsubscribe', {?MODULE, rewrite_unsubscribe}),
|
||||||
emqx_hooks:del('message.publish', {?MODULE, rewrite_publish}).
|
emqx_hooks:del('message.publish', {?MODULE, rewrite_publish}).
|
||||||
|
@ -93,16 +96,19 @@ match_and_rewrite(Topic, [{rewrite, Filter, MP, Dest} | Rules], Binds) ->
|
||||||
end.
|
end.
|
||||||
|
|
||||||
rewrite(Topic, MP, Dest, Binds) ->
|
rewrite(Topic, MP, Dest, Binds) ->
|
||||||
case re:run(Topic, MP, [{capture, all_but_first, list}]) of
|
NewTopic =
|
||||||
{match, Captured} ->
|
case re:run(Topic, MP, [{capture, all_but_first, list}]) of
|
||||||
Vars = lists:zip(["\\$" ++ integer_to_list(I)
|
{match, Captured} ->
|
||||||
|| I <- lists:seq(1, length(Captured))], Captured),
|
Vars = lists:zip(["\\$" ++ integer_to_list(I)
|
||||||
iolist_to_binary(lists:foldl(
|
|| I <- lists:seq(1, length(Captured))], Captured),
|
||||||
fun({Var, Val}, Acc) ->
|
iolist_to_binary(lists:foldl(
|
||||||
re:replace(Acc, Var, Val, [global])
|
fun({Var, Val}, Acc) ->
|
||||||
end, Dest, Binds ++ Vars));
|
re:replace(Acc, Var, Val, [global])
|
||||||
nomatch -> Topic
|
end, Dest, Binds ++ Vars));
|
||||||
end.
|
nomatch -> Topic
|
||||||
|
end,
|
||||||
|
?LOG(debug, "[Rewrite] topic ~0p, params: ~0p dest topic: ~p", [Topic, Binds, NewTopic]),
|
||||||
|
NewTopic.
|
||||||
|
|
||||||
fill_client_binds(#{clientid := ClientId, username := Username}) ->
|
fill_client_binds(#{clientid := ClientId, username := Username}) ->
|
||||||
filter_client_binds([{"%c", ClientId}, {"%u", Username}]);
|
filter_client_binds([{"%c", ClientId}, {"%u", Username}]);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{application, emqx_modules,
|
{application, emqx_modules,
|
||||||
[{description, "EMQ X Module Management"},
|
[{description, "EMQ X Module Management"},
|
||||||
{vsn, "4.3.7"},
|
{vsn, "4.3.8"},
|
||||||
{modules, []},
|
{modules, []},
|
||||||
{applications, [kernel,stdlib]},
|
{applications, [kernel,stdlib]},
|
||||||
{mod, {emqx_modules_app, []}},
|
{mod, {emqx_modules_app, []}},
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
%% -*- mode: erlang -*-
|
%% -*- mode: erlang -*-
|
||||||
%% Unless you know what you are doing, DO NOT edit manually!!
|
%% Unless you know what you are doing, DO NOT edit manually!!
|
||||||
{VSN,
|
{VSN,
|
||||||
[{"4.3.6",[{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]},
|
[{"4.3.7",[{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]},
|
||||||
|
{"4.3.6",[{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.5",
|
{"4.3.5",
|
||||||
[{load_module,emqx_modules,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_modules,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]},
|
||||||
|
@ -31,7 +32,8 @@
|
||||||
{load_module,emqx_mod_api_topic_metrics,brutal_purge,soft_purge,[]},
|
{load_module,emqx_mod_api_topic_metrics,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]},
|
||||||
{<<".*">>,[]}],
|
{<<".*">>,[]}],
|
||||||
[{"4.3.6",[{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]},
|
[{"4.3.7",[{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]},
|
||||||
|
{"4.3.6",[{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.5",
|
{"4.3.5",
|
||||||
[{load_module,emqx_modules,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_modules,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]},
|
||||||
|
|
Loading…
Reference in New Issue