diff --git a/apps/sdlan/src/http_handler/test_handler.erl b/apps/sdlan/src/http_handler/test_handler.erl index 0d71494..ad9715d 100644 --- a/apps/sdlan/src/http_handler/test_handler.erl +++ b/apps/sdlan/src/http_handler/test_handler.erl @@ -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, diff --git a/apps/sdlan/src/sdlan_channel.erl b/apps/sdlan/src/sdlan_channel.erl index dce1329..425dbb9 100644 --- a/apps/sdlan/src/sdlan_channel.erl +++ b/apps/sdlan/src/sdlan_channel.erl @@ -123,15 +123,15 @@ handle_info({tcp, Sock, <>}, 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, <>}, 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, <>}, S upgrade_prompt = UpgradePrompt, upgrade_address = UpgradeAddress }), + lager:debug("ack is: ~p", [Ack]), %% 发送确认信息 Reply = <>, @@ -230,7 +231,7 @@ handle_info({tcp, Sock, <>}, 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}}; diff --git a/apps/sdlan/src/sdlan_network.erl b/apps/sdlan/src/sdlan_network.erl index cd8374c..b62ac4a 100644 --- a/apps/sdlan/src/sdlan_network.erl +++ b/apps/sdlan/src/sdlan_network.erl @@ -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).