@remnawave/xtls-sdk 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,222 +0,0 @@
1
- import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
2
- import { type CallContext, type CallOptions } from "nice-grpc-common";
3
- import { Network } from "../../../common/net/network";
4
- import { TypedMessage } from "../../../common/serial/typed_message";
5
- export declare const protobufPackage = "xray.app.router.command";
6
- /**
7
- * RoutingContext is the context with information relative to routing process.
8
- * It conforms to the structure of xray.features.routing.Context and
9
- * xray.features.routing.Route.
10
- */
11
- export interface RoutingContext {
12
- $type: "xray.app.router.command.RoutingContext";
13
- InboundTag: string;
14
- Network: Network;
15
- SourceIPs: Uint8Array[];
16
- TargetIPs: Uint8Array[];
17
- SourcePort: number;
18
- TargetPort: number;
19
- TargetDomain: string;
20
- Protocol: string;
21
- User: string;
22
- Attributes: {
23
- [key: string]: string;
24
- };
25
- OutboundGroupTags: string[];
26
- OutboundTag: string;
27
- }
28
- export interface RoutingContext_AttributesEntry {
29
- $type: "xray.app.router.command.RoutingContext.AttributesEntry";
30
- key: string;
31
- value: string;
32
- }
33
- /**
34
- * SubscribeRoutingStatsRequest subscribes to routing statistics channel if
35
- * opened by xray-core.
36
- * * FieldSelectors selects a subset of fields in routing statistics to return.
37
- * Valid selectors:
38
- * - inbound: Selects connection's inbound tag.
39
- * - network: Selects connection's network.
40
- * - ip: Equivalent as "ip_source" and "ip_target", selects both source and
41
- * target IP.
42
- * - port: Equivalent as "port_source" and "port_target", selects both source
43
- * and target port.
44
- * - domain: Selects target domain.
45
- * - protocol: Select connection's protocol.
46
- * - user: Select connection's inbound user email.
47
- * - attributes: Select connection's additional attributes.
48
- * - outbound: Equivalent as "outbound" and "outbound_group", select both
49
- * outbound tag and outbound group tags.
50
- * * If FieldSelectors is left empty, all fields will be returned.
51
- */
52
- export interface SubscribeRoutingStatsRequest {
53
- $type: "xray.app.router.command.SubscribeRoutingStatsRequest";
54
- FieldSelectors: string[];
55
- }
56
- /**
57
- * TestRouteRequest manually tests a routing result according to the routing
58
- * context message.
59
- * * RoutingContext is the routing message without outbound information.
60
- * * FieldSelectors selects the fields to return in the routing result. All
61
- * fields are returned if left empty.
62
- * * PublishResult broadcasts the routing result to routing statistics channel
63
- * if set true.
64
- */
65
- export interface TestRouteRequest {
66
- $type: "xray.app.router.command.TestRouteRequest";
67
- RoutingContext: RoutingContext | undefined;
68
- FieldSelectors: string[];
69
- PublishResult: boolean;
70
- }
71
- export interface PrincipleTargetInfo {
72
- $type: "xray.app.router.command.PrincipleTargetInfo";
73
- tag: string[];
74
- }
75
- export interface OverrideInfo {
76
- $type: "xray.app.router.command.OverrideInfo";
77
- target: string;
78
- }
79
- export interface BalancerMsg {
80
- $type: "xray.app.router.command.BalancerMsg";
81
- override: OverrideInfo | undefined;
82
- principleTarget: PrincipleTargetInfo | undefined;
83
- }
84
- export interface GetBalancerInfoRequest {
85
- $type: "xray.app.router.command.GetBalancerInfoRequest";
86
- tag: string;
87
- }
88
- export interface GetBalancerInfoResponse {
89
- $type: "xray.app.router.command.GetBalancerInfoResponse";
90
- balancer: BalancerMsg | undefined;
91
- }
92
- export interface OverrideBalancerTargetRequest {
93
- $type: "xray.app.router.command.OverrideBalancerTargetRequest";
94
- balancerTag: string;
95
- target: string;
96
- }
97
- export interface OverrideBalancerTargetResponse {
98
- $type: "xray.app.router.command.OverrideBalancerTargetResponse";
99
- }
100
- export interface AddRuleRequest {
101
- $type: "xray.app.router.command.AddRuleRequest";
102
- config: TypedMessage | undefined;
103
- shouldAppend: boolean;
104
- }
105
- export interface AddRuleResponse {
106
- $type: "xray.app.router.command.AddRuleResponse";
107
- }
108
- export interface RemoveRuleRequest {
109
- $type: "xray.app.router.command.RemoveRuleRequest";
110
- ruleTag: string;
111
- }
112
- export interface RemoveRuleResponse {
113
- $type: "xray.app.router.command.RemoveRuleResponse";
114
- }
115
- export interface Config {
116
- $type: "xray.app.router.command.Config";
117
- }
118
- export declare const RoutingContext: MessageFns<RoutingContext, "xray.app.router.command.RoutingContext">;
119
- export declare const RoutingContext_AttributesEntry: MessageFns<RoutingContext_AttributesEntry, "xray.app.router.command.RoutingContext.AttributesEntry">;
120
- export declare const SubscribeRoutingStatsRequest: MessageFns<SubscribeRoutingStatsRequest, "xray.app.router.command.SubscribeRoutingStatsRequest">;
121
- export declare const TestRouteRequest: MessageFns<TestRouteRequest, "xray.app.router.command.TestRouteRequest">;
122
- export declare const PrincipleTargetInfo: MessageFns<PrincipleTargetInfo, "xray.app.router.command.PrincipleTargetInfo">;
123
- export declare const OverrideInfo: MessageFns<OverrideInfo, "xray.app.router.command.OverrideInfo">;
124
- export declare const BalancerMsg: MessageFns<BalancerMsg, "xray.app.router.command.BalancerMsg">;
125
- export declare const GetBalancerInfoRequest: MessageFns<GetBalancerInfoRequest, "xray.app.router.command.GetBalancerInfoRequest">;
126
- export declare const GetBalancerInfoResponse: MessageFns<GetBalancerInfoResponse, "xray.app.router.command.GetBalancerInfoResponse">;
127
- export declare const OverrideBalancerTargetRequest: MessageFns<OverrideBalancerTargetRequest, "xray.app.router.command.OverrideBalancerTargetRequest">;
128
- export declare const OverrideBalancerTargetResponse: MessageFns<OverrideBalancerTargetResponse, "xray.app.router.command.OverrideBalancerTargetResponse">;
129
- export declare const AddRuleRequest: MessageFns<AddRuleRequest, "xray.app.router.command.AddRuleRequest">;
130
- export declare const AddRuleResponse: MessageFns<AddRuleResponse, "xray.app.router.command.AddRuleResponse">;
131
- export declare const RemoveRuleRequest: MessageFns<RemoveRuleRequest, "xray.app.router.command.RemoveRuleRequest">;
132
- export declare const RemoveRuleResponse: MessageFns<RemoveRuleResponse, "xray.app.router.command.RemoveRuleResponse">;
133
- export declare const Config: MessageFns<Config, "xray.app.router.command.Config">;
134
- export type RoutingServiceDefinition = typeof RoutingServiceDefinition;
135
- export declare const RoutingServiceDefinition: {
136
- readonly name: "RoutingService";
137
- readonly fullName: "xray.app.router.command.RoutingService";
138
- readonly methods: {
139
- readonly subscribeRoutingStats: {
140
- readonly name: "SubscribeRoutingStats";
141
- readonly requestType: MessageFns<SubscribeRoutingStatsRequest, "xray.app.router.command.SubscribeRoutingStatsRequest">;
142
- readonly requestStream: false;
143
- readonly responseType: MessageFns<RoutingContext, "xray.app.router.command.RoutingContext">;
144
- readonly responseStream: true;
145
- readonly options: {};
146
- };
147
- readonly testRoute: {
148
- readonly name: "TestRoute";
149
- readonly requestType: MessageFns<TestRouteRequest, "xray.app.router.command.TestRouteRequest">;
150
- readonly requestStream: false;
151
- readonly responseType: MessageFns<RoutingContext, "xray.app.router.command.RoutingContext">;
152
- readonly responseStream: false;
153
- readonly options: {};
154
- };
155
- readonly getBalancerInfo: {
156
- readonly name: "GetBalancerInfo";
157
- readonly requestType: MessageFns<GetBalancerInfoRequest, "xray.app.router.command.GetBalancerInfoRequest">;
158
- readonly requestStream: false;
159
- readonly responseType: MessageFns<GetBalancerInfoResponse, "xray.app.router.command.GetBalancerInfoResponse">;
160
- readonly responseStream: false;
161
- readonly options: {};
162
- };
163
- readonly overrideBalancerTarget: {
164
- readonly name: "OverrideBalancerTarget";
165
- readonly requestType: MessageFns<OverrideBalancerTargetRequest, "xray.app.router.command.OverrideBalancerTargetRequest">;
166
- readonly requestStream: false;
167
- readonly responseType: MessageFns<OverrideBalancerTargetResponse, "xray.app.router.command.OverrideBalancerTargetResponse">;
168
- readonly responseStream: false;
169
- readonly options: {};
170
- };
171
- readonly addRule: {
172
- readonly name: "AddRule";
173
- readonly requestType: MessageFns<AddRuleRequest, "xray.app.router.command.AddRuleRequest">;
174
- readonly requestStream: false;
175
- readonly responseType: MessageFns<AddRuleResponse, "xray.app.router.command.AddRuleResponse">;
176
- readonly responseStream: false;
177
- readonly options: {};
178
- };
179
- readonly removeRule: {
180
- readonly name: "RemoveRule";
181
- readonly requestType: MessageFns<RemoveRuleRequest, "xray.app.router.command.RemoveRuleRequest">;
182
- readonly requestStream: false;
183
- readonly responseType: MessageFns<RemoveRuleResponse, "xray.app.router.command.RemoveRuleResponse">;
184
- readonly responseStream: false;
185
- readonly options: {};
186
- };
187
- };
188
- };
189
- export interface RoutingServiceImplementation<CallContextExt = {}> {
190
- subscribeRoutingStats(request: SubscribeRoutingStatsRequest, context: CallContext & CallContextExt): ServerStreamingMethodResult<DeepPartial<RoutingContext>>;
191
- testRoute(request: TestRouteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<RoutingContext>>;
192
- getBalancerInfo(request: GetBalancerInfoRequest, context: CallContext & CallContextExt): Promise<DeepPartial<GetBalancerInfoResponse>>;
193
- overrideBalancerTarget(request: OverrideBalancerTargetRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OverrideBalancerTargetResponse>>;
194
- addRule(request: AddRuleRequest, context: CallContext & CallContextExt): Promise<DeepPartial<AddRuleResponse>>;
195
- removeRule(request: RemoveRuleRequest, context: CallContext & CallContextExt): Promise<DeepPartial<RemoveRuleResponse>>;
196
- }
197
- export interface RoutingServiceClient<CallOptionsExt = {}> {
198
- subscribeRoutingStats(request: DeepPartial<SubscribeRoutingStatsRequest>, options?: CallOptions & CallOptionsExt): AsyncIterable<RoutingContext>;
199
- testRoute(request: DeepPartial<TestRouteRequest>, options?: CallOptions & CallOptionsExt): Promise<RoutingContext>;
200
- getBalancerInfo(request: DeepPartial<GetBalancerInfoRequest>, options?: CallOptions & CallOptionsExt): Promise<GetBalancerInfoResponse>;
201
- overrideBalancerTarget(request: DeepPartial<OverrideBalancerTargetRequest>, options?: CallOptions & CallOptionsExt): Promise<OverrideBalancerTargetResponse>;
202
- addRule(request: DeepPartial<AddRuleRequest>, options?: CallOptions & CallOptionsExt): Promise<AddRuleResponse>;
203
- removeRule(request: DeepPartial<RemoveRuleRequest>, options?: CallOptions & CallOptionsExt): Promise<RemoveRuleResponse>;
204
- }
205
- type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
206
- export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
207
- [K in Exclude<keyof T, "$type">]?: DeepPartial<T[K]>;
208
- } : Partial<T>;
209
- export type ServerStreamingMethodResult<Response> = {
210
- [Symbol.asyncIterator](): AsyncIterator<Response, void>;
211
- };
212
- export interface MessageFns<T, V extends string> {
213
- readonly $type: V;
214
- encode(message: T, writer?: BinaryWriter): BinaryWriter;
215
- decode(input: BinaryReader | Uint8Array, length?: number): T;
216
- fromJSON(object: any): T;
217
- toJSON(message: T): unknown;
218
- create(base?: DeepPartial<T>): T;
219
- fromPartial(object: DeepPartial<T>): T;
220
- }
221
- export {};
222
- //# sourceMappingURL=command.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../../../src/xray-protos/app/router/command/command.ts"],"names":[],"mappings":"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"}