|
|
@@ -108,9 +108,8 @@ load(Fd, {ok, Line}, Clients) when is_list(Line) ->
|
|
|
[#mqtt_auth_clientid{client_id = ClientId} | Clients];
|
|
|
[ClientId, IpAddr0] ->
|
|
|
IpAddr = string:strip(IpAddr0, right, $\n),
|
|
|
- Range = esockd_access:range(IpAddr),
|
|
|
[#mqtt_auth_clientid{client_id = list_to_binary(ClientId),
|
|
|
- ipaddr = {IpAddr, Range}}|Clients];
|
|
|
+ ipaddr = esockd_cidr:parse(IpAddr, true)} | Clients];
|
|
|
BadLine ->
|
|
|
lager:error("BadLine in clients.config: ~s", [BadLine]),
|
|
|
Clients
|
|
|
@@ -123,11 +122,12 @@ load(Fd, eof, Clients) ->
|
|
|
|
|
|
check_clientid_only(ClientId, IpAddr) ->
|
|
|
case mnesia:dirty_read(?AUTH_CLIENTID_TAB, ClientId) of
|
|
|
- [] -> {error, clientid_not_found};
|
|
|
- [#?AUTH_CLIENTID_TAB{ipaddr = undefined}] -> ok;
|
|
|
- [#?AUTH_CLIENTID_TAB{ipaddr = {_, {Start, End}}}] ->
|
|
|
- I = esockd_access:atoi(IpAddr),
|
|
|
- case I >= Start andalso I =< End of
|
|
|
+ [] ->
|
|
|
+ {error, clientid_not_found};
|
|
|
+ [#?AUTH_CLIENTID_TAB{ipaddr = undefined}] ->
|
|
|
+ ok;
|
|
|
+ [#?AUTH_CLIENTID_TAB{ipaddr = CIDR}] ->
|
|
|
+ case esockd_cidr:match(IpAddr, CIDR) of
|
|
|
true -> ok;
|
|
|
false -> {error, wrong_ipaddr}
|
|
|
end
|