Merge pull request #9790 from lafirest/feat/banned_with_delayed
feat: improve the integration of the banned and the delayed/retain feature
This commit is contained in:
commit
7c476fd80b
|
@ -1,6 +1,6 @@
|
|||
{application, emqx_retainer,
|
||||
[{description, "EMQ X Retainer"},
|
||||
{vsn, "4.4.3"}, % strict semver, bump manually!
|
||||
{vsn, "4.4.4"}, % strict semver, bump manually!
|
||||
{modules, []},
|
||||
{registered, [emqx_retainer_sup]},
|
||||
{applications, [kernel,stdlib]},
|
||||
|
|
|
@ -1,15 +1,27 @@
|
|||
%% -*- mode: erlang -*-
|
||||
%% Unless you know what you are doing, DO NOT edit manually!!
|
||||
{VSN,
|
||||
[{"4.4.2",[{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.1",[{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}]},
|
||||
[{"4.4.3",[{load_module,emqx_retainer,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.2",[{load_module,emqx_retainer,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}
|
||||
]},
|
||||
{"4.4.1",[{load_module,emqx_retainer,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}
|
||||
]},
|
||||
{"4.4.0",
|
||||
[{load_module,emqx_retainer_cli,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_retainer,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_retainer_cli,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}]},
|
||||
{<<".*">>,[]}],
|
||||
[{"4.4.2",[{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.1",[{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}]},
|
||||
[{"4.4.3",[{load_module,emqx_retainer,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.2",[{load_module,emqx_retainer,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}
|
||||
]},
|
||||
{"4.4.1",[{load_module,emqx_retainer,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}
|
||||
]},
|
||||
{"4.4.0",
|
||||
[{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_retainer_cli,brutal_purge,soft_purge,[]}]},
|
||||
[{load_module,emqx_retainer,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_retainer_cli,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_retainer_sup,brutal_purge,soft_purge,[]}]},
|
||||
{<<".*">>,[]}]}.
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
-include_lib("emqx/include/emqx.hrl").
|
||||
-include_lib("emqx/include/logger.hrl").
|
||||
-include_lib("stdlib/include/ms_transform.hrl").
|
||||
-include_lib("snabbkaffe/include/snabbkaffe.hrl").
|
||||
|
||||
-logger_header("[Retainer]").
|
||||
|
||||
|
@ -74,11 +75,12 @@ on_session_subscribed(_, Topic, #{rh := Rh, is_new := IsNew}) ->
|
|||
|
||||
%% @private
|
||||
dispatch(Pid, Topic) ->
|
||||
Msgs = case emqx_topic:wildcard(Topic) of
|
||||
MsgsT = case emqx_topic:wildcard(Topic) of
|
||||
false -> read_messages(Topic);
|
||||
true -> match_messages(Topic)
|
||||
end,
|
||||
Now = erlang:system_time(millisecond),
|
||||
Msgs = drop_banned_messages(MsgsT),
|
||||
[Pid ! {deliver, Topic, refresh_timestamp_expiry(Msg, Now)} || Msg <- sort_retained(Msgs)].
|
||||
|
||||
%% RETAIN flag set to 1 and payload containing zero bytes
|
||||
|
@ -332,3 +334,21 @@ refresh_timestamp_expiry(Msg = #message{headers =
|
|||
|
||||
refresh_timestamp_expiry(Msg, Now) ->
|
||||
Msg#message{timestamp = Now}.
|
||||
|
||||
drop_banned_messages(Msgs) ->
|
||||
lists:filter(fun(Msg) ->
|
||||
case emqx_banned:look_up({clientid, Msg#message.from}) of
|
||||
[] ->
|
||||
true;
|
||||
_ ->
|
||||
?tp(
|
||||
notice,
|
||||
ignore_retained_message_deliver,
|
||||
#{
|
||||
reason => "client is banned",
|
||||
clientid => Msg#message.from
|
||||
}
|
||||
),
|
||||
false
|
||||
end
|
||||
end, Msgs).
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
|
||||
-include_lib("eunit/include/eunit.hrl").
|
||||
-include_lib("common_test/include/ct.hrl").
|
||||
-include_lib("snabbkaffe/include/snabbkaffe.hrl").
|
||||
|
||||
all() -> emqx_ct:all(?MODULE).
|
||||
|
||||
|
@ -189,6 +190,53 @@ t_stop_publish_clear_msg(_) ->
|
|||
|
||||
ok = emqtt:disconnect(C1).
|
||||
|
||||
t_deliver_when_banned(_) ->
|
||||
Client1 = <<"c1">>,
|
||||
Client2 = <<"c2">>,
|
||||
|
||||
{ok, C1} = emqtt:start_link([{clientid, Client1}, {clean_start, true}, {proto_ver, v5}]),
|
||||
{ok, _} = emqtt:connect(C1),
|
||||
|
||||
lists:foreach(
|
||||
fun(I) ->
|
||||
Topic = erlang:list_to_binary(io_lib:format("retained/~p", [I])),
|
||||
Msg = emqx_message:make(Client2, 0, Topic, <<"this is a retained message">>),
|
||||
Msg2 = emqx_message:set_flag(retain, Msg),
|
||||
emqx:publish(Msg2)
|
||||
end,
|
||||
lists:seq(1, 3)
|
||||
),
|
||||
|
||||
Now = erlang:system_time(second),
|
||||
Who = {clientid, Client2},
|
||||
|
||||
emqx_banned:create(#{
|
||||
who => Who,
|
||||
by => <<"test">>,
|
||||
reason => <<"test">>,
|
||||
at => Now,
|
||||
until => Now + 120
|
||||
}),
|
||||
timer:sleep(100),
|
||||
|
||||
snabbkaffe:start_trace(),
|
||||
|
||||
{ok, SubRef} =
|
||||
snabbkaffe_collector:subscribe(?match_event(#{?snk_kind := ignore_retained_message_deliver}),
|
||||
_NEvents = 3,
|
||||
_Timeout = 10000,
|
||||
0),
|
||||
|
||||
{ok, #{}, [0]} = emqtt:subscribe(C1, <<"retained/+">>, [{qos, 0}, {rh, 0}]),
|
||||
{ok, Trace} = snabbkaffe_collector:receive_events(SubRef),
|
||||
?assertEqual(3, length(?of_kind(ignore_retained_message_deliver, Trace))),
|
||||
|
||||
snabbkaffe:stop(),
|
||||
|
||||
emqx_banned:delete(Who),
|
||||
{ok, #{}, [0]} = emqtt:unsubscribe(C1, <<"retained/+">>),
|
||||
ok = emqtt:disconnect(C1).
|
||||
|
||||
%%--------------------------------------------------------------------
|
||||
%% Helper functions
|
||||
%%--------------------------------------------------------------------
|
||||
|
|
|
@ -4,6 +4,12 @@
|
|||
|
||||
- Added Ubuntu 22.04 package release [#9831](https://github.com/emqx/emqx/pull/9831).
|
||||
|
||||
- Improve the integration of the `banned` and the `delayed` feature [#9790](https://github.com/emqx/emqx/pull/9790).
|
||||
Now when publishing a delayed message will check first if its source client is banned, if true, this publish will be ignored.
|
||||
|
||||
- Security enhancement for retained messages [#9790](https://github.com/emqx/emqx/pull/9790).
|
||||
The retained messages will not be published if the publisher client is banned.
|
||||
|
||||
## Bug fixes
|
||||
|
||||
- Fix the problem that new MQTT TLS connections failed to establish after release hot upgrade [#9810](https://github.com/emqx/emqx/pull/9810).
|
||||
|
|
|
@ -4,6 +4,12 @@
|
|||
|
||||
- 发布 Ubuntu 22.04 安装包 [#9831](https://github.com/emqx/emqx/pull/9831)。
|
||||
|
||||
- 增强 `封禁` 和 `延迟消息` 这两个功能的集成性 [#9790](https://github.com/emqx/emqx/pull/9790)。
|
||||
现在发送延迟消息前,会先检查消息的来源客户端是否被封禁了,如果是,这条延迟消息将会被忽略。
|
||||
|
||||
- 增强 `保留消息` 的安全性 [#9790](https://github.com/emqx/emqx/pull/9790)。
|
||||
现在投递保留消息前,会先过滤掉来源客户端被封禁了的那些消息。
|
||||
|
||||
## 修复
|
||||
|
||||
- 修复版本热升级之后,新的 MQTT TLS 连接建立失败的问题 [#9810](https://github.com/emqx/emqx/pull/9810)。
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
-include_lib("emqx/include/emqx.hrl").
|
||||
-include_lib("emqx/include/logger.hrl").
|
||||
-include_lib("snabbkaffe/include/snabbkaffe.hrl").
|
||||
|
||||
-logger_header("[Delayed]").
|
||||
|
||||
|
@ -228,7 +229,20 @@ do_publish(Key = {Ts, _Id}, Now, Acc) when Ts =< Now ->
|
|||
case mnesia:dirty_read(?TAB, Key) of
|
||||
[] -> ok;
|
||||
[#delayed_message{msg = Msg}] ->
|
||||
emqx_pool:async_submit(fun emqx:publish/1, [Msg])
|
||||
case emqx_banned:look_up({clientid, Msg#message.from}) of
|
||||
[] ->
|
||||
emqx_pool:async_submit(fun emqx:publish/1, [Msg]);
|
||||
_ ->
|
||||
?tp(
|
||||
notice,
|
||||
ignore_delayed_message_publish,
|
||||
#{
|
||||
reason => "client is banned",
|
||||
clienid => Msg#message.from
|
||||
}
|
||||
),
|
||||
ok
|
||||
end
|
||||
end,
|
||||
do_publish(mnesia:dirty_next(?TAB, Key), Now, [Key|Acc]).
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{application, emqx_modules,
|
||||
[{description, "EMQ X Module Management"},
|
||||
{vsn, "4.4.8"},
|
||||
{vsn, "4.4.9"},
|
||||
{modules, []},
|
||||
{applications, [kernel,stdlib]},
|
||||
{mod, {emqx_modules_app, []}},
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
%% -*- mode: erlang -*-
|
||||
%% Unless you know what you are doing, DO NOT edit manually!!
|
||||
{VSN,
|
||||
[{"4.4.7",[{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]},
|
||||
[{"4.4.8",[{load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.7",[{load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.6",
|
||||
[{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}]},
|
||||
|
@ -40,7 +42,9 @@
|
|||
{load_module,emqx_mod_sup,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_mod_trace_api,brutal_purge,soft_purge,[]}]},
|
||||
{<<".*">>,[]}],
|
||||
[{"4.4.7",[{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]},
|
||||
[{"4.4.8",[{load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.7",[{load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.6",
|
||||
[{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}]},
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
-include_lib("common_test/include/ct.hrl").
|
||||
-include_lib("eunit/include/eunit.hrl").
|
||||
-include_lib("emqx/include/emqx.hrl").
|
||||
-include_lib("snabbkaffe/include/snabbkaffe.hrl").
|
||||
|
||||
%%--------------------------------------------------------------------
|
||||
%% Setups
|
||||
|
@ -78,3 +79,46 @@ t_delayed_message(_) ->
|
|||
EmptyKey = mnesia:dirty_all_keys(emqx_mod_delayed),
|
||||
?assertEqual([], EmptyKey),
|
||||
ok = emqx_mod_delayed:unload([]).
|
||||
|
||||
t_banned_delayed(_) ->
|
||||
ok = emqx_mod_delayed:load([]),
|
||||
ClientId1 = <<"bc1">>,
|
||||
ClientId2 = <<"bc2">>,
|
||||
|
||||
Now = erlang:system_time(second),
|
||||
Who = {clientid, ClientId2},
|
||||
emqx_banned:create(#{
|
||||
who => Who,
|
||||
by => <<"test">>,
|
||||
reason => <<"test">>,
|
||||
at => Now,
|
||||
until => Now + 120
|
||||
}),
|
||||
|
||||
snabbkaffe:start_trace(),
|
||||
|
||||
{ok, SubRef} =
|
||||
snabbkaffe_collector:subscribe(?match_event(#{?snk_kind := ignore_delayed_message_publish}),
|
||||
_NEvents = 2,
|
||||
_Timeout = 10000,
|
||||
0),
|
||||
|
||||
lists:foreach(
|
||||
fun(ClientId) ->
|
||||
Msg = emqx_message:make(ClientId, <<"$delayed/1/bc">>, <<"payload">>),
|
||||
emqx_mod_delayed:on_message_publish(Msg)
|
||||
end,
|
||||
[ClientId1, ClientId1, ClientId1, ClientId2, ClientId2]
|
||||
),
|
||||
|
||||
?assertMatch({ok, [#{?snk_kind := ignore_delayed_message_publish},
|
||||
#{?snk_kind := ignore_delayed_message_publish}
|
||||
]},
|
||||
snabbkaffe_collector:receive_events(SubRef)),
|
||||
|
||||
snabbkaffe:stop(),
|
||||
|
||||
emqx_banned:delete(Who),
|
||||
EmptyKey = mnesia:dirty_all_keys(emqx_mod_delayed),
|
||||
?assertEqual([], EmptyKey),
|
||||
ok = emqx_mod_delayed:unload([]).
|
||||
|
|
|
@ -2,27 +2,31 @@
|
|||
%% Unless you know what you are doing, DO NOT edit manually!!
|
||||
{VSN,
|
||||
[{"4.4.14",
|
||||
[{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_misc,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,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.13",
|
||||
[{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_relup,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.12",
|
||||
[{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_relup,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.11",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{add_module,emqx_cover},
|
||||
{load_module,emqx_relup,brutal_purge,soft_purge,[]},
|
||||
|
@ -32,7 +36,8 @@
|
|||
{load_module,emqx_session,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_channel,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.10",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{add_module,emqx_cover},
|
||||
{add_module,emqx_ocsp_cache},
|
||||
|
@ -54,7 +59,8 @@
|
|||
{apply,{application,set_env,
|
||||
[gen_rpc,insecure_auth_fallback_allowed,true]}}]},
|
||||
{"4.4.9",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{add_module,emqx_cover},
|
||||
{add_module,emqx_ocsp_cache},
|
||||
|
@ -82,7 +88,8 @@
|
|||
{apply,{application,set_env,
|
||||
[gen_rpc,insecure_auth_fallback_allowed,true]}}]},
|
||||
{"4.4.8",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{add_module,emqx_cover},
|
||||
{add_module,emqx_ocsp_cache},
|
||||
|
@ -111,7 +118,8 @@
|
|||
{apply,{application,set_env,
|
||||
[gen_rpc,insecure_auth_fallback_allowed,true]}}]},
|
||||
{"4.4.7",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{add_module,emqx_cover},
|
||||
{add_module,emqx_ocsp_cache},
|
||||
|
@ -140,7 +148,8 @@
|
|||
{apply,{application,set_env,
|
||||
[gen_rpc,insecure_auth_fallback_allowed,true]}}]},
|
||||
{"4.4.6",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{add_module,emqx_cover},
|
||||
{add_module,emqx_ocsp_cache},
|
||||
|
@ -169,7 +178,8 @@
|
|||
{apply,{application,set_env,
|
||||
[gen_rpc,insecure_auth_fallback_allowed,true]}}]},
|
||||
{"4.4.5",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{add_module,emqx_cover},
|
||||
{add_module,emqx_ocsp_cache},
|
||||
|
@ -200,7 +210,8 @@
|
|||
{apply,{application,set_env,
|
||||
[gen_rpc,insecure_auth_fallback_allowed,true]}}]},
|
||||
{"4.4.4",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{add_module,emqx_cover},
|
||||
{add_module,emqx_ocsp_cache},
|
||||
|
@ -238,7 +249,8 @@
|
|||
{apply,{application,set_env,
|
||||
[gen_rpc,insecure_auth_fallback_allowed,true]}}]},
|
||||
{"4.4.3",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{add_module,emqx_cover},
|
||||
{add_module,emqx_ocsp_cache},
|
||||
{add_module,emqx_crl_cache},
|
||||
|
@ -282,7 +294,8 @@
|
|||
{apply,{application,set_env,
|
||||
[gen_rpc,insecure_auth_fallback_allowed,true]}}]},
|
||||
{"4.4.2",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{add_module,emqx_cover},
|
||||
{add_module,emqx_ocsp_cache},
|
||||
{add_module,emqx_crl_cache},
|
||||
|
@ -430,27 +443,31 @@
|
|||
[gen_rpc,insecure_auth_fallback_allowed,true]}}]},
|
||||
{<<".*">>,[]}],
|
||||
[{"4.4.14",
|
||||
[{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_misc,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,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.13",
|
||||
[{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_relup,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.12",
|
||||
[{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_relup,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||
{"4.4.11",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,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,[]},
|
||||
|
@ -460,7 +477,8 @@
|
|||
{load_module,emqx_session,brutal_purge,soft_purge,[]},
|
||||
{delete_module,emqx_cover}]},
|
||||
{"4.4.10",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_listeners,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_kernel_sup,brutal_purge,soft_purge,[]},
|
||||
|
@ -479,7 +497,8 @@
|
|||
{delete_module,emqx_crl_cache},
|
||||
{delete_module,emqx_ocsp_cache}]},
|
||||
{"4.4.9",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_listeners,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_kernel_sup,brutal_purge,soft_purge,[]},
|
||||
|
@ -503,7 +522,8 @@
|
|||
{delete_module,emqx_crl_cache},
|
||||
{delete_module,emqx_ocsp_cache}]},
|
||||
{"4.4.8",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_listeners,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_kernel_sup,brutal_purge,soft_purge,[]},
|
||||
|
@ -528,7 +548,8 @@
|
|||
{delete_module,emqx_crl_cache},
|
||||
{delete_module,emqx_ocsp_cache}]},
|
||||
{"4.4.7",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_listeners,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_kernel_sup,brutal_purge,soft_purge,[]},
|
||||
|
@ -553,7 +574,8 @@
|
|||
{delete_module,emqx_crl_cache},
|
||||
{delete_module,emqx_ocsp_cache}]},
|
||||
{"4.4.6",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_listeners,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_kernel_sup,brutal_purge,soft_purge,[]},
|
||||
|
@ -578,7 +600,8 @@
|
|||
{delete_module,emqx_crl_cache},
|
||||
{delete_module,emqx_ocsp_cache}]},
|
||||
{"4.4.5",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_listeners,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_kernel_sup,brutal_purge,soft_purge,[]},
|
||||
|
@ -605,7 +628,8 @@
|
|||
{delete_module,emqx_crl_cache},
|
||||
{delete_module,emqx_ocsp_cache}]},
|
||||
{"4.4.4",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_packet,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_listeners,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_kernel_sup,brutal_purge,soft_purge,[]},
|
||||
|
@ -639,7 +663,8 @@
|
|||
{delete_module,emqx_crl_cache},
|
||||
{delete_module,emqx_ocsp_cache}]},
|
||||
{"4.4.3",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_listeners,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_kernel_sup,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_hooks,brutal_purge,soft_purge,[]},
|
||||
|
@ -678,7 +703,8 @@
|
|||
{delete_module,emqx_crl_cache},
|
||||
{delete_module,emqx_ocsp_cache}]},
|
||||
{"4.4.2",
|
||||
[{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
[{load_module,emqx_banned,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_listeners,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_kernel_sup,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_router_helper,brutal_purge,soft_purge,[]},
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
, create/1
|
||||
, delete/1
|
||||
, info/1
|
||||
, look_up/1
|
||||
]).
|
||||
|
||||
%% gen_server callbacks
|
||||
|
@ -111,6 +112,9 @@ delete(Who) ->
|
|||
info(InfoKey) ->
|
||||
mnesia:table_info(?BANNED_TAB, InfoKey).
|
||||
|
||||
look_up(Who) ->
|
||||
mnesia:dirty_read(?BANNED_TAB, Who).
|
||||
|
||||
%%--------------------------------------------------------------------
|
||||
%% gen_server callbacks
|
||||
%%--------------------------------------------------------------------
|
||||
|
@ -158,4 +162,3 @@ expire_banned_items(Now) ->
|
|||
mnesia:delete_object(?BANNED_TAB, B, sticky_write);
|
||||
(_, _Acc) -> ok
|
||||
end, ok, ?BANNED_TAB).
|
||||
|
||||
|
|
Loading…
Reference in New Issue