change auth

This commit is contained in:
anlicheng 2026-04-24 17:36:37 +08:00
parent a88f23a1b7
commit db0889a525
6 changed files with 61 additions and 132 deletions

View File

@ -49,13 +49,7 @@
{password, "test1234"}, {password, "test1234"},
{keepalive, 86400}, {keepalive, 86400},
{retry_interval, 5} {retry_interval, 5}
]},
%% 权限检验时的预埋token
{pre_tokens, [
{<<"test">>, <<"iot2023">>}
]} ]}
]}, ]},
%% 系统日志配置,使用 OTP logger %% 系统日志配置,使用 OTP logger

View File

@ -38,11 +38,6 @@
{port, 18080} {port, 18080}
]}, ]},
%% 权限检验时的预埋token
{pre_tokens, [
{<<"test">>, <<"iot2023">>}
]},
{api_url, "https://lgsiot.njau.edu.cn/api/v1/taskLog"}, {api_url, "https://lgsiot.njau.edu.cn/api/v1/taskLog"},
{influxdb, [ {influxdb, [

View File

@ -20,10 +20,8 @@
-define('AUTHREQUEST_PB_H', true). -define('AUTHREQUEST_PB_H', true).
-record('AuthRequest', -record('AuthRequest',
{uuid = <<>> :: iodata() | undefined, % = 1, optional {uuid = <<>> :: iodata() | undefined, % = 1, optional
username = <<>> :: iodata() | undefined, % = 2, optional token = <<>> :: iodata() | undefined, % = 2, optional
salt = <<>> :: iodata() | undefined, % = 3, optional timestamp = 0 :: integer() | undefined % = 3, optional, 32 bits
token = <<>> :: iodata() | undefined, % = 4, optional
timestamp = 0 :: integer() | undefined % = 5, optional, 32 bits
}). }).
-endif. -endif.

View File

@ -10,27 +10,21 @@
-author("aresei"). -author("aresei").
%% API %% API
-export([check/5]). -export([check/3]).
%% token是否是合法值 %% token是否是合法值
-spec check(Username :: binary(), Token :: binary(), UUID :: binary(), Salt :: binary(), Timestamp :: integer()) -> -spec check(Token :: binary(), UUID :: binary(), Timestamp :: integer()) ->
ok | {error, Reason :: binary()}. ok | {error, Reason :: binary()}.
check(Username, Token, UUID, Salt, Timestamp) when is_binary(Username), is_binary(Token), is_binary(UUID), is_binary(Salt), is_integer(Timestamp) -> check(Token, UUID, Timestamp) when is_binary(Token), is_binary(UUID), is_integer(Timestamp) ->
BinTimestamp = integer_to_binary(Timestamp), BinTimestamp = integer_to_binary(Timestamp),
%% 1 %% 1
case iot_util:current_time() - Timestamp =< 60 of case iot_util:current_time() - Timestamp =< 60 of
true -> true ->
{ok, PreTokens} = application:get_env(iot, pre_tokens), case efka_client_store:auth(UUID, Token) of
case proplists:get_value(Username, PreTokens) of
undefined ->
{error, <<"illegal user">>};
PreToken when is_binary(PreToken) ->
case iot_util:md5(<<Salt/binary, "!", PreToken/binary, "!", UUID/binary, "!", BinTimestamp/binary>>) =:= Token of
true -> true ->
ok; ok;
false -> false ->
{error, <<"invalid token">>} {error, <<"invalid token">>}
end
end; end;
false -> false ->
{error, <<"invalid timestamp">>} {error, <<"invalid timestamp">>}

View File

@ -202,7 +202,7 @@ encode_msg_RequestFrame(#'RequestFrame'{packet_id = F1, body = F2}, Bin, TrUserD
encode_msg_AuthRequest(Msg, TrUserData) -> encode_msg_AuthRequest(Msg, <<>>, TrUserData). encode_msg_AuthRequest(Msg, TrUserData) -> encode_msg_AuthRequest(Msg, <<>>, TrUserData).
encode_msg_AuthRequest(#'AuthRequest'{uuid = F1, username = F2, salt = F3, token = F4, timestamp = F5}, Bin, TrUserData) -> encode_msg_AuthRequest(#'AuthRequest'{uuid = F1, token = F2, timestamp = F3}, Bin, TrUserData) ->
B1 = if F1 == undefined -> Bin; B1 = if F1 == undefined -> Bin;
true -> true ->
begin begin
@ -223,32 +223,12 @@ encode_msg_AuthRequest(#'AuthRequest'{uuid = F1, username = F2, salt = F3, token
end end
end end
end, end,
B3 = if F3 == undefined -> B2; if F3 == undefined -> B2;
true -> true ->
begin begin
TrF3 = id(F3, TrUserData), TrF3 = id(F3, TrUserData),
case iolist_size(TrF3) of if TrF3 =:= 0 -> B2;
0 -> B2; true -> e_type_int32(TrF3, <<B2/binary, 24>>, TrUserData)
_ -> e_type_bytes(TrF3, <<B2/binary, 26>>, TrUserData)
end
end
end,
B4 = if F4 == undefined -> B3;
true ->
begin
TrF4 = id(F4, TrUserData),
case iolist_size(TrF4) of
0 -> B3;
_ -> e_type_bytes(TrF4, <<B3/binary, 34>>, TrUserData)
end
end
end,
if F5 == undefined -> B4;
true ->
begin
TrF5 = id(F5, TrUserData),
if TrF5 =:= 0 -> B4;
true -> e_type_int32(TrF5, <<B4/binary, 40>>, TrUserData)
end end
end end
end. end.
@ -1601,77 +1581,63 @@ skip_32_RequestFrame(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -
skip_64_RequestFrame(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_RequestFrame(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). skip_64_RequestFrame(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_RequestFrame(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData).
decode_msg_AuthRequest(Bin, TrUserData) -> dfp_read_field_def_AuthRequest(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), TrUserData). decode_msg_AuthRequest(Bin, TrUserData) -> dfp_read_field_def_AuthRequest(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), TrUserData).
dfp_read_field_def_AuthRequest(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_AuthRequest_uuid(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); dfp_read_field_def_AuthRequest(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_AuthRequest_uuid(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
dfp_read_field_def_AuthRequest(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_AuthRequest_username(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); dfp_read_field_def_AuthRequest(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_AuthRequest_token(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
dfp_read_field_def_AuthRequest(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_AuthRequest_salt(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); dfp_read_field_def_AuthRequest(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_AuthRequest_timestamp(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
dfp_read_field_def_AuthRequest(<<34, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_AuthRequest_token(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); dfp_read_field_def_AuthRequest(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'AuthRequest'{uuid = F@_1, token = F@_2, timestamp = F@_3};
dfp_read_field_def_AuthRequest(<<40, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_AuthRequest_timestamp(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); dfp_read_field_def_AuthRequest(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_AuthRequest(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData).
dfp_read_field_def_AuthRequest(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, _) -> #'AuthRequest'{uuid = F@_1, username = F@_2, salt = F@_3, token = F@_4, timestamp = F@_5};
dfp_read_field_def_AuthRequest(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dg_read_field_def_AuthRequest(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData).
dg_read_field_def_AuthRequest(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 32 - 7 -> dg_read_field_def_AuthRequest(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); dg_read_field_def_AuthRequest(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_AuthRequest(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
dg_read_field_def_AuthRequest(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dg_read_field_def_AuthRequest(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) ->
Key = X bsl N + Acc, Key = X bsl N + Acc,
case Key of case Key of
10 -> d_field_AuthRequest_uuid(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); 10 -> d_field_AuthRequest_uuid(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData);
18 -> d_field_AuthRequest_username(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); 18 -> d_field_AuthRequest_token(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData);
26 -> d_field_AuthRequest_salt(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); 24 -> d_field_AuthRequest_timestamp(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData);
34 -> d_field_AuthRequest_token(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData);
40 -> d_field_AuthRequest_timestamp(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData);
_ -> _ ->
case Key band 7 of case Key band 7 of
0 -> skip_varint_AuthRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); 0 -> skip_varint_AuthRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData);
1 -> skip_64_AuthRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); 1 -> skip_64_AuthRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData);
2 -> skip_length_delimited_AuthRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); 2 -> skip_length_delimited_AuthRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData);
3 -> skip_group_AuthRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); 3 -> skip_group_AuthRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData);
5 -> skip_32_AuthRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) 5 -> skip_32_AuthRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData)
end end
end; end;
dg_read_field_def_AuthRequest(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, _) -> #'AuthRequest'{uuid = F@_1, username = F@_2, salt = F@_3, token = F@_4, timestamp = F@_5}. dg_read_field_def_AuthRequest(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'AuthRequest'{uuid = F@_1, token = F@_2, timestamp = F@_3}.
d_field_AuthRequest_uuid(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_AuthRequest_uuid(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); d_field_AuthRequest_uuid(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_AuthRequest_uuid(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
d_field_AuthRequest_uuid(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_AuthRequest_uuid(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, TrUserData) ->
{NewFValue, RestF} = begin Len = X bsl N + Acc, <<Bytes:Len/binary, Rest2/binary>> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, {NewFValue, RestF} = begin Len = X bsl N + Acc, <<Bytes:Len/binary, Rest2/binary>> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end,
dfp_read_field_def_AuthRequest(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, F@_5, TrUserData). dfp_read_field_def_AuthRequest(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData).
d_field_AuthRequest_username(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_AuthRequest_username(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); d_field_AuthRequest_token(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_AuthRequest_token(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
d_field_AuthRequest_username(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, F@_5, TrUserData) -> d_field_AuthRequest_token(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, TrUserData) ->
{NewFValue, RestF} = begin Len = X bsl N + Acc, <<Bytes:Len/binary, Rest2/binary>> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, {NewFValue, RestF} = begin Len = X bsl N + Acc, <<Bytes:Len/binary, Rest2/binary>> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end,
dfp_read_field_def_AuthRequest(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, F@_5, TrUserData). dfp_read_field_def_AuthRequest(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData).
d_field_AuthRequest_salt(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_AuthRequest_salt(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); d_field_AuthRequest_timestamp(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_AuthRequest_timestamp(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
d_field_AuthRequest_salt(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, F@_5, TrUserData) -> d_field_AuthRequest_timestamp(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, TrUserData) ->
{NewFValue, RestF} = begin Len = X bsl N + Acc, <<Bytes:Len/binary, Rest2/binary>> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end,
dfp_read_field_def_AuthRequest(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, F@_5, TrUserData).
d_field_AuthRequest_token(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_AuthRequest_token(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData);
d_field_AuthRequest_token(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, F@_5, TrUserData) ->
{NewFValue, RestF} = begin Len = X bsl N + Acc, <<Bytes:Len/binary, Rest2/binary>> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end,
dfp_read_field_def_AuthRequest(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, F@_5, TrUserData).
d_field_AuthRequest_timestamp(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_AuthRequest_timestamp(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData);
d_field_AuthRequest_timestamp(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, _, TrUserData) ->
{NewFValue, RestF} = {begin <<Res:32/signed-native>> = <<(X bsl N + Acc):32/unsigned-native>>, id(Res, TrUserData) end, Rest}, {NewFValue, RestF} = {begin <<Res:32/signed-native>> = <<(X bsl N + Acc):32/unsigned-native>>, id(Res, TrUserData) end, Rest},
dfp_read_field_def_AuthRequest(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, NewFValue, TrUserData). dfp_read_field_def_AuthRequest(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData).
skip_varint_AuthRequest(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> skip_varint_AuthRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); skip_varint_AuthRequest(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_AuthRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
skip_varint_AuthRequest(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dfp_read_field_def_AuthRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). skip_varint_AuthRequest(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_AuthRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData).
skip_length_delimited_AuthRequest(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> skip_length_delimited_AuthRequest(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); skip_length_delimited_AuthRequest(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_AuthRequest(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
skip_length_delimited_AuthRequest(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> skip_length_delimited_AuthRequest(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) ->
Length = X bsl N + Acc, Length = X bsl N + Acc,
<<_:Length/binary, Rest2/binary>> = Rest, <<_:Length/binary, Rest2/binary>> = Rest,
dfp_read_field_def_AuthRequest(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). dfp_read_field_def_AuthRequest(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData).
skip_group_AuthRequest(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> skip_group_AuthRequest(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) ->
{_, Rest} = read_group(Bin, FNum), {_, Rest} = read_group(Bin, FNum),
dfp_read_field_def_AuthRequest(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). dfp_read_field_def_AuthRequest(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData).
skip_32_AuthRequest(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dfp_read_field_def_AuthRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). skip_32_AuthRequest(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_AuthRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData).
skip_64_AuthRequest(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dfp_read_field_def_AuthRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). skip_64_AuthRequest(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_AuthRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData).
'decode_msg_ReplyFrame.Error'(Bin, TrUserData) -> 'dfp_read_field_def_ReplyFrame.Error'(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), TrUserData). 'decode_msg_ReplyFrame.Error'(Bin, TrUserData) -> 'dfp_read_field_def_ReplyFrame.Error'(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), TrUserData).
@ -3852,19 +3818,11 @@ merge_msg_RequestFrame(#'RequestFrame'{packet_id = PFpacket_id, body = PFbody},
end}. end}.
-compile({nowarn_unused_function,merge_msg_AuthRequest/3}). -compile({nowarn_unused_function,merge_msg_AuthRequest/3}).
merge_msg_AuthRequest(#'AuthRequest'{uuid = PFuuid, username = PFusername, salt = PFsalt, token = PFtoken, timestamp = PFtimestamp}, #'AuthRequest'{uuid = NFuuid, username = NFusername, salt = NFsalt, token = NFtoken, timestamp = NFtimestamp}, _) -> merge_msg_AuthRequest(#'AuthRequest'{uuid = PFuuid, token = PFtoken, timestamp = PFtimestamp}, #'AuthRequest'{uuid = NFuuid, token = NFtoken, timestamp = NFtimestamp}, _) ->
#'AuthRequest'{uuid = #'AuthRequest'{uuid =
if NFuuid =:= undefined -> PFuuid; if NFuuid =:= undefined -> PFuuid;
true -> NFuuid true -> NFuuid
end, end,
username =
if NFusername =:= undefined -> PFusername;
true -> NFusername
end,
salt =
if NFsalt =:= undefined -> PFsalt;
true -> NFsalt
end,
token = token =
if NFtoken =:= undefined -> PFtoken; if NFtoken =:= undefined -> PFtoken;
true -> NFtoken true -> NFtoken
@ -4397,21 +4355,15 @@ v_submsg_AuthRequest(Msg, Path, TrUserData) -> v_msg_AuthRequest(Msg, Path, TrUs
-compile({nowarn_unused_function,v_msg_AuthRequest/3}). -compile({nowarn_unused_function,v_msg_AuthRequest/3}).
-dialyzer({nowarn_function,v_msg_AuthRequest/3}). -dialyzer({nowarn_function,v_msg_AuthRequest/3}).
v_msg_AuthRequest(#'AuthRequest'{uuid = F1, username = F2, salt = F3, token = F4, timestamp = F5}, Path, TrUserData) -> v_msg_AuthRequest(#'AuthRequest'{uuid = F1, token = F2, timestamp = F3}, Path, TrUserData) ->
if F1 == undefined -> ok; if F1 == undefined -> ok;
true -> v_type_bytes(F1, [uuid | Path], TrUserData) true -> v_type_bytes(F1, [uuid | Path], TrUserData)
end, end,
if F2 == undefined -> ok; if F2 == undefined -> ok;
true -> v_type_bytes(F2, [username | Path], TrUserData) true -> v_type_bytes(F2, [token | Path], TrUserData)
end, end,
if F3 == undefined -> ok; if F3 == undefined -> ok;
true -> v_type_bytes(F3, [salt | Path], TrUserData) true -> v_type_int32(F3, [timestamp | Path], TrUserData)
end,
if F4 == undefined -> ok;
true -> v_type_bytes(F4, [token | Path], TrUserData)
end,
if F5 == undefined -> ok;
true -> v_type_int32(F5, [timestamp | Path], TrUserData)
end, end,
ok; ok;
v_msg_AuthRequest(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'AuthRequest'}, X, Path). v_msg_AuthRequest(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'AuthRequest'}, X, Path).
@ -5141,10 +5093,8 @@ get_msg_defs() ->
opts = []}]}, opts = []}]},
{{msg, 'AuthRequest'}, {{msg, 'AuthRequest'},
[#field{name = uuid, fnum = 1, rnum = 2, type = bytes, occurrence = optional, opts = []}, [#field{name = uuid, fnum = 1, rnum = 2, type = bytes, occurrence = optional, opts = []},
#field{name = username, fnum = 2, rnum = 3, type = bytes, occurrence = optional, opts = []}, #field{name = token, fnum = 2, rnum = 3, type = bytes, occurrence = optional, opts = []},
#field{name = salt, fnum = 3, rnum = 4, type = bytes, occurrence = optional, opts = []}, #field{name = timestamp, fnum = 3, rnum = 4, type = int32, occurrence = optional, opts = []}]},
#field{name = token, fnum = 4, rnum = 5, type = bytes, occurrence = optional, opts = []},
#field{name = timestamp, fnum = 5, rnum = 6, type = int32, occurrence = optional, opts = []}]},
{{msg, 'ReplyFrame.Error'}, [#field{name = code, fnum = 1, rnum = 2, type = int32, occurrence = optional, opts = []}, #field{name = message, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}]}, {{msg, 'ReplyFrame.Error'}, [#field{name = code, fnum = 1, rnum = 2, type = int32, occurrence = optional, opts = []}, #field{name = message, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}]},
{{msg, 'ReplyFrame'}, {{msg, 'ReplyFrame'},
[#field{name = packet_id, fnum = 1, rnum = 2, type = uint32, occurrence = optional, opts = []}, [#field{name = packet_id, fnum = 1, rnum = 2, type = uint32, occurrence = optional, opts = []},
@ -5339,10 +5289,8 @@ find_msg_def('RequestFrame') ->
opts = []}]; opts = []}];
find_msg_def('AuthRequest') -> find_msg_def('AuthRequest') ->
[#field{name = uuid, fnum = 1, rnum = 2, type = bytes, occurrence = optional, opts = []}, [#field{name = uuid, fnum = 1, rnum = 2, type = bytes, occurrence = optional, opts = []},
#field{name = username, fnum = 2, rnum = 3, type = bytes, occurrence = optional, opts = []}, #field{name = token, fnum = 2, rnum = 3, type = bytes, occurrence = optional, opts = []},
#field{name = salt, fnum = 3, rnum = 4, type = bytes, occurrence = optional, opts = []}, #field{name = timestamp, fnum = 3, rnum = 4, type = int32, occurrence = optional, opts = []}];
#field{name = token, fnum = 4, rnum = 5, type = bytes, occurrence = optional, opts = []},
#field{name = timestamp, fnum = 5, rnum = 6, type = int32, occurrence = optional, opts = []}];
find_msg_def('ReplyFrame.Error') -> [#field{name = code, fnum = 1, rnum = 2, type = int32, occurrence = optional, opts = []}, #field{name = message, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}]; find_msg_def('ReplyFrame.Error') -> [#field{name = code, fnum = 1, rnum = 2, type = int32, occurrence = optional, opts = []}, #field{name = message, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}];
find_msg_def('ReplyFrame') -> find_msg_def('ReplyFrame') ->
[#field{name = packet_id, fnum = 1, rnum = 2, type = uint32, occurrence = optional, opts = []}, [#field{name = packet_id, fnum = 1, rnum = 2, type = uint32, occurrence = optional, opts = []},

View File

@ -219,15 +219,15 @@ inc_packet_id(PacketId) when PacketId > 0, PacketId < ?MAX_PACKET_ID ->
-spec handle_request_frame(message_pb:'RequestFrame'(), module(), any(), #state{}) -> {noreply, #state{}} | {stop, #state{}}. -spec handle_request_frame(message_pb:'RequestFrame'(), module(), any(), #state{}) -> {noreply, #state{}} | {stop, #state{}}.
handle_request_frame(#'RequestFrame'{packet_id = PacketId, handle_request_frame(#'RequestFrame'{packet_id = PacketId,
body = {auth_request, #'AuthRequest'{uuid = UUID, username = Username, token = Token, salt = Salt, timestamp = Timestamp}}}, body = {auth_request, #'AuthRequest'{uuid = UUID, token = Token, timestamp = Timestamp}}},
Transport, Socket, State) -> Transport, Socket, State) ->
logger:debug("[ws_channel] auth uuid: ~p", [UUID]), logger:debug("[ws_channel] auth uuid: ~p", [UUID]),
case iot_auth:check(Username, Token, UUID, Salt, Timestamp) of case iot_auth:check(Token, UUID, Timestamp) of
ok -> ok ->
case iot_api_client:get_host_by_uuid(UUID) of case iot_api_client:get_host_by_uuid(UUID) of
undefined -> undefined ->
logger:warning("[ws_channel] uuid: ~p, user: ~p, host not found", [UUID, Username]), logger:warning("[ws_channel] uuid: ~p, token: ~p, host not found", [UUID, Token]),
{stop, normal, State}; {stop, normal, State};
{ok, _} -> {ok, _} ->
%% %%