fix network code

This commit is contained in:
anlicheng 2025-10-22 15:31:54 +08:00
parent 0a0688d230
commit f7371377ed
3 changed files with 40 additions and 15 deletions

View File

@ -20,7 +20,7 @@
handle_request("POST", "/test/auth_token", _, PostParams) ->
lager:debug("[test_handler] get post params: ~p", [PostParams]),
Data = #{
<<"network_id">> => 8,
<<"network_id">> => <<"x7qpl9rtf3sd5gh8jk2mn6bv">>,
<<"upgrade_type">> => 0,
<<"upgrade_prompt">> => <<"simple upgrade">>,
<<"upgrade_address">> => <<"upgrade_address">>
@ -36,27 +36,47 @@ handle_request("POST", "/test/upgrade", _, PostParams) ->
},
{ok, 200, sdlan_util:json_data(Data)};
handle_request("POST", "/test/get_user_network", _, PostParams) ->
lager:debug("[test_handler] get post params: ~p", [PostParams]),
Data = #{
<<"network">> => [
#{
<<"name">> => <<"test1">>,
<<"code">> => <<"x7qpl9rtf3sd5gh8jk2mn6bv">>
},
#{
<<"name">> => <<"test2">>,
<<"code">> => <<"p8km3wz7es2df9gh4jk1lo5">>
},
#{
<<"name">> => <<"test3">>,
<<"code">> => <<"9fg2hj5kl8pr3ty6vb1nm7x">>
}
]
},
{ok, 200, sdlan_util:json_data(Data)};
handle_request("GET", "/test/get_all_networks", _, _) ->
{ok, 200, sdlan_util:json_data([<<"8">>, <<"9">>, <<"10">>])};
{ok, 200, sdlan_util:json_data([<<"x7qpl9rtf3sd5gh8jk2mn6bv">>, <<"p8km3wz7es2df9gh4jk1lo5">>, <<"9fg2hj5kl8pr3ty6vb1nm7x">>])};
handle_request("GET", "/test/get_network", #{<<"id">> := Id}, _) ->
Networks = #{
<<"8">> => #{
<<"id">> => <<"8">>,
<<"x7qpl9rtf3sd5gh8jk2mn6bv">> => #{
<<"id">> => <<"x7qpl9rtf3sd5gh8jk2mn6bv">>,
<<"name">> => <<"test1">>,
<<"ipaddr">> => <<"10.211.179.0/24">>,
<<"owner_id">> => 1234,
<<"disabled_clients">> => []
},
<<"9">> => #{
<<"id">> => <<"9">>,
<<"p8km3wz7es2df9gh4jk1lo5">> => #{
<<"id">> => <<"p8km3wz7es2df9gh4jk1lo5">>,
<<"name">> => <<"test2">>,
<<"ipaddr">> => <<"10.211.180.0/24">>,
<<"owner_id">> => 1234,
<<"disabled_clients">> => []
},
<<"10">> => #{
<<"id">> => <<"10">>,
<<"9fg2hj5kl8pr3ty6vb1nm7x">> => #{
<<"id">> => <<"9fg2hj5kl8pr3ty6vb1nm7x">>,
<<"name">> => <<"test3">>,
<<"ipaddr">> => <<"10.211.181.0/24">>,
<<"owner_id">> => 1234,

View File

@ -123,15 +123,15 @@ handle_info({tcp, Sock, <<PacketId:32, ?PACKET_REGISTER_SUPER, Body/binary>>}, S
%% Mac地址不能是广播地址
true = not (sdlan_util:is_multicast_mac(Mac) orelse sdlan_util:is_broadcast_mac(Mac)),
AuthResult = case {NetworkCode, Token} of
{<<>>, Token} ->
AuthResult = if
Token /= <<>> ->
sdlan_api:auth_token(ClientId, Token, Version);
{NetworkCode, <<>>} ->
NetworkCode /= <<>> ->
sdlan_api:check_network_code(ClientId, NetworkCode, Version)
end,
case AuthResult of
{ok, #{<<"result">> := #{<<"network_id">> := NetworkId, <<"upgrade_type">> := UpgradeType, <<"upgrade_prompt">> := UpgradePrompt, <<"upgrade_address">> := UpgradeAddress}}} when is_integer(NetworkId) ->
{ok, #{<<"result">> := #{<<"network_id">> := NetworkId, <<"upgrade_type">> := UpgradeType, <<"upgrade_prompt">> := UpgradePrompt, <<"upgrade_address">> := UpgradeAddress}}} when is_binary(NetworkId) ->
lager:debug("[sdlan_channel] client_id: ~p, mac: ~p, token: ~p, version: ~p, registerd, alloc network_id: ~p", [ClientId, sdlan_util:format_mac(Mac), Token, Version, NetworkId]),
%% network的对应关系
case sdlan_network:get_pid(NetworkId) of
@ -141,7 +141,7 @@ handle_info({tcp, Sock, <<PacketId:32, ?PACKET_REGISTER_SUPER, Body/binary>>}, S
RsaPubKey = sdlan_cipher:rsa_pem_decode(PubKey),
EncodedAesKey = rsa_encode(AesKey, RsaPubKey),
RegisterSuperAck = sdlan_pb:encode_msg(#sdl_register_super_ack {
RegisterSuperAck = sdlan_pb:encode_msg(Ack = #sdl_register_super_ack {
dev_addr = #sdl_dev_addr{
network_id = NetworkId,
net_addr = NetAddr,
@ -153,6 +153,7 @@ handle_info({tcp, Sock, <<PacketId:32, ?PACKET_REGISTER_SUPER, Body/binary>>}, S
upgrade_prompt = UpgradePrompt,
upgrade_address = UpgradeAddress
}),
lager:debug("ack is: ~p", [Ack]),
%%
Reply = <<PacketId:32, ?PACKET_REGISTER_SUPER_ACK, RegisterSuperAck/binary>>,
@ -230,7 +231,7 @@ handle_info({tcp, Sock, <<PacketId:32, ?PACKET_QUERY_INFO, Body/binary>>}, State
end;
handle_info({tcp, _Sock, <<0:32, ?PACKET_PING>>}, State = #state{transport = Transport, socket = Sock, client_id = ClientId, ping_counter = PingCounter}) ->
lager:debug("[sdlan_channel] client_id: ~p, get ping", [ClientId]),
%lager:debug("[sdlan_channel] client_id: ~p, get ping", [ClientId]),
Transport:send(Sock, <<0:32, ?PACKET_PONG>>),
{noreply, State#state{ping_counter = PingCounter + 1}};

View File

@ -23,7 +23,7 @@
-export([start_link/2]).
-export([get_name/1, get_pid/1, assign_ip_addr/5, peer_info/3, unregister/3, debug_info/1, get_network_id/1, get_used_map/1]).
-export([forward/5, update_hole/6, disable_client/2, get_channel/2, dropout_client/2, reload/1]).
-export([test_event/1]).
-export([test_event/1, simple_debug/0]).
%% gen_server callbacks
-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).
@ -73,6 +73,10 @@
%%% API
%%%===================================================================
simple_debug() ->
Pid = get_pid(<<"x7qpl9rtf3sd5gh8jk2mn6bv">>),
debug_info(Pid).
%% -- MARK:
test_event(Pid) ->
gen_server:cast(Pid, test_event).