sdlan/message.proto
2026-01-28 18:12:35 +08:00

166 lines
3.3 KiB
Protocol Buffer
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

syntax = "proto3";
// 基础公共类型定义
message SDLV4Info {
uint32 port = 1;
bytes v4 = 2;
uint32 nat_type = 3;
}
message SDLV6Info {
uint32 port = 1;
bytes v6 = 2;
}
// 所有需要建立请求和响应对应关系的都是通过udp包头部4字节的packetId来对应
// 客户端层面通过token或者账号密码登录, 服务器端不管这个,
// 只是验证凭证是否合法 (access_token)
// 这里修改成了扁平的结构, 否则有些字段不好找放的位置
message SDLRegisterSuper {
uint32 pkt_id = 1;
string client_id = 2;
uint32 network_id = 3;
bytes mac = 4;
uint32 ip = 5;
uint32 mask_len = 6;
string hostname = 7;
string pub_key = 8;
string access_token = 9;
}
// 这里修改成了udp的方式后续需要验证: session_token
message SDLRegisterSuperAck {
uint32 pkt_id = 1;
bytes aes_key = 2;
bytes session_token = 3;
}
// 注册失败时候的消息体
message SDLRegisterSuperNak {
uint32 pkt_id = 1;
uint32 error_code = 2;
string error_message = 3;
}
// 网络地址查询
message SDLQueryInfo {
uint32 pkt_id = 1;
uint32 network_id = 2;
bytes src_mac = 3;
bytes dst_mac = 4;
bytes session_token = 5;
}
message SDLPeerInfo {
uint32 pkt_id = 1;
uint32 network_id = 2;
bytes dst_mac = 3;
SDLV4Info v4_info = 4;
optional SDLV6Info v6_info = 5;
}
message SDLEmptyPeerInfo {
uint32 pkt_id = 1;
uint32 network_id = 2;
bytes dst_mac = 3;
}
// 事件定义, 下面的事件是服务器主动推送的,不需要响应
message SDLNatChangedEvent {
uint32 network_id = 1;
bytes mac = 2;
uint32 ip = 3;
}
// 被清理掉的Endpoints
message SDLDropMacsEvent {
uint32 network_id = 1;
repeated bytes macs = 2;
}
// 通知端上必须重新校验
message SDLRefreshAuthEvent {
uint32 network_id = 1;
}
message SDLSendRegisterEvent {
uint32 network_id = 1;
bytes dst_mac = 2;
uint32 nat_ip = 3;
uint32 nat_port = 4;
uint32 nat_type = 5;
optional SDLV6Info v6_info = 6;
}
message SDLNetworkShutdownEvent {
uint32 network_id = 1;
string message = 2;
}
// UDP通讯消息
message SDLStunRequest {
string client_id = 1;
uint32 network_id = 2;
bytes mac = 3;
uint32 ip = 4;
uint32 nat_type = 5;
optional SDLV6Info v6_info = 6;
bytes session_token = 7;
}
message SDLData {
uint32 network_id = 1;
bytes src_mac = 2;
bytes dst_mac = 3;
bool is_p2p = 4;
uint32 ttl = 5;
bytes data = 6;
bytes session_token = 7;
uint32 identity_id = 8;
}
// 这个是客户端之间的相互打洞的数据
message SDLRegister {
uint32 network_id = 1;
bytes src_mac = 2;
bytes dst_mac = 3;
}
message SDLRegisterAck {
uint32 network_id = 1;
bytes src_mac = 2;
bytes dst_mac = 3;
}
// 网络类型探测
message SDLStunProbe {
uint32 cookie = 1;
uint32 attr = 2;
uint32 step = 3;
}
message SDLStunProbeReply {
uint32 cookie = 1;
uint32 step = 2;
uint32 port = 3;
uint32 ip = 4;
}
// ARP查询相关
message SDLArpRequest {
uint32 network_id = 1;
uint32 target_ip = 2;
bytes session_token = 3;
}
message SDLArpResponse {
uint32 network_id = 1;
uint32 target_ip = 2;
bytes target_mac = 3;
}