diff --git a/src/emqttd_access_rule.erl b/src/emqttd_access_rule.erl index 6b0e08d75..88395b182 100644 --- a/src/emqttd_access_rule.erl +++ b/src/emqttd_access_rule.erl @@ -75,8 +75,8 @@ compile(topic, Topic) -> end. 'pattern?'(Words) -> - lists:member(<<"$u">>, Words) - orelse lists:member(<<"$c">>, Words). + lists:member(<<"%u">>, Words) + orelse lists:member(<<"%c">>, Words). bin(L) when is_list(L) -> list_to_binary(L); @@ -142,13 +142,13 @@ feed_var(Client, Pattern) -> feed_var(Client, Pattern, []). feed_var(_Client, [], Acc) -> lists:reverse(Acc); -feed_var(Client = #mqtt_client{client_id = undefined}, [<<"$c">>|Words], Acc) -> - feed_var(Client, Words, [<<"$c">>|Acc]); -feed_var(Client = #mqtt_client{client_id = ClientId}, [<<"$c">>|Words], Acc) -> +feed_var(Client = #mqtt_client{client_id = undefined}, [<<"%c">>|Words], Acc) -> + feed_var(Client, Words, [<<"%c">>|Acc]); +feed_var(Client = #mqtt_client{client_id = ClientId}, [<<"%c">>|Words], Acc) -> feed_var(Client, Words, [ClientId |Acc]); -feed_var(Client = #mqtt_client{username = undefined}, [<<"$u">>|Words], Acc) -> - feed_var(Client, Words, [<<"$u">>|Acc]); -feed_var(Client = #mqtt_client{username = Username}, [<<"$u">>|Words], Acc) -> +feed_var(Client = #mqtt_client{username = undefined}, [<<"%u">>|Words], Acc) -> + feed_var(Client, Words, [<<"%u">>|Acc]); +feed_var(Client = #mqtt_client{username = Username}, [<<"%u">>|Words], Acc) -> feed_var(Client, Words, [Username|Acc]); feed_var(Client, [W|Words], Acc) -> feed_var(Client, Words, [W|Acc]). diff --git a/src/emqttd_mod_subscription.erl b/src/emqttd_mod_subscription.erl index a0d030391..904e29084 100644 --- a/src/emqttd_mod_subscription.erl +++ b/src/emqttd_mod_subscription.erl @@ -32,7 +32,7 @@ on_client_connected(?CONNACK_ACCEPT, Client = #mqtt_client{client_id = ClientId client_pid = ClientPid, username = Username}, Topics) -> - Replace = fun(Topic) -> rep(<<"$u">>, Username, rep(<<"$c">>, ClientId, Topic)) end, + Replace = fun(Topic) -> rep(<<"%u">>, Username, rep(<<"%c">>, ClientId, Topic)) end, TopicTable = [{Replace(Topic), Qos} || {Topic, Qos} <- Topics], emqttd_client:subscribe(ClientPid, TopicTable), {ok, Client}; @@ -43,10 +43,10 @@ on_client_connected(_ConnAck, _Client, _State) -> unload(_Opts) -> emqttd:unhook('client.connected', fun ?MODULE:on_client_connected/3). -rep(<<"$c">>, ClientId, Topic) -> - emqttd_topic:feed_var(<<"$c">>, ClientId, Topic); -rep(<<"$u">>, undefined, Topic) -> +rep(<<"%c">>, ClientId, Topic) -> + emqttd_topic:feed_var(<<"%c">>, ClientId, Topic); +rep(<<"%u">>, undefined, Topic) -> Topic; -rep(<<"$u">>, Username, Topic) -> - emqttd_topic:feed_var(<<"$u">>, Username, Topic). +rep(<<"%u">>, Username, Topic) -> + emqttd_topic:feed_var(<<"%u">>, Username, Topic).