rewrite_subscribe/4, rewrite_unsubscribe/4
This commit is contained in:
parent
66c84aef00
commit
5eda6c9dd2
|
@ -14,7 +14,6 @@
|
||||||
%% limitations under the License.
|
%% limitations under the License.
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
%% @doc emqttd rewrite module
|
|
||||||
-module(emqttd_mod_rewrite).
|
-module(emqttd_mod_rewrite).
|
||||||
|
|
||||||
-behaviour(emqttd_gen_mod).
|
-behaviour(emqttd_gen_mod).
|
||||||
|
@ -23,7 +22,7 @@
|
||||||
|
|
||||||
-export([load/1, reload/1, unload/1]).
|
-export([load/1, reload/1, unload/1]).
|
||||||
|
|
||||||
-export([rewrite_subscribe/3, rewrite_unsubscribe/3, rewrite_publish/2]).
|
-export([rewrite_subscribe/4, rewrite_unsubscribe/4, rewrite_publish/2]).
|
||||||
|
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% API
|
%% API
|
||||||
|
@ -35,18 +34,18 @@ load(Opts) ->
|
||||||
ok;
|
ok;
|
||||||
File ->
|
File ->
|
||||||
{ok, Terms} = file:consult(File), Sections = compile(Terms),
|
{ok, Terms} = file:consult(File), Sections = compile(Terms),
|
||||||
emqttd:hook('client.subscribe', fun ?MODULE:rewrite_subscribe/3, [Sections]),
|
emqttd:hook('client.subscribe', fun ?MODULE:rewrite_subscribe/4, [Sections]),
|
||||||
emqttd:hook('client.unsubscribe', fun ?MODULE:rewrite_unsubscribe/3, [Sections]),
|
emqttd:hook('client.unsubscribe', fun ?MODULE:rewrite_unsubscribe/4, [Sections]),
|
||||||
emqttd:hook('message.publish', fun ?MODULE:rewrite_publish/2, [Sections])
|
emqttd:hook('message.publish', fun ?MODULE:rewrite_publish/2, [Sections])
|
||||||
end.
|
end.
|
||||||
|
|
||||||
rewrite_subscribe({_ClientId, _Username}, {Topic, Opts}, Sections) ->
|
rewrite_subscribe(_ClientId, _Username, TopicTable, Sections) ->
|
||||||
lager:info("Rewrite subscribe: ~p", [{Topic, Opts}]),
|
lager:info("Rewrite subscribe: ~p", [TopicTable]),
|
||||||
{ok, {match_topic(Topic, Sections), Opts}}.
|
{ok, [{match_topic(Topic, Sections), Opts} || {Topic, Opts} <- TopicTable]}.
|
||||||
|
|
||||||
rewrite_unsubscribe({_ClientId, _Username}, Topic, Sections) ->
|
rewrite_unsubscribe(_ClientId, _Username, TopicTable, Sections) ->
|
||||||
lager:info("Rewrite unsubscribe: ~p", [Topic]),
|
lager:info("Rewrite unsubscribe: ~p", [TopicTable]),
|
||||||
{ok, match_topic(Topic, Sections)}.
|
{ok, [{match_topic(Topic, Sections), Opts} || {Topic, Opts} <- TopicTable]}.
|
||||||
|
|
||||||
rewrite_publish(Message=#mqtt_message{topic = Topic}, Sections) ->
|
rewrite_publish(Message=#mqtt_message{topic = Topic}, Sections) ->
|
||||||
%%TODO: this will not work if the client is always online.
|
%%TODO: this will not work if the client is always online.
|
||||||
|
@ -71,8 +70,8 @@ reload(File) ->
|
||||||
end.
|
end.
|
||||||
|
|
||||||
unload(_) ->
|
unload(_) ->
|
||||||
emqttd:unhook('client.subscribe', fun ?MODULE:rewrite_subscribe/3),
|
emqttd:unhook('client.subscribe', fun ?MODULE:rewrite_subscribe/4),
|
||||||
emqttd:unhook('client.unsubscribe',fun ?MODULE:rewrite_unsubscribe/3),
|
emqttd:unhook('client.unsubscribe',fun ?MODULE:rewrite_unsubscribe/4),
|
||||||
emqttd:unhook('message.publish', fun ?MODULE:rewrite_publish/2).
|
emqttd:unhook('message.publish', fun ?MODULE:rewrite_publish/2).
|
||||||
|
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue