-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathyaktunnel.proto
181 lines (141 loc) · 3.91 KB
/
yaktunnel.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
syntax = "proto3";
package tpb;
option go_package = "/;tpb";
message Empty{}
service Tunnel {
rpc RemoteIP(Empty) returns (RemoteIPResponse);
rpc CreateTunnel(stream TunnelInput) returns(stream TunnelOutput);
// 注册一个隧道
rpc RegisterTunnel(RegisterTunnelRequest) returns (RegisterTunnelResponse);
// 获取所有隧道的简要描述信息
rpc GetAllRegisteredTunnel(GetAllRegisteredTunnelRequest) returns (GetAllRegisteredTunnelResponse);
rpc GetRegisteredTunnelDescriptionByID(GetRegisteredTunnelDescriptionByIDRequest) returns (RegisteredTunnel);
// 随机端口触发器
rpc RequireRandomPortTrigger(RequireRandomPortTriggerParams) returns (RequireRandomPortTriggerResponse);
rpc QueryExistedRandomPortTrigger(QueryExistedRandomPortTriggerRequest) returns (QueryExistedRandomPortTriggerResponse);
// 随机 ICMP 长度触发器
rpc QuerySpecificICMPLengthTrigger(QuerySpecificICMPLengthTriggerParams) returns (QuerySpecificICMPLengthTriggerResponse);
}
message RegisterTunnelRequest {
bytes PublicKeyPEM = 1;
string Secret = 2;
// 用来描述 Tunnel 携带信息的,比如想要测试的机器名或者测试的内容之类的
string Verbose = 3;
}
message RegisterTunnelResponse {
string Id = 1;
}
message GetAllRegisteredTunnelRequest {
// 二级密码
string SecondaryPassword = 5;
}
message RegisterTunnelMeta {
string ConnectHost = 1;
int64 ConnectPort = 2;
string Id = 3;
string Verbose = 4;
}
message GetAllRegisteredTunnelResponse {
repeated RegisterTunnelMeta Tunnels = 1;
}
message GetRegisteredTunnelDescriptionByIDRequest {
string Id = 1;
// 二级密码
string SecondaryPassword = 2;
}
message RegisteredTunnel {
RegisterTunnelMeta Info = 1;
bytes Auth = 2;
}
message QuerySpecificICMPLengthTriggerParams {
int32 Length = 1;
}
message ICMPTriggerNotification {
int32 Size = 1;
string CurrentRemoteAddr = 2;
repeated string Histories = 3;
int32 CurrentRemoteCachedConnectionCount = 4;
int32 SizeCachedHistoryConnectionCount = 5;
int64 TriggerTimestamp = 6;
int64 Timestamp = 7;
}
message QuerySpecificICMPLengthTriggerResponse {
repeated ICMPTriggerNotification Notifications = 1;
}
service DNSLog {
rpc RequireDomain(RequireDomainParams) returns (RequireDomainResponse);
rpc QueryExistedDNSLog(QueryExistedDNSLogParams) returns (QueryExistedDNSLogResponse);
}
message QueryExistedDNSLogParams {
string Token = 1;
}
message DNSLogEvent {
string Type = 1;
string Token = 2;
string Domain = 3;
string RemoteAddr = 4;
string RemoteIP = 5;
int32 RemotePort = 6;
bytes Raw = 7;
int64 Timestamp = 8;
}
message QueryExistedDNSLogResponse {
repeated DNSLogEvent Events = 1;
}
message RequireDomainParams {
}
message RequireDomainResponse {
string Domain = 1;
string Token = 2;
}
message QueryExistedRandomPortTriggerRequest {
string Token = 1;
}
message RandomPortTriggerEvent {
string RemoteAddr = 1;
string RemoteIP = 2;
int32 RemotePort = 3;
int32 LocalPort = 4;
repeated string History = 5;
int32 CurrentRemoteCachedConnectionCount = 6;
int32 LocalPortCachedHistoryConnectionCount = 7;
int64 TriggerTimestamp = 8;
int64 Timestamp = 9;
}
message QueryExistedRandomPortTriggerResponse {
repeated RandomPortTriggerEvent Events = 1;
}
message RequireRandomPortTriggerParams {
string Token = 1;
int32 TTLSeconds = 2;
}
message RequireRandomPortTriggerResponse {
int32 Port = 1;
string Token = 2;
string ExternalIP = 3;
}
message Mirror {
string Id = 1;
int32 Port = 2;
string Network = 3;
}
message TunnelInput {
repeated Mirror Mirrors = 1;
// 发送给哪个端口镜像的?
string ToId = 2;
// 数据
bytes Data = 3;
// 对应的远端地址是啥?用来区分 conn
string ToRemoteAddr = 4;
// Close
bool Close = 5;
}
message TunnelOutput {
string FromId = 1;
string RemoteAddr = 2;
bytes Data = 3;
bool Close = 4;
}
message RemoteIPResponse {
string IPAddress = 1;
}