@localzet/xtls-sdk
Version:
TypeScript SDK for XRAY/AURA Core
1,360 lines • 54.5 kB
JavaScript
"use strict";
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.2.7
// protoc v5.28.3
// source: app/router/config.proto
Object.defineProperty(exports, "__esModule", { value: true });
exports.Config = exports.StrategyLeastLoadConfig = exports.StrategyWeight = exports.BalancingRule = exports.RoutingRule_AttributesEntry = exports.RoutingRule = exports.GeoSiteList = exports.GeoSite = exports.GeoIPList = exports.GeoIP = exports.CIDR = exports.Domain_Attribute = exports.Domain = exports.Config_DomainStrategy = exports.Domain_Type = exports.protobufPackage = void 0;
exports.domain_TypeFromJSON = domain_TypeFromJSON;
exports.domain_TypeToJSON = domain_TypeToJSON;
exports.config_DomainStrategyFromJSON = config_DomainStrategyFromJSON;
exports.config_DomainStrategyToJSON = config_DomainStrategyToJSON;
/* eslint-disable */
const wire_1 = require("@bufbuild/protobuf/wire");
const network_1 = require("../../common/net/network");
const port_1 = require("../../common/net/port");
const typed_message_1 = require("../../common/serial/typed_message");
const typeRegistry_1 = require("../../typeRegistry");
exports.protobufPackage = 'xray.app.router';
/** Type of domain value. */
var Domain_Type;
(function (Domain_Type) {
/** Plain - The value is used as is. */
Domain_Type[Domain_Type["Plain"] = 0] = "Plain";
/** Regex - The value is used as a regular expression. */
Domain_Type[Domain_Type["Regex"] = 1] = "Regex";
/** Domain - The value is a root domain. */
Domain_Type[Domain_Type["Domain"] = 2] = "Domain";
/** Full - The value is a domain. */
Domain_Type[Domain_Type["Full"] = 3] = "Full";
Domain_Type[Domain_Type["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
})(Domain_Type || (exports.Domain_Type = Domain_Type = {}));
function domain_TypeFromJSON(object) {
switch (object) {
case 0:
case 'Plain':
return Domain_Type.Plain;
case 1:
case 'Regex':
return Domain_Type.Regex;
case 2:
case 'Domain':
return Domain_Type.Domain;
case 3:
case 'Full':
return Domain_Type.Full;
case -1:
case 'UNRECOGNIZED':
default:
return Domain_Type.UNRECOGNIZED;
}
}
function domain_TypeToJSON(object) {
switch (object) {
case Domain_Type.Plain:
return 'Plain';
case Domain_Type.Regex:
return 'Regex';
case Domain_Type.Domain:
return 'Domain';
case Domain_Type.Full:
return 'Full';
case Domain_Type.UNRECOGNIZED:
default:
return 'UNRECOGNIZED';
}
}
var Config_DomainStrategy;
(function (Config_DomainStrategy) {
/** AsIs - Use domain as is. */
Config_DomainStrategy[Config_DomainStrategy["AsIs"] = 0] = "AsIs";
/** UseIp - Always resolve IP for domains. */
Config_DomainStrategy[Config_DomainStrategy["UseIp"] = 1] = "UseIp";
/** IpIfNonMatch - Resolve to IP if the domain doesn't match any rules. */
Config_DomainStrategy[Config_DomainStrategy["IpIfNonMatch"] = 2] = "IpIfNonMatch";
/** IpOnDemand - Resolve to IP if any rule requires IP matching. */
Config_DomainStrategy[Config_DomainStrategy["IpOnDemand"] = 3] = "IpOnDemand";
Config_DomainStrategy[Config_DomainStrategy["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
})(Config_DomainStrategy || (exports.Config_DomainStrategy = Config_DomainStrategy = {}));
function config_DomainStrategyFromJSON(object) {
switch (object) {
case 0:
case 'AsIs':
return Config_DomainStrategy.AsIs;
case 1:
case 'UseIp':
return Config_DomainStrategy.UseIp;
case 2:
case 'IpIfNonMatch':
return Config_DomainStrategy.IpIfNonMatch;
case 3:
case 'IpOnDemand':
return Config_DomainStrategy.IpOnDemand;
case -1:
case 'UNRECOGNIZED':
default:
return Config_DomainStrategy.UNRECOGNIZED;
}
}
function config_DomainStrategyToJSON(object) {
switch (object) {
case Config_DomainStrategy.AsIs:
return 'AsIs';
case Config_DomainStrategy.UseIp:
return 'UseIp';
case Config_DomainStrategy.IpIfNonMatch:
return 'IpIfNonMatch';
case Config_DomainStrategy.IpOnDemand:
return 'IpOnDemand';
case Config_DomainStrategy.UNRECOGNIZED:
default:
return 'UNRECOGNIZED';
}
}
function createBaseDomain() {
return { $type: 'xray.app.router.Domain', type: 0, value: '', attribute: [] };
}
exports.Domain = {
$type: 'xray.app.router.Domain',
encode(message, writer = new wire_1.BinaryWriter()) {
if (message.type !== 0) {
writer.uint32(8).int32(message.type);
}
if (message.value !== '') {
writer.uint32(18).string(message.value);
}
for (const v of message.attribute) {
exports.Domain_Attribute.encode(v, writer.uint32(26).fork()).join();
}
return writer;
},
decode(input, length) {
const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseDomain();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 8) {
break;
}
message.type = reader.int32();
continue;
}
case 2: {
if (tag !== 18) {
break;
}
message.value = reader.string();
continue;
}
case 3: {
if (tag !== 26) {
break;
}
message.attribute.push(exports.Domain_Attribute.decode(reader, reader.uint32()));
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object) {
return {
$type: exports.Domain.$type,
type: isSet(object.type) ? domain_TypeFromJSON(object.type) : 0,
value: isSet(object.value) ? globalThis.String(object.value) : '',
attribute: globalThis.Array.isArray(object?.attribute)
? object.attribute.map((e) => exports.Domain_Attribute.fromJSON(e))
: [],
};
},
toJSON(message) {
const obj = {};
if (message.type !== 0) {
obj.type = domain_TypeToJSON(message.type);
}
if (message.value !== '') {
obj.value = message.value;
}
if (message.attribute?.length) {
obj.attribute = message.attribute.map((e) => exports.Domain_Attribute.toJSON(e));
}
return obj;
},
create(base) {
return exports.Domain.fromPartial(base ?? {});
},
fromPartial(object) {
const message = createBaseDomain();
message.type = object.type ?? 0;
message.value = object.value ?? '';
message.attribute = object.attribute?.map((e) => exports.Domain_Attribute.fromPartial(e)) || [];
return message;
},
};
typeRegistry_1.messageTypeRegistry.set(exports.Domain.$type, exports.Domain);
function createBaseDomain_Attribute() {
return { $type: 'xray.app.router.Domain.Attribute', key: '', boolValue: undefined, intValue: undefined };
}
exports.Domain_Attribute = {
$type: 'xray.app.router.Domain.Attribute',
encode(message, writer = new wire_1.BinaryWriter()) {
if (message.key !== '') {
writer.uint32(10).string(message.key);
}
if (message.boolValue !== undefined) {
writer.uint32(16).bool(message.boolValue);
}
if (message.intValue !== undefined) {
writer.uint32(24).int64(message.intValue);
}
return writer;
},
decode(input, length) {
const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseDomain_Attribute();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.key = reader.string();
continue;
}
case 2: {
if (tag !== 16) {
break;
}
message.boolValue = reader.bool();
continue;
}
case 3: {
if (tag !== 24) {
break;
}
message.intValue = longToNumber(reader.int64());
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object) {
return {
$type: exports.Domain_Attribute.$type,
key: isSet(object.key) ? globalThis.String(object.key) : '',
boolValue: isSet(object.boolValue) ? globalThis.Boolean(object.boolValue) : undefined,
intValue: isSet(object.intValue) ? globalThis.Number(object.intValue) : undefined,
};
},
toJSON(message) {
const obj = {};
if (message.key !== '') {
obj.key = message.key;
}
if (message.boolValue !== undefined) {
obj.boolValue = message.boolValue;
}
if (message.intValue !== undefined) {
obj.intValue = Math.round(message.intValue);
}
return obj;
},
create(base) {
return exports.Domain_Attribute.fromPartial(base ?? {});
},
fromPartial(object) {
const message = createBaseDomain_Attribute();
message.key = object.key ?? '';
message.boolValue = object.boolValue ?? undefined;
message.intValue = object.intValue ?? undefined;
return message;
},
};
typeRegistry_1.messageTypeRegistry.set(exports.Domain_Attribute.$type, exports.Domain_Attribute);
function createBaseCIDR() {
return { $type: 'xray.app.router.CIDR', ip: new Uint8Array(0), prefix: 0 };
}
exports.CIDR = {
$type: 'xray.app.router.CIDR',
encode(message, writer = new wire_1.BinaryWriter()) {
if (message.ip.length !== 0) {
writer.uint32(10).bytes(message.ip);
}
if (message.prefix !== 0) {
writer.uint32(16).uint32(message.prefix);
}
return writer;
},
decode(input, length) {
const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseCIDR();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.ip = reader.bytes();
continue;
}
case 2: {
if (tag !== 16) {
break;
}
message.prefix = reader.uint32();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object) {
return {
$type: exports.CIDR.$type,
ip: isSet(object.ip) ? bytesFromBase64(object.ip) : new Uint8Array(0),
prefix: isSet(object.prefix) ? globalThis.Number(object.prefix) : 0,
};
},
toJSON(message) {
const obj = {};
if (message.ip.length !== 0) {
obj.ip = base64FromBytes(message.ip);
}
if (message.prefix !== 0) {
obj.prefix = Math.round(message.prefix);
}
return obj;
},
create(base) {
return exports.CIDR.fromPartial(base ?? {});
},
fromPartial(object) {
const message = createBaseCIDR();
message.ip = object.ip ?? new Uint8Array(0);
message.prefix = object.prefix ?? 0;
return message;
},
};
typeRegistry_1.messageTypeRegistry.set(exports.CIDR.$type, exports.CIDR);
function createBaseGeoIP() {
return { $type: 'xray.app.router.GeoIP', countryCode: '', cidr: [], reverseMatch: false };
}
exports.GeoIP = {
$type: 'xray.app.router.GeoIP',
encode(message, writer = new wire_1.BinaryWriter()) {
if (message.countryCode !== '') {
writer.uint32(10).string(message.countryCode);
}
for (const v of message.cidr) {
exports.CIDR.encode(v, writer.uint32(18).fork()).join();
}
if (message.reverseMatch !== false) {
writer.uint32(24).bool(message.reverseMatch);
}
return writer;
},
decode(input, length) {
const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseGeoIP();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.countryCode = reader.string();
continue;
}
case 2: {
if (tag !== 18) {
break;
}
message.cidr.push(exports.CIDR.decode(reader, reader.uint32()));
continue;
}
case 3: {
if (tag !== 24) {
break;
}
message.reverseMatch = reader.bool();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object) {
return {
$type: exports.GeoIP.$type,
countryCode: isSet(object.countryCode) ? globalThis.String(object.countryCode) : '',
cidr: globalThis.Array.isArray(object?.cidr) ? object.cidr.map((e) => exports.CIDR.fromJSON(e)) : [],
reverseMatch: isSet(object.reverseMatch) ? globalThis.Boolean(object.reverseMatch) : false,
};
},
toJSON(message) {
const obj = {};
if (message.countryCode !== '') {
obj.countryCode = message.countryCode;
}
if (message.cidr?.length) {
obj.cidr = message.cidr.map((e) => exports.CIDR.toJSON(e));
}
if (message.reverseMatch !== false) {
obj.reverseMatch = message.reverseMatch;
}
return obj;
},
create(base) {
return exports.GeoIP.fromPartial(base ?? {});
},
fromPartial(object) {
const message = createBaseGeoIP();
message.countryCode = object.countryCode ?? '';
message.cidr = object.cidr?.map((e) => exports.CIDR.fromPartial(e)) || [];
message.reverseMatch = object.reverseMatch ?? false;
return message;
},
};
typeRegistry_1.messageTypeRegistry.set(exports.GeoIP.$type, exports.GeoIP);
function createBaseGeoIPList() {
return { $type: 'xray.app.router.GeoIPList', entry: [] };
}
exports.GeoIPList = {
$type: 'xray.app.router.GeoIPList',
encode(message, writer = new wire_1.BinaryWriter()) {
for (const v of message.entry) {
exports.GeoIP.encode(v, writer.uint32(10).fork()).join();
}
return writer;
},
decode(input, length) {
const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseGeoIPList();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.entry.push(exports.GeoIP.decode(reader, reader.uint32()));
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object) {
return {
$type: exports.GeoIPList.$type,
entry: globalThis.Array.isArray(object?.entry) ? object.entry.map((e) => exports.GeoIP.fromJSON(e)) : [],
};
},
toJSON(message) {
const obj = {};
if (message.entry?.length) {
obj.entry = message.entry.map((e) => exports.GeoIP.toJSON(e));
}
return obj;
},
create(base) {
return exports.GeoIPList.fromPartial(base ?? {});
},
fromPartial(object) {
const message = createBaseGeoIPList();
message.entry = object.entry?.map((e) => exports.GeoIP.fromPartial(e)) || [];
return message;
},
};
typeRegistry_1.messageTypeRegistry.set(exports.GeoIPList.$type, exports.GeoIPList);
function createBaseGeoSite() {
return { $type: 'xray.app.router.GeoSite', countryCode: '', domain: [] };
}
exports.GeoSite = {
$type: 'xray.app.router.GeoSite',
encode(message, writer = new wire_1.BinaryWriter()) {
if (message.countryCode !== '') {
writer.uint32(10).string(message.countryCode);
}
for (const v of message.domain) {
exports.Domain.encode(v, writer.uint32(18).fork()).join();
}
return writer;
},
decode(input, length) {
const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseGeoSite();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.countryCode = reader.string();
continue;
}
case 2: {
if (tag !== 18) {
break;
}
message.domain.push(exports.Domain.decode(reader, reader.uint32()));
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object) {
return {
$type: exports.GeoSite.$type,
countryCode: isSet(object.countryCode) ? globalThis.String(object.countryCode) : '',
domain: globalThis.Array.isArray(object?.domain) ? object.domain.map((e) => exports.Domain.fromJSON(e)) : [],
};
},
toJSON(message) {
const obj = {};
if (message.countryCode !== '') {
obj.countryCode = message.countryCode;
}
if (message.domain?.length) {
obj.domain = message.domain.map((e) => exports.Domain.toJSON(e));
}
return obj;
},
create(base) {
return exports.GeoSite.fromPartial(base ?? {});
},
fromPartial(object) {
const message = createBaseGeoSite();
message.countryCode = object.countryCode ?? '';
message.domain = object.domain?.map((e) => exports.Domain.fromPartial(e)) || [];
return message;
},
};
typeRegistry_1.messageTypeRegistry.set(exports.GeoSite.$type, exports.GeoSite);
function createBaseGeoSiteList() {
return { $type: 'xray.app.router.GeoSiteList', entry: [] };
}
exports.GeoSiteList = {
$type: 'xray.app.router.GeoSiteList',
encode(message, writer = new wire_1.BinaryWriter()) {
for (const v of message.entry) {
exports.GeoSite.encode(v, writer.uint32(10).fork()).join();
}
return writer;
},
decode(input, length) {
const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseGeoSiteList();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.entry.push(exports.GeoSite.decode(reader, reader.uint32()));
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object) {
return {
$type: exports.GeoSiteList.$type,
entry: globalThis.Array.isArray(object?.entry) ? object.entry.map((e) => exports.GeoSite.fromJSON(e)) : [],
};
},
toJSON(message) {
const obj = {};
if (message.entry?.length) {
obj.entry = message.entry.map((e) => exports.GeoSite.toJSON(e));
}
return obj;
},
create(base) {
return exports.GeoSiteList.fromPartial(base ?? {});
},
fromPartial(object) {
const message = createBaseGeoSiteList();
message.entry = object.entry?.map((e) => exports.GeoSite.fromPartial(e)) || [];
return message;
},
};
typeRegistry_1.messageTypeRegistry.set(exports.GeoSiteList.$type, exports.GeoSiteList);
function createBaseRoutingRule() {
return {
$type: 'xray.app.router.RoutingRule',
tag: undefined,
balancingTag: undefined,
ruleTag: '',
domain: [],
geoip: [],
portList: undefined,
networks: [],
sourceGeoip: [],
sourcePortList: undefined,
userEmail: [],
inboundTag: [],
protocol: [],
attributes: {},
domainMatcher: '',
};
}
exports.RoutingRule = {
$type: 'xray.app.router.RoutingRule',
encode(message, writer = new wire_1.BinaryWriter()) {
if (message.tag !== undefined) {
writer.uint32(10).string(message.tag);
}
if (message.balancingTag !== undefined) {
writer.uint32(98).string(message.balancingTag);
}
if (message.ruleTag !== '') {
writer.uint32(146).string(message.ruleTag);
}
for (const v of message.domain) {
exports.Domain.encode(v, writer.uint32(18).fork()).join();
}
for (const v of message.geoip) {
exports.GeoIP.encode(v, writer.uint32(82).fork()).join();
}
if (message.portList !== undefined) {
port_1.PortList.encode(message.portList, writer.uint32(114).fork()).join();
}
writer.uint32(106).fork();
for (const v of message.networks) {
writer.int32(v);
}
writer.join();
for (const v of message.sourceGeoip) {
exports.GeoIP.encode(v, writer.uint32(90).fork()).join();
}
if (message.sourcePortList !== undefined) {
port_1.PortList.encode(message.sourcePortList, writer.uint32(130).fork()).join();
}
for (const v of message.userEmail) {
writer.uint32(58).string(v);
}
for (const v of message.inboundTag) {
writer.uint32(66).string(v);
}
for (const v of message.protocol) {
writer.uint32(74).string(v);
}
Object.entries(message.attributes).forEach(([key, value]) => {
exports.RoutingRule_AttributesEntry.encode({
$type: 'xray.app.router.RoutingRule.AttributesEntry',
key: key,
value,
}, writer.uint32(122).fork()).join();
});
if (message.domainMatcher !== '') {
writer.uint32(138).string(message.domainMatcher);
}
return writer;
},
decode(input, length) {
const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseRoutingRule();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.tag = reader.string();
continue;
}
case 12: {
if (tag !== 98) {
break;
}
message.balancingTag = reader.string();
continue;
}
case 18: {
if (tag !== 146) {
break;
}
message.ruleTag = reader.string();
continue;
}
case 2: {
if (tag !== 18) {
break;
}
message.domain.push(exports.Domain.decode(reader, reader.uint32()));
continue;
}
case 10: {
if (tag !== 82) {
break;
}
message.geoip.push(exports.GeoIP.decode(reader, reader.uint32()));
continue;
}
case 14: {
if (tag !== 114) {
break;
}
message.portList = port_1.PortList.decode(reader, reader.uint32());
continue;
}
case 13: {
if (tag === 104) {
message.networks.push(reader.int32());
continue;
}
if (tag === 106) {
const end2 = reader.uint32() + reader.pos;
while (reader.pos < end2) {
message.networks.push(reader.int32());
}
continue;
}
break;
}
case 11: {
if (tag !== 90) {
break;
}
message.sourceGeoip.push(exports.GeoIP.decode(reader, reader.uint32()));
continue;
}
case 16: {
if (tag !== 130) {
break;
}
message.sourcePortList = port_1.PortList.decode(reader, reader.uint32());
continue;
}
case 7: {
if (tag !== 58) {
break;
}
message.userEmail.push(reader.string());
continue;
}
case 8: {
if (tag !== 66) {
break;
}
message.inboundTag.push(reader.string());
continue;
}
case 9: {
if (tag !== 74) {
break;
}
message.protocol.push(reader.string());
continue;
}
case 15: {
if (tag !== 122) {
break;
}
const entry15 = exports.RoutingRule_AttributesEntry.decode(reader, reader.uint32());
if (entry15.value !== undefined) {
message.attributes[entry15.key] = entry15.value;
}
continue;
}
case 17: {
if (tag !== 138) {
break;
}
message.domainMatcher = reader.string();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object) {
return {
$type: exports.RoutingRule.$type,
tag: isSet(object.tag) ? globalThis.String(object.tag) : undefined,
balancingTag: isSet(object.balancingTag) ? globalThis.String(object.balancingTag) : undefined,
ruleTag: isSet(object.ruleTag) ? globalThis.String(object.ruleTag) : '',
domain: globalThis.Array.isArray(object?.domain) ? object.domain.map((e) => exports.Domain.fromJSON(e)) : [],
geoip: globalThis.Array.isArray(object?.geoip) ? object.geoip.map((e) => exports.GeoIP.fromJSON(e)) : [],
portList: isSet(object.portList) ? port_1.PortList.fromJSON(object.portList) : undefined,
networks: globalThis.Array.isArray(object?.networks) ? object.networks.map((e) => (0, network_1.networkFromJSON)(e)) : [],
sourceGeoip: globalThis.Array.isArray(object?.sourceGeoip)
? object.sourceGeoip.map((e) => exports.GeoIP.fromJSON(e))
: [],
sourcePortList: isSet(object.sourcePortList) ? port_1.PortList.fromJSON(object.sourcePortList) : undefined,
userEmail: globalThis.Array.isArray(object?.userEmail)
? object.userEmail.map((e) => globalThis.String(e))
: [],
inboundTag: globalThis.Array.isArray(object?.inboundTag)
? object.inboundTag.map((e) => globalThis.String(e))
: [],
protocol: globalThis.Array.isArray(object?.protocol) ? object.protocol.map((e) => globalThis.String(e)) : [],
attributes: isObject(object.attributes)
? Object.entries(object.attributes).reduce((acc, [key, value]) => {
acc[key] = String(value);
return acc;
}, {})
: {},
domainMatcher: isSet(object.domainMatcher) ? globalThis.String(object.domainMatcher) : '',
};
},
toJSON(message) {
const obj = {};
if (message.tag !== undefined) {
obj.tag = message.tag;
}
if (message.balancingTag !== undefined) {
obj.balancingTag = message.balancingTag;
}
if (message.ruleTag !== '') {
obj.ruleTag = message.ruleTag;
}
if (message.domain?.length) {
obj.domain = message.domain.map((e) => exports.Domain.toJSON(e));
}
if (message.geoip?.length) {
obj.geoip = message.geoip.map((e) => exports.GeoIP.toJSON(e));
}
if (message.portList !== undefined) {
obj.portList = port_1.PortList.toJSON(message.portList);
}
if (message.networks?.length) {
obj.networks = message.networks.map((e) => (0, network_1.networkToJSON)(e));
}
if (message.sourceGeoip?.length) {
obj.sourceGeoip = message.sourceGeoip.map((e) => exports.GeoIP.toJSON(e));
}
if (message.sourcePortList !== undefined) {
obj.sourcePortList = port_1.PortList.toJSON(message.sourcePortList);
}
if (message.userEmail?.length) {
obj.userEmail = message.userEmail;
}
if (message.inboundTag?.length) {
obj.inboundTag = message.inboundTag;
}
if (message.protocol?.length) {
obj.protocol = message.protocol;
}
if (message.attributes) {
const entries = Object.entries(message.attributes);
if (entries.length > 0) {
obj.attributes = {};
entries.forEach(([k, v]) => {
obj.attributes[k] = v;
});
}
}
if (message.domainMatcher !== '') {
obj.domainMatcher = message.domainMatcher;
}
return obj;
},
create(base) {
return exports.RoutingRule.fromPartial(base ?? {});
},
fromPartial(object) {
const message = createBaseRoutingRule();
message.tag = object.tag ?? undefined;
message.balancingTag = object.balancingTag ?? undefined;
message.ruleTag = object.ruleTag ?? '';
message.domain = object.domain?.map((e) => exports.Domain.fromPartial(e)) || [];
message.geoip = object.geoip?.map((e) => exports.GeoIP.fromPartial(e)) || [];
message.portList = (object.portList !== undefined && object.portList !== null)
? port_1.PortList.fromPartial(object.portList)
: undefined;
message.networks = object.networks?.map((e) => e) || [];
message.sourceGeoip = object.sourceGeoip?.map((e) => exports.GeoIP.fromPartial(e)) || [];
message.sourcePortList = (object.sourcePortList !== undefined && object.sourcePortList !== null)
? port_1.PortList.fromPartial(object.sourcePortList)
: undefined;
message.userEmail = object.userEmail?.map((e) => e) || [];
message.inboundTag = object.inboundTag?.map((e) => e) || [];
message.protocol = object.protocol?.map((e) => e) || [];
message.attributes = Object.entries(object.attributes ?? {}).reduce((acc, [key, value]) => {
if (value !== undefined) {
acc[key] = globalThis.String(value);
}
return acc;
}, {});
message.domainMatcher = object.domainMatcher ?? '';
return message;
},
};
typeRegistry_1.messageTypeRegistry.set(exports.RoutingRule.$type, exports.RoutingRule);
function createBaseRoutingRule_AttributesEntry() {
return { $type: 'xray.app.router.RoutingRule.AttributesEntry', key: '', value: '' };
}
exports.RoutingRule_AttributesEntry = {
$type: 'xray.app.router.RoutingRule.AttributesEntry',
encode(message, writer = new wire_1.BinaryWriter()) {
if (message.key !== '') {
writer.uint32(10).string(message.key);
}
if (message.value !== '') {
writer.uint32(18).string(message.value);
}
return writer;
},
decode(input, length) {
const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseRoutingRule_AttributesEntry();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.key = reader.string();
continue;
}
case 2: {
if (tag !== 18) {
break;
}
message.value = reader.string();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object) {
return {
$type: exports.RoutingRule_AttributesEntry.$type,
key: isSet(object.key) ? globalThis.String(object.key) : '',
value: isSet(object.value) ? globalThis.String(object.value) : '',
};
},
toJSON(message) {
const obj = {};
if (message.key !== '') {
obj.key = message.key;
}
if (message.value !== '') {
obj.value = message.value;
}
return obj;
},
create(base) {
return exports.RoutingRule_AttributesEntry.fromPartial(base ?? {});
},
fromPartial(object) {
const message = createBaseRoutingRule_AttributesEntry();
message.key = object.key ?? '';
message.value = object.value ?? '';
return message;
},
};
typeRegistry_1.messageTypeRegistry.set(exports.RoutingRule_AttributesEntry.$type, exports.RoutingRule_AttributesEntry);
function createBaseBalancingRule() {
return {
$type: 'xray.app.router.BalancingRule',
tag: '',
outboundSelector: [],
strategy: '',
strategySettings: undefined,
fallbackTag: '',
};
}
exports.BalancingRule = {
$type: 'xray.app.router.BalancingRule',
encode(message, writer = new wire_1.BinaryWriter()) {
if (message.tag !== '') {
writer.uint32(10).string(message.tag);
}
for (const v of message.outboundSelector) {
writer.uint32(18).string(v);
}
if (message.strategy !== '') {
writer.uint32(26).string(message.strategy);
}
if (message.strategySettings !== undefined) {
typed_message_1.TypedMessage.encode(message.strategySettings, writer.uint32(34).fork()).join();
}
if (message.fallbackTag !== '') {
writer.uint32(42).string(message.fallbackTag);
}
return writer;
},
decode(input, length) {
const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseBalancingRule();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.tag = reader.string();
continue;
}
case 2: {
if (tag !== 18) {
break;
}
message.outboundSelector.push(reader.string());
continue;
}
case 3: {
if (tag !== 26) {
break;
}
message.strategy = reader.string();
continue;
}
case 4: {
if (tag !== 34) {
break;
}
message.strategySettings = typed_message_1.TypedMessage.decode(reader, reader.uint32());
continue;
}
case 5: {
if (tag !== 42) {
break;
}
message.fallbackTag = reader.string();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object) {
return {
$type: exports.BalancingRule.$type,
tag: isSet(object.tag) ? globalThis.String(object.tag) : '',
outboundSelector: globalThis.Array.isArray(object?.outboundSelector)
? object.outboundSelector.map((e) => globalThis.String(e))
: [],
strategy: isSet(object.strategy) ? globalThis.String(object.strategy) : '',
strategySettings: isSet(object.strategySettings) ? typed_message_1.TypedMessage.fromJSON(object.strategySettings) : undefined,
fallbackTag: isSet(object.fallbackTag) ? globalThis.String(object.fallbackTag) : '',
};
},
toJSON(message) {
const obj = {};
if (message.tag !== '') {
obj.tag = message.tag;
}
if (message.outboundSelector?.length) {
obj.outboundSelector = message.outboundSelector;
}
if (message.strategy !== '') {
obj.strategy = message.strategy;
}
if (message.strategySettings !== undefined) {
obj.strategySettings = typed_message_1.TypedMessage.toJSON(message.strategySettings);
}
if (message.fallbackTag !== '') {
obj.fallbackTag = message.fallbackTag;
}
return obj;
},
create(base) {
return exports.BalancingRule.fromPartial(base ?? {});
},
fromPartial(object) {
const message = createBaseBalancingRule();
message.tag = object.tag ?? '';
message.outboundSelector = object.outboundSelector?.map((e) => e) || [];
message.strategy = object.strategy ?? '';
message.strategySettings = (object.strategySettings !== undefined && object.strategySettings !== null)
? typed_message_1.TypedMessage.fromPartial(object.strategySettings)
: undefined;
message.fallbackTag = object.fallbackTag ?? '';
return message;
},
};
typeRegistry_1.messageTypeRegistry.set(exports.BalancingRule.$type, exports.BalancingRule);
function createBaseStrategyWeight() {
return { $type: 'xray.app.router.StrategyWeight', regexp: false, match: '', value: 0 };
}
exports.StrategyWeight = {
$type: 'xray.app.router.StrategyWeight',
encode(message, writer = new wire_1.BinaryWriter()) {
if (message.regexp !== false) {
writer.uint32(8).bool(message.regexp);
}
if (message.match !== '') {
writer.uint32(18).string(message.match);
}
if (message.value !== 0) {
writer.uint32(29).float(message.value);
}
return writer;
},
decode(input, length) {
const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseStrategyWeight();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 8) {
break;
}
message.regexp = reader.bool();
continue;
}
case 2: {
if (tag !== 18) {
break;
}
message.match = reader.string();
continue;
}
case 3: {
if (tag !== 29) {
break;
}
message.value = reader.float();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object) {
return {
$type: exports.StrategyWeight.$type,
regexp: isSet(object.regexp) ? globalThis.Boolean(object.regexp) : false,
match: isSet(object.match) ? globalThis.String(object.match) : '',
value: isSet(object.value) ? globalThis.Number(object.value) : 0,
};
},
toJSON(message) {
const obj = {};
if (message.regexp !== false) {
obj.regexp = message.regexp;
}
if (message.match !== '') {
obj.match = message.match;
}
if (message.value !== 0) {
obj.value = message.value;
}
return obj;
},
create(base) {
return exports.StrategyWeight.fromPartial(base ?? {});
},
fromPartial(object) {
const message = createBaseStrategyWeight();
message.regexp = object.regexp ?? false;
message.match = object.match ?? '';
message.value = object.value ?? 0;
return message;
},
};
typeRegistry_1.messageTypeRegistry.set(exports.StrategyWeight.$type, exports.StrategyWeight);
function createBaseStrategyLeastLoadConfig() {
return {
$type: 'xray.app.router.StrategyLeastLoadConfig',
costs: [],
baselines: [],
expected: 0,
maxRTT: 0,
tolerance: 0,
};
}
exports.StrategyLeastLoadConfig = {
$type: 'xray.app.router.StrategyLeastLoadConfig',
encode(message, writer = new wire_1.BinaryWriter()) {
for (const v of message.costs) {
exports.StrategyWeight.encode(v, writer.uint32(18).fork()).join();
}
writer.uint32(26).fork();
for (const v of message.baselines) {
writer.int64(v);
}
writer.join();
if (message.expected !== 0) {
writer.uint32(32).int32(message.expected);
}
if (message.maxRTT !== 0) {
writer.uint32(40).int64(message.maxRTT);
}
if (message.tolerance !== 0) {
writer.uint32(53).float(message.tolerance);
}
return writer;
},
decode(input, length) {
const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseStrategyLeastLoadConfig();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 2: {
if (tag !== 18) {
break;
}
message.costs.push(exports.StrategyWeight.decode(reader, reader.uint32()));
continue;
}
case 3: {
if (tag === 24) {
message.baselines.push(longToNumber(reader.int64()));
continue;
}
if (tag === 26) {
const end2 = reader.uint32() + reader.pos;
while (reader.pos < end2) {
message.baselines.push(longToNumber(reader.int64()));
}
continue;
}
break;
}
case 4: {
if (tag !== 32) {
break;
}
message.expected = reader.int32();
continue;
}
case 5: {
if (tag !== 40) {
break;
}
message.maxRTT = longToNumber(reader.int64());
continue;
}
case 6: {
if (tag !== 53) {
break;
}
message.tolerance = reader.float();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object) {
return {
$type: exports.StrategyLeastLoadConfig.$type,
costs: globalThis.Array.isArray(object?.costs) ? object.costs.map((e) => exports.StrategyWeight.fromJSON(e)) : [],
baselines: globalThis.Array.isArray(object?.baselines)
? object.baselines.map((e) => globalThis.Number(e))
: [],
expected: isSet(object.expected) ? globalThis.Number(object.expected) : 0,
maxRTT: isSet(object.maxRTT) ? globalThis.Number(object.maxRTT) : 0,
tolerance: isSet(object.tolerance) ? globalThis.Number(object.tolerance) : 0,
};
},
toJSON(message) {
const obj = {};
if (message.costs?.length) {
obj.costs = message.costs.map((e) => exports.StrategyWeight.toJSON(e));
}
if (message.baselines?.length) {
obj.baselines = message.baselines.map((e) => Math.round(e));
}
if (message.expected !== 0) {
obj.expected = Math.round(message.expected);
}
if (message.maxRTT !== 0) {
obj.maxRTT = Math.round(message.maxRTT);
}
if (message.tolerance !== 0) {
obj.tolerance = message.tolerance;
}
return obj;
},
create(base) {
return exports.StrategyLeastLoadConfig.fromPartial(base ?? {});
},
fromPartial(object) {
const message = createBaseStrategyLeastLoadConfig();
message.costs = object.costs?.map((e) => exports.StrategyWeight.fromPartial(e)) || [];
message.baselines = object.baselines?.map((e) => e) || [];
message.expected = object.expected ?? 0;
message.maxRTT = object.maxRTT ?? 0;
message.tolerance = object.tolerance ?? 0;
return message;
},
};
typeRegistry_1.messageTypeRegistry.set(exports.StrategyLeastLoadConfig.$type, exports.StrategyLeastLoadConfig);
function createBaseConfig() {
return { $type: 'xray.app.router.Config', domainStrategy: 0, rule: [], balancingRule: [] };
}
exports.Config = {
$type: 'xray.app.rou