@remnawave/xtls-sdk 0.12.4 → 0.13.0

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.
Files changed (36) hide show
  1. package/build/src/router/interfaces/index.d.ts +0 -1
  2. package/build/src/router/interfaces/index.d.ts.map +1 -1
  3. package/build/src/router/interfaces/index.js +0 -1
  4. package/build/src/router/models/index.d.ts +0 -1
  5. package/build/src/router/models/index.d.ts.map +1 -1
  6. package/build/src/router/models/index.js +0 -1
  7. package/build/src/router/router.service.d.ts +2 -12
  8. package/build/src/router/router.service.d.ts.map +1 -1
  9. package/build/src/router/router.service.js +1 -57
  10. package/build/src/stats/stats.service.d.ts.map +1 -1
  11. package/build/src/stats/stats.service.js +10 -8
  12. package/build/src/xray-protos/app/proxyman/config.d.ts +3 -1
  13. package/build/src/xray-protos/app/proxyman/config.d.ts.map +1 -1
  14. package/build/src/xray-protos/app/proxyman/config.js +27 -6
  15. package/build/src/xray-protos/common/geodata/geodat.d.ts +111 -0
  16. package/build/src/xray-protos/common/geodata/geodat.d.ts.map +1 -0
  17. package/build/src/xray-protos/common/geodata/geodat.js +1027 -0
  18. package/build/src/xray-protos/proxy/freedom/config.d.ts +7 -0
  19. package/build/src/xray-protos/proxy/freedom/config.d.ts.map +1 -1
  20. package/build/src/xray-protos/proxy/freedom/config.js +80 -1
  21. package/build/src/xray-protos/proxy/tun/config.d.ts +4 -0
  22. package/build/src/xray-protos/proxy/tun/config.d.ts.map +1 -1
  23. package/build/src/xray-protos/proxy/tun/config.js +80 -3
  24. package/package.json +3 -4
  25. package/build/src/router/interfaces/add-source-ip-rule.interface.d.ts +0 -7
  26. package/build/src/router/interfaces/add-source-ip-rule.interface.d.ts.map +0 -1
  27. package/build/src/router/interfaces/add-source-ip-rule.interface.js +0 -2
  28. package/build/src/router/models/add-source-ip-rule/add-source-ip-rule.response.model.d.ts +0 -5
  29. package/build/src/router/models/add-source-ip-rule/add-source-ip-rule.response.model.d.ts.map +0 -1
  30. package/build/src/router/models/add-source-ip-rule/add-source-ip-rule.response.model.js +0 -9
  31. package/build/src/router/models/add-source-ip-rule/index.d.ts +0 -2
  32. package/build/src/router/models/add-source-ip-rule/index.d.ts.map +0 -1
  33. package/build/src/router/models/add-source-ip-rule/index.js +0 -17
  34. package/build/src/xray-protos/app/router/config.d.ts +0 -193
  35. package/build/src/xray-protos/app/router/config.d.ts.map +0 -1
  36. package/build/src/xray-protos/app/router/config.js +0 -1797
@@ -1,3 +1,2 @@
1
- export * from './add-source-ip-rule.interface';
2
1
  export * from './remove-rule-by-rule-tag.interface';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/router/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/router/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC"}
@@ -14,5 +14,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./add-source-ip-rule.interface"), exports);
18
17
  __exportStar(require("./remove-rule-by-rule-tag.interface"), exports);
@@ -1,3 +1,2 @@
1
- export * from './add-source-ip-rule';
2
1
  export * from './remove-rule-by-rule-tag';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/router/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/router/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
@@ -14,5 +14,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./add-source-ip-rule"), exports);
18
17
  __exportStar(require("./remove-rule-by-rule-tag"), exports);
@@ -1,8 +1,8 @@
1
1
  import { Channel } from 'nice-grpc';
2
2
  import { RoutingServiceClient } from '../xray-protos/app/router/command/command';
3
- import { AddSourceIpRuleResponseModel, RemoveRuleByRuleTagResponseModel } from './models';
4
- import { IAddSourceIpRule, IRemoveRuleByRuleTag } from './interfaces';
3
+ import { RemoveRuleByRuleTagResponseModel } from './models';
5
4
  import { ISdkResponse } from '../common/types/sdk-response';
5
+ import { IRemoveRuleByRuleTag } from './interfaces';
6
6
  /**
7
7
  * Service for managing routing rules in XRAY/XTLS
8
8
  * RoutingService is required (enable on XRay Config) to add/remove routing rules.
@@ -15,16 +15,6 @@ export declare class RouterService {
15
15
  * @param channel - The gRPC channel to use for communication
16
16
  */
17
17
  constructor(channel: Channel);
18
- /**
19
- * Adds a new routing rule based on source IP address
20
- * @param dto - Data transfer object containing rule configuration
21
- * @param dto.ruleTag - Unique identifier for the rule
22
- * @param dto.outbound - Outbound tag to route matched traffic
23
- * @param dto.ip - Source IP address to match
24
- * @param dto.append - Whether to append the rule or replace existing rules
25
- * @returns Promise resolving to response indicating success or failure
26
- */
27
- addSrcIpRule(dto: IAddSourceIpRule): Promise<ISdkResponse<AddSourceIpRuleResponseModel>>;
28
18
  /**
29
19
  * Removes a routing rule by its tag
30
20
  * @param dto - Data transfer object containing rule tag
@@ -1 +1 @@
1
- {"version":3,"file":"router.service.d.ts","sourceRoot":"","sources":["../../../src/router/router.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,OAAO,EAAE,MAAM,WAAW,CAAC;AAGlD,OAAO,EAEH,oBAAoB,EACvB,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAE,4BAA4B,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AAE1F,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D;;;GAGG;AACH,qBAAa,aAAa;IAOV,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAE9C;;;OAGG;gBAC0B,OAAO,EAAE,OAAO;IAI7C;;;;;;;;OAQG;IACU,YAAY,CACrB,GAAG,EAAE,gBAAgB,GACtB,OAAO,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC;IA2CtD;;;;;OAKG;IACU,mBAAmB,CAC5B,GAAG,EAAE,oBAAoB,GAC1B,OAAO,CAAC,YAAY,CAAC,gCAAgC,CAAC,CAAC;IAsB1D;;;OAGG;IACH,IAAW,SAAS,IAAI,oBAAoB,CAE3C;CACJ"}
1
+ {"version":3,"file":"router.service.d.ts","sourceRoot":"","sources":["../../../src/router/router.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAgB,MAAM,WAAW,CAAC;AAElD,OAAO,EACH,oBAAoB,EAEvB,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD;;;GAGG;AACH,qBAAa,aAAa;IAOV,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAE9C;;;OAGG;gBAC0B,OAAO,EAAE,OAAO;IAI7C;;;;;OAKG;IACU,mBAAmB,CAC5B,GAAG,EAAE,oBAAoB,GAC1B,OAAO,CAAC,YAAY,CAAC,gCAAgC,CAAC,CAAC;IAsB1D;;;OAGG;IACH,IAAW,SAAS,IAAI,oBAAoB,CAE3C;CACJ"}
@@ -1,16 +1,10 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.RouterService = void 0;
7
4
  const nice_grpc_1 = require("nice-grpc");
8
- const ipaddr_js_1 = __importDefault(require("ipaddr.js"));
9
5
  const command_1 = require("../xray-protos/app/router/command/command");
10
- const create_typed_message_1 = __importDefault(require("../common/utils/create-typed-message/create-typed-message"));
11
- const models_1 = require("./models");
12
- const config_1 = require("../xray-protos/app/router/config");
13
6
  const router_errors_1 = require("../common/errors/router/router.errors");
7
+ const models_1 = require("./models");
14
8
  /**
15
9
  * Service for managing routing rules in XRAY/XTLS
16
10
  * RoutingService is required (enable on XRay Config) to add/remove routing rules.
@@ -24,56 +18,6 @@ class RouterService {
24
18
  this.channel = channel;
25
19
  this.client = (0, nice_grpc_1.createClient)(command_1.RoutingServiceDefinition, channel);
26
20
  }
27
- /**
28
- * Adds a new routing rule based on source IP address
29
- * @param dto - Data transfer object containing rule configuration
30
- * @param dto.ruleTag - Unique identifier for the rule
31
- * @param dto.outbound - Outbound tag to route matched traffic
32
- * @param dto.ip - Source IP address to match
33
- * @param dto.append - Whether to append the rule or replace existing rules
34
- * @returns Promise resolving to response indicating success or failure
35
- */
36
- async addSrcIpRule(dto) {
37
- try {
38
- const ip = ipaddr_js_1.default.parse(dto.ip);
39
- const prefix = ip.kind() === 'ipv6' ? 128 : 32;
40
- await this.client.addRule({
41
- config: (0, create_typed_message_1.default)(config_1.Config, {
42
- rule: [
43
- {
44
- ruleTag: dto.ruleTag,
45
- tag: dto.outbound,
46
- sourceGeoip: [
47
- config_1.GeoIP.fromPartial({
48
- cidr: [
49
- config_1.CIDR.fromPartial({
50
- ip: new Uint8Array(ip.toByteArray()),
51
- prefix,
52
- }),
53
- ],
54
- }),
55
- ],
56
- },
57
- ],
58
- }),
59
- shouldAppend: dto.append,
60
- });
61
- return {
62
- isOk: true,
63
- data: new models_1.AddSourceIpRuleResponseModel(true),
64
- };
65
- }
66
- catch (error) {
67
- let message = '';
68
- if (error instanceof Error) {
69
- message = error.message;
70
- }
71
- return {
72
- isOk: false,
73
- ...router_errors_1.ROUTER_ERRORS.ADD_SOURCE_IP_RULE_ERROR(message),
74
- };
75
- }
76
- }
77
21
  /**
78
22
  * Removes a routing rule by its tag
79
23
  * @param dto - Data transfer object containing rule tag
@@ -1 +1 @@
1
- {"version":3,"file":"stats.service.d.ts","sourceRoot":"","sources":["../../../src/stats/stats.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAqC,MAAM,WAAW,CAAC;AAEvE,OAAO,EACH,6BAA6B,EAC7B,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,EAChC,gCAAgC,EAChC,4BAA4B,EAC5B,iCAAiC,EACjC,6BAA6B,EAC7B,0BAA0B,EAE7B,MAAM,UAAU,CAAC;AAClB,OAAO,EAEH,kBAAkB,EACrB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,YAAY;IAuBT,OAAO,CAAC,QAAQ,CAAC,OAAO;IAtBpC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAE5C;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB,CAAwB;IAErD;;;OAGG;gBAC0B,OAAO,EAAE,OAAO;IAI7C;;;;;;;;;;;;;;;;;;;OAmBG;IACU,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC;IAoB3E;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACU,gBAAgB,CACzB,KAAK,GAAE,OAAe,GACvB,OAAO,CAAC,YAAY,CAAC,6BAA6B,CAAC,CAAC;IAuBvD;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACU,YAAY,CACrB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,OAAe,GACvB,OAAO,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;IAuBnD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACU,mBAAmB,CAC5B,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,CAAC,gCAAgC,CAAC,CAAC;IA8B1D;;;;;;;;;;;;;;;;;;;OAmBG;IACU,mBAAmB,CAC5B,KAAK,GAAE,OAAe,GACvB,OAAO,CAAC,YAAY,CAAC,gCAAgC,CAAC,CAAC;IAuB1D;;;;;;;;;;;;;;;;;;;;OAoBG;IACU,eAAe,CACxB,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,OAAe,GACvB,OAAO,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC;IAuBtD;;;;;;;;;;;;;;;;;;;OAmBG;IACU,oBAAoB,CAC7B,KAAK,GAAE,OAAe,GACvB,OAAO,CAAC,YAAY,CAAC,iCAAiC,CAAC,CAAC;IAuB3D;;;;;;;;;;;;;;;;;;;;OAoBG;IACU,gBAAgB,CACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,OAAe,GACvB,OAAO,CAAC,YAAY,CAAC,6BAA6B,CAAC,CAAC;IAuBvD;;;;;;;;;;;;;;;;;OAiBG;IACU,aAAa,CACtB,cAAc,GAAE,OAAe,EAC/B,KAAK,GAAE,OAAe,GACvB,OAAO,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;IAkCpD;;;;;;OAMG;YACW,mBAAmB;IA6DjC;;;OAGG;IACH,IAAW,SAAS,IAAI,kBAAkB,CAEzC;CACJ"}
1
+ {"version":3,"file":"stats.service.d.ts","sourceRoot":"","sources":["../../../src/stats/stats.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAqC,MAAM,WAAW,CAAC;AAEvE,OAAO,EACH,6BAA6B,EAC7B,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,EAChC,gCAAgC,EAChC,4BAA4B,EAC5B,iCAAiC,EACjC,6BAA6B,EAC7B,0BAA0B,EAE7B,MAAM,UAAU,CAAC;AAClB,OAAO,EAEH,kBAAkB,EACrB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,YAAY;IAuBT,OAAO,CAAC,QAAQ,CAAC,OAAO;IAtBpC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAE5C;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB,CAAwB;IAErD;;;OAGG;gBAC0B,OAAO,EAAE,OAAO;IAI7C;;;;;;;;;;;;;;;;;;;OAmBG;IACU,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC;IAoB3E;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACU,gBAAgB,CACzB,KAAK,GAAE,OAAe,GACvB,OAAO,CAAC,YAAY,CAAC,6BAA6B,CAAC,CAAC;IAuBvD;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACU,YAAY,CACrB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,OAAe,GACvB,OAAO,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;IAuBnD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACU,mBAAmB,CAC5B,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,CAAC,gCAAgC,CAAC,CAAC;IA8B1D;;;;;;;;;;;;;;;;;;;OAmBG;IACU,mBAAmB,CAC5B,KAAK,GAAE,OAAe,GACvB,OAAO,CAAC,YAAY,CAAC,gCAAgC,CAAC,CAAC;IAuB1D;;;;;;;;;;;;;;;;;;;;OAoBG;IACU,eAAe,CACxB,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,OAAe,GACvB,OAAO,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC;IAuBtD;;;;;;;;;;;;;;;;;;;OAmBG;IACU,oBAAoB,CAC7B,KAAK,GAAE,OAAe,GACvB,OAAO,CAAC,YAAY,CAAC,iCAAiC,CAAC,CAAC;IAuB3D;;;;;;;;;;;;;;;;;;;;OAoBG;IACU,gBAAgB,CACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,OAAe,GACvB,OAAO,CAAC,YAAY,CAAC,6BAA6B,CAAC,CAAC;IAuBvD;;;;;;;;;;;;;;;;;OAiBG;IACU,aAAa,CACtB,cAAc,GAAE,OAAe,EAC/B,KAAK,GAAE,OAAe,GACvB,OAAO,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;IAkCpD;;;;;;OAMG;YACW,mBAAmB;IA+DjC;;;OAGG;IACH,IAAW,SAAS,IAAI,kBAAkB,CAEzC;CACJ"}
@@ -464,21 +464,23 @@ class StatsService {
464
464
  async getUsersStatsLegacy(reset) {
465
465
  try {
466
466
  const { users: onlineUsers } = await this.client.getAllOnlineUsers({});
467
- // De-duplicate, just in case Xray ever returns the same email twice.
468
- const uniqueEmails = Array.from(new Set(onlineUsers));
469
- const results = new Array(uniqueEmails.length);
470
- const concurrency = Math.min(50, uniqueEmails.length);
467
+ const onlinePairs = Array.from(new Set(onlineUsers)).map((metricName) => ({
468
+ metricName,
469
+ email: metricName.slice('user>>>'.length, -'>>>online'.length),
470
+ }));
471
+ const results = new Array(onlinePairs.length);
472
+ const concurrency = Math.min(50, onlinePairs.length);
471
473
  let cursor = 0;
472
474
  const worker = async () => {
473
475
  while (true) {
474
476
  const index = cursor++;
475
- if (index >= uniqueEmails.length)
477
+ if (index >= onlinePairs.length)
476
478
  return;
477
- const email = uniqueEmails[index];
479
+ const { metricName, email } = onlinePairs[index];
478
480
  let ips = [];
479
481
  try {
480
482
  const ipListResponse = await this.client.getStatsOnlineIpList({
481
- name: `user>>>${email}>>>online`,
483
+ name: metricName,
482
484
  reset,
483
485
  });
484
486
  ips = Object.entries(ipListResponse.ips).map(([ip, lastSeen]) => ({
@@ -487,7 +489,7 @@ class StatsService {
487
489
  }));
488
490
  }
489
491
  catch {
490
- // Per-user failure is non-fatal: fall through with empty ips.
492
+ // ignore
491
493
  }
492
494
  results[index] = { userId: email, ips, traffic: undefined };
493
495
  }
@@ -1,4 +1,5 @@
1
1
  import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
2
+ import { DomainRule, IPRule } from "../../common/geodata/geodat";
2
3
  import { IPOrDomain } from "../../common/net/address";
3
4
  import { PortList } from "../../common/net/port";
4
5
  import { TypedMessage } from "../../common/serial/typed_message";
@@ -16,7 +17,8 @@ export interface SniffingConfig {
16
17
  * Supported values are "http", "tls", "fakedns".
17
18
  */
18
19
  destinationOverride: string[];
19
- domainsExcluded: string[];
20
+ domainsExcluded: DomainRule[];
21
+ ipsExcluded: IPRule[];
20
22
  /**
21
23
  * Whether should only try to sniff metadata without waiting for client input.
22
24
  * Can be used to support SMTP like protocol where server send the first
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/xray-protos/app/proxyman/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/xray-protos/app/proxyman/config.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.MultiplexingConfig = exports.SenderConfig = exports.OutboundConfig = exports.InboundHandlerConfig = exports.ReceiverConfig = exports.SniffingConfig = exports.InboundConfig = exports.protobufPackage = void 0;
9
9
  /* eslint-disable */
10
10
  const wire_1 = require("@bufbuild/protobuf/wire");
11
+ const geodat_1 = require("../../common/geodata/geodat");
11
12
  const address_1 = require("../../common/net/address");
12
13
  const port_1 = require("../../common/net/port");
13
14
  const typed_message_1 = require("../../common/serial/typed_message");
@@ -59,6 +60,7 @@ function createBaseSniffingConfig() {
59
60
  enabled: false,
60
61
  destinationOverride: [],
61
62
  domainsExcluded: [],
63
+ ipsExcluded: [],
62
64
  metadataOnly: false,
63
65
  routeOnly: false,
64
66
  };
@@ -73,7 +75,10 @@ exports.SniffingConfig = {
73
75
  writer.uint32(18).string(v);
74
76
  }
75
77
  for (const v of message.domainsExcluded) {
76
- writer.uint32(26).string(v);
78
+ geodat_1.DomainRule.encode(v, writer.uint32(26).fork()).join();
79
+ }
80
+ for (const v of message.ipsExcluded) {
81
+ geodat_1.IPRule.encode(v, writer.uint32(50).fork()).join();
77
82
  }
78
83
  if (message.metadataOnly !== false) {
79
84
  writer.uint32(32).bool(message.metadataOnly);
@@ -108,7 +113,14 @@ exports.SniffingConfig = {
108
113
  if (tag !== 26) {
109
114
  break;
110
115
  }
111
- message.domainsExcluded.push(reader.string());
116
+ message.domainsExcluded.push(geodat_1.DomainRule.decode(reader, reader.uint32()));
117
+ continue;
118
+ }
119
+ case 6: {
120
+ if (tag !== 50) {
121
+ break;
122
+ }
123
+ message.ipsExcluded.push(geodat_1.IPRule.decode(reader, reader.uint32()));
112
124
  continue;
113
125
  }
114
126
  case 4: {
@@ -143,9 +155,14 @@ exports.SniffingConfig = {
143
155
  ? object.destination_override.map((e) => globalThis.String(e))
144
156
  : [],
145
157
  domainsExcluded: globalThis.Array.isArray(object?.domainsExcluded)
146
- ? object.domainsExcluded.map((e) => globalThis.String(e))
158
+ ? object.domainsExcluded.map((e) => geodat_1.DomainRule.fromJSON(e))
147
159
  : globalThis.Array.isArray(object?.domains_excluded)
148
- ? object.domains_excluded.map((e) => globalThis.String(e))
160
+ ? object.domains_excluded.map((e) => geodat_1.DomainRule.fromJSON(e))
161
+ : [],
162
+ ipsExcluded: globalThis.Array.isArray(object?.ipsExcluded)
163
+ ? object.ipsExcluded.map((e) => geodat_1.IPRule.fromJSON(e))
164
+ : globalThis.Array.isArray(object?.ips_excluded)
165
+ ? object.ips_excluded.map((e) => geodat_1.IPRule.fromJSON(e))
149
166
  : [],
150
167
  metadataOnly: isSet(object.metadataOnly)
151
168
  ? globalThis.Boolean(object.metadataOnly)
@@ -168,7 +185,10 @@ exports.SniffingConfig = {
168
185
  obj.destinationOverride = message.destinationOverride;
169
186
  }
170
187
  if (message.domainsExcluded?.length) {
171
- obj.domainsExcluded = message.domainsExcluded;
188
+ obj.domainsExcluded = message.domainsExcluded.map((e) => geodat_1.DomainRule.toJSON(e));
189
+ }
190
+ if (message.ipsExcluded?.length) {
191
+ obj.ipsExcluded = message.ipsExcluded.map((e) => geodat_1.IPRule.toJSON(e));
172
192
  }
173
193
  if (message.metadataOnly !== false) {
174
194
  obj.metadataOnly = message.metadataOnly;
@@ -185,7 +205,8 @@ exports.SniffingConfig = {
185
205
  const message = createBaseSniffingConfig();
186
206
  message.enabled = object.enabled ?? false;
187
207
  message.destinationOverride = object.destinationOverride?.map((e) => e) || [];
188
- message.domainsExcluded = object.domainsExcluded?.map((e) => e) || [];
208
+ message.domainsExcluded = object.domainsExcluded?.map((e) => geodat_1.DomainRule.fromPartial(e)) || [];
209
+ message.ipsExcluded = object.ipsExcluded?.map((e) => geodat_1.IPRule.fromPartial(e)) || [];
189
210
  message.metadataOnly = object.metadataOnly ?? false;
190
211
  message.routeOnly = object.routeOnly ?? false;
191
212
  return message;
@@ -0,0 +1,111 @@
1
+ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
2
+ export declare const protobufPackage = "xray.common.geodata";
3
+ export interface Domain {
4
+ $type: "xray.common.geodata.Domain";
5
+ /** Domain matching type. */
6
+ type: Domain_Type;
7
+ /** Domain value. */
8
+ value: string;
9
+ /** Attributes of this domain. May be used for filtering. */
10
+ attribute: Domain_Attribute[];
11
+ }
12
+ /** Type of domain value. */
13
+ export declare enum Domain_Type {
14
+ /** Substr - The value is used as a sub string. */
15
+ Substr = 0,
16
+ /** Regex - The value is used as a regular expression. */
17
+ Regex = 1,
18
+ /** Domain - The value is a domain. */
19
+ Domain = 2,
20
+ /** Full - The value is a full domain. */
21
+ Full = 3,
22
+ UNRECOGNIZED = -1
23
+ }
24
+ export declare function domain_TypeFromJSON(object: any): Domain_Type;
25
+ export declare function domain_TypeToJSON(object: Domain_Type): string;
26
+ export interface Domain_Attribute {
27
+ $type: "xray.common.geodata.Domain.Attribute";
28
+ key: string;
29
+ boolValue?: boolean | undefined;
30
+ intValue?: number | undefined;
31
+ }
32
+ export interface GeoSite {
33
+ $type: "xray.common.geodata.GeoSite";
34
+ code: string;
35
+ domain: Domain[];
36
+ }
37
+ export interface GeoSiteList {
38
+ $type: "xray.common.geodata.GeoSiteList";
39
+ entry: GeoSite[];
40
+ }
41
+ export interface GeoSiteRule {
42
+ $type: "xray.common.geodata.GeoSiteRule";
43
+ file: string;
44
+ code: string;
45
+ attrs: string;
46
+ }
47
+ export interface DomainRule {
48
+ $type: "xray.common.geodata.DomainRule";
49
+ geosite?: GeoSiteRule | undefined;
50
+ custom?: Domain | undefined;
51
+ }
52
+ export interface CIDR {
53
+ $type: "xray.common.geodata.CIDR";
54
+ /** IP address, should be either 4 or 16 bytes. */
55
+ ip: Uint8Array;
56
+ /** Number of leading ones in the network mask. */
57
+ prefix: number;
58
+ }
59
+ export interface CIDRRule {
60
+ $type: "xray.common.geodata.CIDRRule";
61
+ cidr: CIDR | undefined;
62
+ reverseMatch: boolean;
63
+ }
64
+ export interface GeoIP {
65
+ $type: "xray.common.geodata.GeoIP";
66
+ code: string;
67
+ cidr: CIDR[];
68
+ reverseMatch: boolean;
69
+ }
70
+ export interface GeoIPList {
71
+ $type: "xray.common.geodata.GeoIPList";
72
+ entry: GeoIP[];
73
+ }
74
+ export interface GeoIPRule {
75
+ $type: "xray.common.geodata.GeoIPRule";
76
+ file: string;
77
+ code: string;
78
+ reverseMatch: boolean;
79
+ }
80
+ export interface IPRule {
81
+ $type: "xray.common.geodata.IPRule";
82
+ geoip?: GeoIPRule | undefined;
83
+ custom?: CIDRRule | undefined;
84
+ }
85
+ export declare const Domain: MessageFns<Domain, "xray.common.geodata.Domain">;
86
+ export declare const Domain_Attribute: MessageFns<Domain_Attribute, "xray.common.geodata.Domain.Attribute">;
87
+ export declare const GeoSite: MessageFns<GeoSite, "xray.common.geodata.GeoSite">;
88
+ export declare const GeoSiteList: MessageFns<GeoSiteList, "xray.common.geodata.GeoSiteList">;
89
+ export declare const GeoSiteRule: MessageFns<GeoSiteRule, "xray.common.geodata.GeoSiteRule">;
90
+ export declare const DomainRule: MessageFns<DomainRule, "xray.common.geodata.DomainRule">;
91
+ export declare const CIDR: MessageFns<CIDR, "xray.common.geodata.CIDR">;
92
+ export declare const CIDRRule: MessageFns<CIDRRule, "xray.common.geodata.CIDRRule">;
93
+ export declare const GeoIP: MessageFns<GeoIP, "xray.common.geodata.GeoIP">;
94
+ export declare const GeoIPList: MessageFns<GeoIPList, "xray.common.geodata.GeoIPList">;
95
+ export declare const GeoIPRule: MessageFns<GeoIPRule, "xray.common.geodata.GeoIPRule">;
96
+ export declare const IPRule: MessageFns<IPRule, "xray.common.geodata.IPRule">;
97
+ type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
98
+ 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 {} ? {
99
+ [K in Exclude<keyof T, "$type">]?: DeepPartial<T[K]>;
100
+ } : Partial<T>;
101
+ export interface MessageFns<T, V extends string> {
102
+ readonly $type: V;
103
+ encode(message: T, writer?: BinaryWriter): BinaryWriter;
104
+ decode(input: BinaryReader | Uint8Array, length?: number): T;
105
+ fromJSON(object: any): T;
106
+ toJSON(message: T): unknown;
107
+ create(base?: DeepPartial<T>): T;
108
+ fromPartial(object: DeepPartial<T>): T;
109
+ }
110
+ export {};
111
+ //# sourceMappingURL=geodat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geodat.d.ts","sourceRoot":"","sources":["../../../../../src/xray-protos/common/geodata/geodat.ts"],"names":[],"mappings":"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"}