fix(coap): make username/password optinal in connection
This commit is contained in:
parent
ab809c8b85
commit
5c901a52bd
|
@ -46,7 +46,8 @@
|
||||||
global_chain/1,
|
global_chain/1,
|
||||||
listener_chain/3,
|
listener_chain/3,
|
||||||
find_gateway_definitions/0,
|
find_gateway_definitions/0,
|
||||||
plus_max_connections/2
|
plus_max_connections/2,
|
||||||
|
random_clientid/1
|
||||||
]).
|
]).
|
||||||
|
|
||||||
-export([stringfy/1]).
|
-export([stringfy/1]).
|
||||||
|
@ -631,3 +632,6 @@ ensure_gateway_loaded() ->
|
||||||
emqx_gateway_mqttsn
|
emqx_gateway_mqttsn
|
||||||
]
|
]
|
||||||
).
|
).
|
||||||
|
|
||||||
|
random_clientid(GwName) when is_atom(GwName) ->
|
||||||
|
iolist_to_binary([atom_to_list(GwName), "-", emqx_utils:gen_id()]).
|
||||||
|
|
|
@ -486,46 +486,35 @@ enrich_conninfo(
|
||||||
conninfo = ConnInfo
|
conninfo = ConnInfo
|
||||||
}
|
}
|
||||||
) ->
|
) ->
|
||||||
%% FIXME: generate a random clientid if absent
|
ClientId =
|
||||||
case Queries of
|
case maps:get(<<"clientid">>, Queries, undefined) of
|
||||||
#{<<"clientid">> := ClientId} ->
|
undefined ->
|
||||||
Interval = maps:get(interval, emqx_keepalive:info(KeepAlive)),
|
emqx_gateway_utils:random_clientid(coap);
|
||||||
NConnInfo = ConnInfo#{
|
ClientId0 ->
|
||||||
clientid => ClientId,
|
ClientId0
|
||||||
proto_name => <<"CoAP">>,
|
end,
|
||||||
proto_ver => <<"1">>,
|
Interval = maps:get(interval, emqx_keepalive:info(KeepAlive)),
|
||||||
clean_start => true,
|
NConnInfo = ConnInfo#{
|
||||||
keepalive => Interval,
|
clientid => ClientId,
|
||||||
expiry_interval => 0
|
proto_name => <<"CoAP">>,
|
||||||
},
|
proto_ver => <<"1">>,
|
||||||
{ok, Channel#channel{conninfo = NConnInfo}};
|
clean_start => true,
|
||||||
_ ->
|
keepalive => Interval,
|
||||||
{error, "invalid queries", Channel}
|
expiry_interval => 0
|
||||||
end.
|
},
|
||||||
|
{ok, Channel#channel{conninfo = NConnInfo}}.
|
||||||
|
|
||||||
enrich_clientinfo(
|
enrich_clientinfo(
|
||||||
{Queries, Msg},
|
{Queries, Msg},
|
||||||
Channel = #channel{clientinfo = ClientInfo0}
|
Channel = #channel{conninfo = ConnInfo, clientinfo = ClientInfo0}
|
||||||
) ->
|
) ->
|
||||||
%% FIXME:
|
ClientInfo = ClientInfo0#{
|
||||||
%% 1. generate a random clientid if absent;
|
clientid => maps:get(clientid, ConnInfo),
|
||||||
%% 2. assgin username, password to `undefined` if absent
|
username => maps:get(<<"username">>, Queries, undefined),
|
||||||
case Queries of
|
password => maps:get(<<"password">>, Queries, undefined)
|
||||||
#{
|
},
|
||||||
<<"username">> := UserName,
|
{ok, NClientInfo} = fix_mountpoint(Msg, ClientInfo),
|
||||||
<<"password">> := Password,
|
{ok, Channel#channel{clientinfo = NClientInfo}}.
|
||||||
<<"clientid">> := ClientId
|
|
||||||
} ->
|
|
||||||
ClientInfo = ClientInfo0#{
|
|
||||||
username => UserName,
|
|
||||||
password => Password,
|
|
||||||
clientid => ClientId
|
|
||||||
},
|
|
||||||
{ok, NClientInfo} = fix_mountpoint(Msg, ClientInfo),
|
|
||||||
{ok, Channel#channel{clientinfo = NClientInfo}};
|
|
||||||
_ ->
|
|
||||||
{error, "invalid queries", Channel}
|
|
||||||
end.
|
|
||||||
|
|
||||||
set_log_meta(_Input, #channel{clientinfo = #{clientid := ClientId}}) ->
|
set_log_meta(_Input, #channel{clientinfo = #{clientid := ClientId}}) ->
|
||||||
emqx_logger:set_metadata_clientid(ClientId),
|
emqx_logger:set_metadata_clientid(ClientId),
|
||||||
|
|
Loading…
Reference in New Issue