UNPKG

@remnawave/xtls-sdk

Version:

A Typescript SDK for XRAY (XTLS) Core GRPC Api

250 lines 13.1 kB
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; import type { CallContext, CallOptions } from "nice-grpc-common"; import { Network } from "../../../common/net/network"; import { TypedMessage } from "../../../common/serial/typed_message"; export declare const protobufPackage = "xray.app.router.command"; /** * RoutingContext is the context with information relative to routing process. * It conforms to the structure of xray.features.routing.Context and * xray.features.routing.Route. */ export interface RoutingContext { $type: "xray.app.router.command.RoutingContext"; InboundTag: string; Network: Network; SourceIPs: Uint8Array[]; TargetIPs: Uint8Array[]; SourcePort: number; TargetPort: number; TargetDomain: string; Protocol: string; User: string; Attributes: { [key: string]: string; }; OutboundGroupTags: string[]; OutboundTag: string; LocalIPs: Uint8Array[]; LocalPort: number; VlessRoute: number; } export interface RoutingContext_AttributesEntry { $type: "xray.app.router.command.RoutingContext.AttributesEntry"; key: string; value: string; } /** * SubscribeRoutingStatsRequest subscribes to routing statistics channel if * opened by xray-core. * * FieldSelectors selects a subset of fields in routing statistics to return. * Valid selectors: * - inbound: Selects connection's inbound tag. * - network: Selects connection's network. * - ip: Equivalent as "ip_source" and "ip_target", selects both source and * target IP. * - port: Equivalent as "port_source" and "port_target", selects both source * and target port. * - domain: Selects target domain. * - protocol: Select connection's protocol. * - user: Select connection's inbound user email. * - attributes: Select connection's additional attributes. * - outbound: Equivalent as "outbound" and "outbound_group", select both * outbound tag and outbound group tags. * * If FieldSelectors is left empty, all fields will be returned. */ export interface SubscribeRoutingStatsRequest { $type: "xray.app.router.command.SubscribeRoutingStatsRequest"; FieldSelectors: string[]; } /** * TestRouteRequest manually tests a routing result according to the routing * context message. * * RoutingContext is the routing message without outbound information. * * FieldSelectors selects the fields to return in the routing result. All * fields are returned if left empty. * * PublishResult broadcasts the routing result to routing statistics channel * if set true. */ export interface TestRouteRequest { $type: "xray.app.router.command.TestRouteRequest"; RoutingContext: RoutingContext | undefined; FieldSelectors: string[]; PublishResult: boolean; } export interface PrincipleTargetInfo { $type: "xray.app.router.command.PrincipleTargetInfo"; tag: string[]; } export interface OverrideInfo { $type: "xray.app.router.command.OverrideInfo"; target: string; } export interface BalancerMsg { $type: "xray.app.router.command.BalancerMsg"; override: OverrideInfo | undefined; principleTarget: PrincipleTargetInfo | undefined; } export interface GetBalancerInfoRequest { $type: "xray.app.router.command.GetBalancerInfoRequest"; tag: string; } export interface GetBalancerInfoResponse { $type: "xray.app.router.command.GetBalancerInfoResponse"; balancer: BalancerMsg | undefined; } export interface OverrideBalancerTargetRequest { $type: "xray.app.router.command.OverrideBalancerTargetRequest"; balancerTag: string; target: string; } export interface OverrideBalancerTargetResponse { $type: "xray.app.router.command.OverrideBalancerTargetResponse"; } export interface AddRuleRequest { $type: "xray.app.router.command.AddRuleRequest"; config: TypedMessage | undefined; shouldAppend: boolean; } export interface AddRuleResponse { $type: "xray.app.router.command.AddRuleResponse"; } export interface RemoveRuleRequest { $type: "xray.app.router.command.RemoveRuleRequest"; ruleTag: string; } export interface RemoveRuleResponse { $type: "xray.app.router.command.RemoveRuleResponse"; } export interface ListRuleRequest { $type: "xray.app.router.command.ListRuleRequest"; } export interface ListRuleItem { $type: "xray.app.router.command.ListRuleItem"; tag: string; ruleTag: string; } export interface ListRuleResponse { $type: "xray.app.router.command.ListRuleResponse"; rules: ListRuleItem[]; } export interface Config { $type: "xray.app.router.command.Config"; } export declare const RoutingContext: MessageFns<RoutingContext, "xray.app.router.command.RoutingContext">; export declare const RoutingContext_AttributesEntry: MessageFns<RoutingContext_AttributesEntry, "xray.app.router.command.RoutingContext.AttributesEntry">; export declare const SubscribeRoutingStatsRequest: MessageFns<SubscribeRoutingStatsRequest, "xray.app.router.command.SubscribeRoutingStatsRequest">; export declare const TestRouteRequest: MessageFns<TestRouteRequest, "xray.app.router.command.TestRouteRequest">; export declare const PrincipleTargetInfo: MessageFns<PrincipleTargetInfo, "xray.app.router.command.PrincipleTargetInfo">; export declare const OverrideInfo: MessageFns<OverrideInfo, "xray.app.router.command.OverrideInfo">; export declare const BalancerMsg: MessageFns<BalancerMsg, "xray.app.router.command.BalancerMsg">; export declare const GetBalancerInfoRequest: MessageFns<GetBalancerInfoRequest, "xray.app.router.command.GetBalancerInfoRequest">; export declare const GetBalancerInfoResponse: MessageFns<GetBalancerInfoResponse, "xray.app.router.command.GetBalancerInfoResponse">; export declare const OverrideBalancerTargetRequest: MessageFns<OverrideBalancerTargetRequest, "xray.app.router.command.OverrideBalancerTargetRequest">; export declare const OverrideBalancerTargetResponse: MessageFns<OverrideBalancerTargetResponse, "xray.app.router.command.OverrideBalancerTargetResponse">; export declare const AddRuleRequest: MessageFns<AddRuleRequest, "xray.app.router.command.AddRuleRequest">; export declare const AddRuleResponse: MessageFns<AddRuleResponse, "xray.app.router.command.AddRuleResponse">; export declare const RemoveRuleRequest: MessageFns<RemoveRuleRequest, "xray.app.router.command.RemoveRuleRequest">; export declare const RemoveRuleResponse: MessageFns<RemoveRuleResponse, "xray.app.router.command.RemoveRuleResponse">; export declare const ListRuleRequest: MessageFns<ListRuleRequest, "xray.app.router.command.ListRuleRequest">; export declare const ListRuleItem: MessageFns<ListRuleItem, "xray.app.router.command.ListRuleItem">; export declare const ListRuleResponse: MessageFns<ListRuleResponse, "xray.app.router.command.ListRuleResponse">; export declare const Config: MessageFns<Config, "xray.app.router.command.Config">; export type RoutingServiceDefinition = typeof RoutingServiceDefinition; export declare const RoutingServiceDefinition: { readonly name: "RoutingService"; readonly fullName: "xray.app.router.command.RoutingService"; readonly methods: { readonly subscribeRoutingStats: { readonly name: "SubscribeRoutingStats"; readonly requestType: MessageFns<SubscribeRoutingStatsRequest, "xray.app.router.command.SubscribeRoutingStatsRequest">; readonly requestStream: false; readonly responseType: MessageFns<RoutingContext, "xray.app.router.command.RoutingContext">; readonly responseStream: true; readonly options: {}; }; readonly testRoute: { readonly name: "TestRoute"; readonly requestType: MessageFns<TestRouteRequest, "xray.app.router.command.TestRouteRequest">; readonly requestStream: false; readonly responseType: MessageFns<RoutingContext, "xray.app.router.command.RoutingContext">; readonly responseStream: false; readonly options: {}; }; readonly getBalancerInfo: { readonly name: "GetBalancerInfo"; readonly requestType: MessageFns<GetBalancerInfoRequest, "xray.app.router.command.GetBalancerInfoRequest">; readonly requestStream: false; readonly responseType: MessageFns<GetBalancerInfoResponse, "xray.app.router.command.GetBalancerInfoResponse">; readonly responseStream: false; readonly options: {}; }; readonly overrideBalancerTarget: { readonly name: "OverrideBalancerTarget"; readonly requestType: MessageFns<OverrideBalancerTargetRequest, "xray.app.router.command.OverrideBalancerTargetRequest">; readonly requestStream: false; readonly responseType: MessageFns<OverrideBalancerTargetResponse, "xray.app.router.command.OverrideBalancerTargetResponse">; readonly responseStream: false; readonly options: {}; }; readonly addRule: { readonly name: "AddRule"; readonly requestType: MessageFns<AddRuleRequest, "xray.app.router.command.AddRuleRequest">; readonly requestStream: false; readonly responseType: MessageFns<AddRuleResponse, "xray.app.router.command.AddRuleResponse">; readonly responseStream: false; readonly options: {}; }; readonly removeRule: { readonly name: "RemoveRule"; readonly requestType: MessageFns<RemoveRuleRequest, "xray.app.router.command.RemoveRuleRequest">; readonly requestStream: false; readonly responseType: MessageFns<RemoveRuleResponse, "xray.app.router.command.RemoveRuleResponse">; readonly responseStream: false; readonly options: {}; }; readonly listRule: { readonly name: "ListRule"; readonly requestType: MessageFns<ListRuleRequest, "xray.app.router.command.ListRuleRequest">; readonly requestStream: false; readonly responseType: MessageFns<ListRuleResponse, "xray.app.router.command.ListRuleResponse">; readonly responseStream: false; readonly options: {}; }; }; }; export interface RoutingServiceImplementation<CallContextExt = {}> { subscribeRoutingStats(request: SubscribeRoutingStatsRequest, context: CallContext & CallContextExt): ServerStreamingMethodResult<DeepPartial<RoutingContext>>; testRoute(request: TestRouteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<RoutingContext>>; getBalancerInfo(request: GetBalancerInfoRequest, context: CallContext & CallContextExt): Promise<DeepPartial<GetBalancerInfoResponse>>; overrideBalancerTarget(request: OverrideBalancerTargetRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OverrideBalancerTargetResponse>>; addRule(request: AddRuleRequest, context: CallContext & CallContextExt): Promise<DeepPartial<AddRuleResponse>>; removeRule(request: RemoveRuleRequest, context: CallContext & CallContextExt): Promise<DeepPartial<RemoveRuleResponse>>; listRule(request: ListRuleRequest, context: CallContext & CallContextExt): Promise<DeepPartial<ListRuleResponse>>; } export interface RoutingServiceClient<CallOptionsExt = {}> { subscribeRoutingStats(request: DeepPartial<SubscribeRoutingStatsRequest>, options?: CallOptions & CallOptionsExt): AsyncIterable<RoutingContext>; testRoute(request: DeepPartial<TestRouteRequest>, options?: CallOptions & CallOptionsExt): Promise<RoutingContext>; getBalancerInfo(request: DeepPartial<GetBalancerInfoRequest>, options?: CallOptions & CallOptionsExt): Promise<GetBalancerInfoResponse>; overrideBalancerTarget(request: DeepPartial<OverrideBalancerTargetRequest>, options?: CallOptions & CallOptionsExt): Promise<OverrideBalancerTargetResponse>; addRule(request: DeepPartial<AddRuleRequest>, options?: CallOptions & CallOptionsExt): Promise<AddRuleResponse>; removeRule(request: DeepPartial<RemoveRuleRequest>, options?: CallOptions & CallOptionsExt): Promise<RemoveRuleResponse>; listRule(request: DeepPartial<ListRuleRequest>, options?: CallOptions & CallOptionsExt): Promise<ListRuleResponse>; } type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; 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 {} ? { [K in Exclude<keyof T, "$type">]?: DeepPartial<T[K]>; } : Partial<T>; export type ServerStreamingMethodResult<Response> = { [Symbol.asyncIterator](): AsyncIterator<Response, void>; }; export interface MessageFns<T, V extends string> { readonly $type: V; encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; fromJSON(object: any): T; toJSON(message: T): unknown; create(base?: DeepPartial<T>): T; fromPartial(object: DeepPartial<T>): T; } export {}; //# sourceMappingURL=command.d.ts.map