@gozargah/xray-schema 0.0.4 → 0.0.5
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.
- package/dist/full/index.d.ts +17 -2
- package/dist/full/index.js +54 -15
- package/dist/full/schema.json +193 -88
- package/dist/index.d.ts +17 -2
- package/dist/index.js +26 -11
- package/dist/schema.json +112 -45
- package/dist/with-docs/index.d.ts +17 -2
- package/dist/with-docs/index.js +54 -15
- package/dist/with-docs/schema.json +193 -88
- package/package.json +1 -1
|
@@ -578,7 +578,7 @@
|
|
|
578
578
|
]
|
|
579
579
|
},
|
|
580
580
|
"then": {
|
|
581
|
-
"$ref": "#/definitions/
|
|
581
|
+
"$ref": "#/definitions/__schema815"
|
|
582
582
|
}
|
|
583
583
|
},
|
|
584
584
|
{
|
|
@@ -593,7 +593,7 @@
|
|
|
593
593
|
]
|
|
594
594
|
},
|
|
595
595
|
"then": {
|
|
596
|
-
"$ref": "#/definitions/
|
|
596
|
+
"$ref": "#/definitions/__schema827"
|
|
597
597
|
}
|
|
598
598
|
}
|
|
599
599
|
]
|
|
@@ -10334,28 +10334,39 @@
|
|
|
10334
10334
|
"const": "vless"
|
|
10335
10335
|
},
|
|
10336
10336
|
"__schema798": {
|
|
10337
|
+
"anyOf": [
|
|
10338
|
+
{
|
|
10339
|
+
"$ref": "#/definitions/__schema799"
|
|
10340
|
+
},
|
|
10341
|
+
{
|
|
10342
|
+
"$ref": "#/definitions/__schema811"
|
|
10343
|
+
}
|
|
10344
|
+
],
|
|
10345
|
+
"markdownDescription": "`OutboundConfigurationObject` corresponds to the `settings` item in [`OutboundObject`](https://xtls.github.io/en/config/outbound.html).\n"
|
|
10346
|
+
},
|
|
10347
|
+
"__schema799": {
|
|
10337
10348
|
"type": "object",
|
|
10338
10349
|
"properties": {
|
|
10339
10350
|
"address": {
|
|
10340
|
-
"$ref": "#/definitions/
|
|
10351
|
+
"$ref": "#/definitions/__schema800"
|
|
10341
10352
|
},
|
|
10342
10353
|
"port": {
|
|
10343
|
-
"$ref": "#/definitions/
|
|
10354
|
+
"$ref": "#/definitions/__schema801"
|
|
10344
10355
|
},
|
|
10345
10356
|
"id": {
|
|
10346
|
-
"$ref": "#/definitions/
|
|
10357
|
+
"$ref": "#/definitions/__schema802"
|
|
10347
10358
|
},
|
|
10348
10359
|
"encryption": {
|
|
10349
|
-
"$ref": "#/definitions/
|
|
10360
|
+
"$ref": "#/definitions/__schema803"
|
|
10350
10361
|
},
|
|
10351
10362
|
"flow": {
|
|
10352
|
-
"$ref": "#/definitions/
|
|
10363
|
+
"$ref": "#/definitions/__schema805"
|
|
10353
10364
|
},
|
|
10354
10365
|
"level": {
|
|
10355
|
-
"$ref": "#/definitions/
|
|
10366
|
+
"$ref": "#/definitions/__schema807"
|
|
10356
10367
|
},
|
|
10357
10368
|
"reverse": {
|
|
10358
|
-
"$ref": "#/definitions/
|
|
10369
|
+
"$ref": "#/definitions/__schema809"
|
|
10359
10370
|
}
|
|
10360
10371
|
},
|
|
10361
10372
|
"required": [
|
|
@@ -10367,11 +10378,11 @@
|
|
|
10367
10378
|
"additionalProperties": false,
|
|
10368
10379
|
"markdownDescription": "`OutboundConfigurationObject` corresponds to the `settings` item in [`OutboundObject`](https://xtls.github.io/en/config/outbound.html).\n"
|
|
10369
10380
|
},
|
|
10370
|
-
"
|
|
10381
|
+
"__schema800": {
|
|
10371
10382
|
"type": "string",
|
|
10372
10383
|
"markdownDescription": "Server address, points to the server. Supports domain names, IPv4, and IPv6.\n"
|
|
10373
10384
|
},
|
|
10374
|
-
"
|
|
10385
|
+
"__schema801": {
|
|
10375
10386
|
"markdownDescription": "Server port, usually the same as the port the server is listening on.\n",
|
|
10376
10387
|
"allOf": [
|
|
10377
10388
|
{
|
|
@@ -10379,31 +10390,31 @@
|
|
|
10379
10390
|
}
|
|
10380
10391
|
]
|
|
10381
10392
|
},
|
|
10382
|
-
"
|
|
10393
|
+
"__schema802": {
|
|
10383
10394
|
"type": "string",
|
|
10384
10395
|
"markdownDescription": "User ID for VLESS. It can be any string less than 30 bytes, or a valid UUID. A custom string and its mapped UUID are equivalent.\n\nThe mapping standard is described in [VLESS UUID Mapping Standard: Mapping Custom Strings to UUIDv5](https://github.com/XTLS/Xray-core/issues/158).\n\nYou can use the command `xray uuid -i \"custom string\"` to generate the UUID mapped from a custom string, or use the command `xray uuid` to generate a random UUID.\n"
|
|
10385
10396
|
},
|
|
10386
|
-
"
|
|
10397
|
+
"__schema803": {
|
|
10387
10398
|
"default": "none",
|
|
10388
10399
|
"markdownDescription": "[VLESS Encryption](https://github.com/XTLS/Xray-core/pull/5067) settings. Cannot be left empty; to disable, explicitly set to `\"none\"`.\n\nIt is recommended for most users to use the `xray vlessenc` command to automatically generate this field to avoid configuration mistakes. The detailed configuration below is recommended only for advanced users.\n\nIts format is a detailed configuration string of fields connected by `.`. For example: `mlkem768x25519plus.native.0rtt.100-111-1111.75-0-111.50-0-3333.ptjHQxBQxTJ9MWr2cd5qWIflBSACHOevTauCQwa_71U`. This document will refer to the separate parts separated by dots as \"blocks\".\n\n- **The 1st block** is the handshake method. Currently, there is only `mlkem768x25519plus`. Requires consistency between server and client.\n- **The 2nd block** is the encryption method. Options are `native`/`xorpub`/`random`, corresponding to: raw format packet / raw format + obfuscated public key part / fully random numbers (similar to VMESS/Shadowsocks). Requires consistency between server and client.\n- **The 3rd block** is session resumption. Choosing `0rtt` will follow the server settings to attempt to use previously generated tickets to skip the handshake for fast connection (can be manually disabled by the server). Choosing `1rtt` will force a 1-RTT handshake process. The meaning here differs from the server setting; see VLESS Inbound `decryption` settings for details.\n\nFollowing blocks are **padding**. After the connection is established, the client sends some garbage data to obfuscate length characteristics. It does not need to be the same as the server (the corresponding part in the inbound is the padding sent from the server to the client). It is a variable-length part with the format `padding.delay.padding` + `(.delay.padding)` x n (multiple padding blocks can be inserted, requiring a delay block between two padding blocks).\n\n- `padding` format is `probability-min-max`. E.g., `100-111-1111` means 100% probability to send a padding of length 111~1111.\n- `delay` format is also `probability-min-max`. E.g., `75-0-111` means 75% probability to wait 0~111 milliseconds.\n\nThe first padding block has special requirements: probability must be 100% and minimum length greater than 0. If no padding exists, the core automatically uses `100-111-1111.75-0-111.50-0-3333` as the padding setting.\n\n**The last block** will be recognized by the core as the parameter used to authenticate the server. It can be generated by `./xray x25519` (using the Password part) or `./xray mlkem768` (using the Client part). It must correspond to the server. `mlkem768` belongs to post-quantum algorithms, preventing (future) client parameter leaks from allowing quantum computers to crack the private key and impersonate the server. This parameter is only used for verification; the handshake process is post-quantum secure regardless, and existing encrypted data cannot be decrypted by future quantum computers.\n",
|
|
10389
10400
|
"allOf": [
|
|
10390
10401
|
{
|
|
10391
|
-
"$ref": "#/definitions/
|
|
10402
|
+
"$ref": "#/definitions/__schema804"
|
|
10392
10403
|
}
|
|
10393
10404
|
]
|
|
10394
10405
|
},
|
|
10395
|
-
"
|
|
10406
|
+
"__schema804": {
|
|
10396
10407
|
"type": "string"
|
|
10397
10408
|
},
|
|
10398
|
-
"
|
|
10409
|
+
"__schema805": {
|
|
10399
10410
|
"markdownDescription": "Flow control mode, used to select the XTLS algorithm.\n\nCurrently, the following flow control modes are available in the outbound protocol:\n\n- **No `flow` or empty string**: Use standard TLS proxy.\n- **`xtls-rprx-vision`**: Use XTLS, including inner handshake random padding. Will intercept UDP traffic targeting port 443 (QUIC) to force browsers to use standard HTTPS, increasing traffic that can be Spliced.\n- **`xtls-rprx-vision-udp443`**: Same as `xtls-rprx-vision`, but does not intercept UDP 443. Used when a program forces the use of QUIC and would fail to work if intercepted.\n\nXTLS is available only in the following combinations:\n\n- **TCP+TLS/REALITY**: In this case, if transmitting TLS 1.3, the core will attempt to Splice encrypted data at the bottom layer. If successful, it saves all core IO overhead.\n- **VLESS Encryption**: No underlying transport restrictions. If the underlying transport is not TCP, it only attempts to penetrate Encryption, saving Encryption overhead. If it is TCP, it will still attempt to perform Splice.\n\n### TIP\n\nSplice is a function provided by the Linux Kernel. The system kernel forwards TCP directly, no longer passing through Xray's memory, greatly reducing data copying and CPU context switching.\n\nWhen using Vision mode, Splice is automatically enabled if the following conditions are met:\n\n- Linux environment.\n- Inbound protocol is a pure TCP connection like `Dokodemo door`, `Socks`, `HTTP`, or other inbound protocols using XTLS.\n- Outbound protocol is VLESS + XTLS.\n\nWhen using Splice, the network speed display will lag and will only be counted after the connection is disconnected because the core cannot know the traffic situation while the kernel takes over the connection.\n",
|
|
10400
10411
|
"allOf": [
|
|
10401
10412
|
{
|
|
10402
|
-
"$ref": "#/definitions/
|
|
10413
|
+
"$ref": "#/definitions/__schema806"
|
|
10403
10414
|
}
|
|
10404
10415
|
]
|
|
10405
10416
|
},
|
|
10406
|
-
"
|
|
10417
|
+
"__schema806": {
|
|
10407
10418
|
"type": "string",
|
|
10408
10419
|
"enum": [
|
|
10409
10420
|
"",
|
|
@@ -10411,29 +10422,29 @@
|
|
|
10411
10422
|
"xtls-rprx-vision-udp443"
|
|
10412
10423
|
]
|
|
10413
10424
|
},
|
|
10414
|
-
"
|
|
10425
|
+
"__schema807": {
|
|
10415
10426
|
"markdownDescription": "User level. The connection will use the [Local Policy](https://xtls.github.io/en/config/policy.html#levelpolicyobject) corresponding to this user level.\n\nThe value of `level` corresponds to the value of `level` in [policy](https://xtls.github.io/en/config/policy.html#policyobject). If not specified, it defaults to 0.\n",
|
|
10416
10427
|
"allOf": [
|
|
10417
10428
|
{
|
|
10418
|
-
"$ref": "#/definitions/
|
|
10429
|
+
"$ref": "#/definitions/__schema808"
|
|
10419
10430
|
}
|
|
10420
10431
|
]
|
|
10421
10432
|
},
|
|
10422
|
-
"
|
|
10433
|
+
"__schema808": {
|
|
10423
10434
|
"default": 0,
|
|
10424
10435
|
"type": "integer",
|
|
10425
10436
|
"minimum": -9007199254740991,
|
|
10426
10437
|
"maximum": 9007199254740991
|
|
10427
10438
|
},
|
|
10428
|
-
"
|
|
10439
|
+
"__schema809": {
|
|
10429
10440
|
"markdownDescription": "VLESS minimalist reverse proxy configuration. It preserves the real source IP information from the public-facing side.\n\nThe existence of this item indicates that this outbound can be used as a VLESS reverse proxy outbound, and it will automatically establish a connection to the server to register the reverse proxy tunnel.\n\n`tag` is the inbound proxy tag for this reverse proxy. When the server dispatches a reverse proxy request, it enters the routing system from the inbound using this tag, and the routing system routes it to the outbound you need.\n\nThe UUID used must be one that is also configured with `reverse` on the server side (see VLESS Inbound for details).\n\n`sniffing` see [SniffingObject](https://xtls.github.io/en/config/inbound.html#sniffingobject), performs sniffing on requests entering through this reverse proxy.\n\n### TIP\n\nFull tutorial: [VLESS Reverse Proxy Examples](https://xtls.github.io/en/document/level-2/vless_reverse.html)\n",
|
|
10430
10441
|
"allOf": [
|
|
10431
10442
|
{
|
|
10432
|
-
"$ref": "#/definitions/
|
|
10443
|
+
"$ref": "#/definitions/__schema810"
|
|
10433
10444
|
}
|
|
10434
10445
|
]
|
|
10435
10446
|
},
|
|
10436
|
-
"
|
|
10447
|
+
"__schema810": {
|
|
10437
10448
|
"type": "object",
|
|
10438
10449
|
"properties": {
|
|
10439
10450
|
"tag": {
|
|
@@ -10453,7 +10464,101 @@
|
|
|
10453
10464
|
],
|
|
10454
10465
|
"additionalProperties": false
|
|
10455
10466
|
},
|
|
10456
|
-
"
|
|
10467
|
+
"__schema811": {
|
|
10468
|
+
"type": "object",
|
|
10469
|
+
"properties": {
|
|
10470
|
+
"vnext": {
|
|
10471
|
+
"type": "array",
|
|
10472
|
+
"items": {
|
|
10473
|
+
"type": "object",
|
|
10474
|
+
"properties": {
|
|
10475
|
+
"address": {
|
|
10476
|
+
"type": "string",
|
|
10477
|
+
"markdownDescription": "Server address, points to the server. Supports domain names, IPv4, and IPv6.\n"
|
|
10478
|
+
},
|
|
10479
|
+
"port": {
|
|
10480
|
+
"markdownDescription": "Server port, usually the same as the port the server is listening on.\n",
|
|
10481
|
+
"allOf": [
|
|
10482
|
+
{
|
|
10483
|
+
"$ref": "#/definitions/__schema148"
|
|
10484
|
+
}
|
|
10485
|
+
]
|
|
10486
|
+
},
|
|
10487
|
+
"users": {
|
|
10488
|
+
"type": "array",
|
|
10489
|
+
"items": {
|
|
10490
|
+
"type": "object",
|
|
10491
|
+
"properties": {
|
|
10492
|
+
"id": {
|
|
10493
|
+
"type": "string",
|
|
10494
|
+
"markdownDescription": "User ID for VLESS. It can be any string less than 30 bytes, or a valid UUID. A custom string and its mapped UUID are equivalent.\n\nThe mapping standard is described in [VLESS UUID Mapping Standard: Mapping Custom Strings to UUIDv5](https://github.com/XTLS/Xray-core/issues/158).\n\nYou can use the command `xray uuid -i \"custom string\"` to generate the UUID mapped from a custom string, or use the command `xray uuid` to generate a random UUID.\n"
|
|
10495
|
+
},
|
|
10496
|
+
"encryption": {
|
|
10497
|
+
"default": "none",
|
|
10498
|
+
"markdownDescription": "[VLESS Encryption](https://github.com/XTLS/Xray-core/pull/5067) settings. Cannot be left empty; to disable, explicitly set to `\"none\"`.\n\nIt is recommended for most users to use the `xray vlessenc` command to automatically generate this field to avoid configuration mistakes. The detailed configuration below is recommended only for advanced users.\n\nIts format is a detailed configuration string of fields connected by `.`. For example: `mlkem768x25519plus.native.0rtt.100-111-1111.75-0-111.50-0-3333.ptjHQxBQxTJ9MWr2cd5qWIflBSACHOevTauCQwa_71U`. This document will refer to the separate parts separated by dots as \"blocks\".\n\n- **The 1st block** is the handshake method. Currently, there is only `mlkem768x25519plus`. Requires consistency between server and client.\n- **The 2nd block** is the encryption method. Options are `native`/`xorpub`/`random`, corresponding to: raw format packet / raw format + obfuscated public key part / fully random numbers (similar to VMESS/Shadowsocks). Requires consistency between server and client.\n- **The 3rd block** is session resumption. Choosing `0rtt` will follow the server settings to attempt to use previously generated tickets to skip the handshake for fast connection (can be manually disabled by the server). Choosing `1rtt` will force a 1-RTT handshake process. The meaning here differs from the server setting; see VLESS Inbound `decryption` settings for details.\n\nFollowing blocks are **padding**. After the connection is established, the client sends some garbage data to obfuscate length characteristics. It does not need to be the same as the server (the corresponding part in the inbound is the padding sent from the server to the client). It is a variable-length part with the format `padding.delay.padding` + `(.delay.padding)` x n (multiple padding blocks can be inserted, requiring a delay block between two padding blocks).\n\n- `padding` format is `probability-min-max`. E.g., `100-111-1111` means 100% probability to send a padding of length 111~1111.\n- `delay` format is also `probability-min-max`. E.g., `75-0-111` means 75% probability to wait 0~111 milliseconds.\n\nThe first padding block has special requirements: probability must be 100% and minimum length greater than 0. If no padding exists, the core automatically uses `100-111-1111.75-0-111.50-0-3333` as the padding setting.\n\n**The last block** will be recognized by the core as the parameter used to authenticate the server. It can be generated by `./xray x25519` (using the Password part) or `./xray mlkem768` (using the Client part). It must correspond to the server. `mlkem768` belongs to post-quantum algorithms, preventing (future) client parameter leaks from allowing quantum computers to crack the private key and impersonate the server. This parameter is only used for verification; the handshake process is post-quantum secure regardless, and existing encrypted data cannot be decrypted by future quantum computers.\n",
|
|
10499
|
+
"allOf": [
|
|
10500
|
+
{
|
|
10501
|
+
"$ref": "#/definitions/__schema812"
|
|
10502
|
+
}
|
|
10503
|
+
]
|
|
10504
|
+
},
|
|
10505
|
+
"flow": {
|
|
10506
|
+
"markdownDescription": "Flow control mode, used to select the XTLS algorithm.\n\nCurrently, the following flow control modes are available in the outbound protocol:\n\n- **No `flow` or empty string**: Use standard TLS proxy.\n- **`xtls-rprx-vision`**: Use XTLS, including inner handshake random padding. Will intercept UDP traffic targeting port 443 (QUIC) to force browsers to use standard HTTPS, increasing traffic that can be Spliced.\n- **`xtls-rprx-vision-udp443`**: Same as `xtls-rprx-vision`, but does not intercept UDP 443. Used when a program forces the use of QUIC and would fail to work if intercepted.\n\nXTLS is available only in the following combinations:\n\n- **TCP+TLS/REALITY**: In this case, if transmitting TLS 1.3, the core will attempt to Splice encrypted data at the bottom layer. If successful, it saves all core IO overhead.\n- **VLESS Encryption**: No underlying transport restrictions. If the underlying transport is not TCP, it only attempts to penetrate Encryption, saving Encryption overhead. If it is TCP, it will still attempt to perform Splice.\n\n### TIP\n\nSplice is a function provided by the Linux Kernel. The system kernel forwards TCP directly, no longer passing through Xray's memory, greatly reducing data copying and CPU context switching.\n\nWhen using Vision mode, Splice is automatically enabled if the following conditions are met:\n\n- Linux environment.\n- Inbound protocol is a pure TCP connection like `Dokodemo door`, `Socks`, `HTTP`, or other inbound protocols using XTLS.\n- Outbound protocol is VLESS + XTLS.\n\nWhen using Splice, the network speed display will lag and will only be counted after the connection is disconnected because the core cannot know the traffic situation while the kernel takes over the connection.\n",
|
|
10507
|
+
"allOf": [
|
|
10508
|
+
{
|
|
10509
|
+
"$ref": "#/definitions/__schema813"
|
|
10510
|
+
}
|
|
10511
|
+
]
|
|
10512
|
+
},
|
|
10513
|
+
"level": {
|
|
10514
|
+
"markdownDescription": "User level. The connection will use the [Local Policy](https://xtls.github.io/en/config/policy.html#levelpolicyobject) corresponding to this user level.\n\nThe value of `level` corresponds to the value of `level` in [policy](https://xtls.github.io/en/config/policy.html#policyobject). If not specified, it defaults to 0.\n",
|
|
10515
|
+
"allOf": [
|
|
10516
|
+
{
|
|
10517
|
+
"$ref": "#/definitions/__schema814"
|
|
10518
|
+
}
|
|
10519
|
+
]
|
|
10520
|
+
}
|
|
10521
|
+
},
|
|
10522
|
+
"required": [
|
|
10523
|
+
"id",
|
|
10524
|
+
"encryption"
|
|
10525
|
+
],
|
|
10526
|
+
"additionalProperties": false
|
|
10527
|
+
}
|
|
10528
|
+
}
|
|
10529
|
+
},
|
|
10530
|
+
"required": [
|
|
10531
|
+
"address",
|
|
10532
|
+
"port",
|
|
10533
|
+
"users"
|
|
10534
|
+
],
|
|
10535
|
+
"additionalProperties": false
|
|
10536
|
+
}
|
|
10537
|
+
}
|
|
10538
|
+
},
|
|
10539
|
+
"required": [
|
|
10540
|
+
"vnext"
|
|
10541
|
+
],
|
|
10542
|
+
"additionalProperties": false
|
|
10543
|
+
},
|
|
10544
|
+
"__schema812": {
|
|
10545
|
+
"type": "string"
|
|
10546
|
+
},
|
|
10547
|
+
"__schema813": {
|
|
10548
|
+
"type": "string",
|
|
10549
|
+
"enum": [
|
|
10550
|
+
"",
|
|
10551
|
+
"xtls-rprx-vision",
|
|
10552
|
+
"xtls-rprx-vision-udp443"
|
|
10553
|
+
]
|
|
10554
|
+
},
|
|
10555
|
+
"__schema814": {
|
|
10556
|
+
"default": 0,
|
|
10557
|
+
"type": "integer",
|
|
10558
|
+
"minimum": -9007199254740991,
|
|
10559
|
+
"maximum": 9007199254740991
|
|
10560
|
+
},
|
|
10561
|
+
"__schema815": {
|
|
10457
10562
|
"type": "object",
|
|
10458
10563
|
"properties": {
|
|
10459
10564
|
"sendThrough": {
|
|
@@ -10475,10 +10580,10 @@
|
|
|
10475
10580
|
"$ref": "#/definitions/__schema705"
|
|
10476
10581
|
},
|
|
10477
10582
|
"protocol": {
|
|
10478
|
-
"$ref": "#/definitions/
|
|
10583
|
+
"$ref": "#/definitions/__schema816"
|
|
10479
10584
|
},
|
|
10480
10585
|
"settings": {
|
|
10481
|
-
"$ref": "#/definitions/
|
|
10586
|
+
"$ref": "#/definitions/__schema817"
|
|
10482
10587
|
}
|
|
10483
10588
|
},
|
|
10484
10589
|
"required": [
|
|
@@ -10488,30 +10593,30 @@
|
|
|
10488
10593
|
"additionalProperties": false,
|
|
10489
10594
|
"markdownDescription": "[VMess](https://xtls.github.io/en/development/protocols/vmess.html) is an encrypted transport protocol, usually serving as a bridge between the Xray client and server.\n\n### DANGER\n\nVMess depends on system time. Please ensure that the UTC time of the system running Xray is within 120 seconds of the actual time, independent of the time zone. On Linux systems, you can install the `ntp` service to automatically synchronize the system time.\n\n[Documentation ↗](https://xtls.github.io/en/config/outbounds/vmess.html)\n"
|
|
10490
10595
|
},
|
|
10491
|
-
"
|
|
10596
|
+
"__schema816": {
|
|
10492
10597
|
"type": "string",
|
|
10493
10598
|
"const": "vmess"
|
|
10494
10599
|
},
|
|
10495
|
-
"
|
|
10600
|
+
"__schema817": {
|
|
10496
10601
|
"type": "object",
|
|
10497
10602
|
"properties": {
|
|
10498
10603
|
"address": {
|
|
10499
|
-
"$ref": "#/definitions/
|
|
10604
|
+
"$ref": "#/definitions/__schema818"
|
|
10500
10605
|
},
|
|
10501
10606
|
"port": {
|
|
10502
|
-
"$ref": "#/definitions/
|
|
10607
|
+
"$ref": "#/definitions/__schema819"
|
|
10503
10608
|
},
|
|
10504
10609
|
"id": {
|
|
10505
|
-
"$ref": "#/definitions/
|
|
10610
|
+
"$ref": "#/definitions/__schema820"
|
|
10506
10611
|
},
|
|
10507
10612
|
"security": {
|
|
10508
|
-
"$ref": "#/definitions/
|
|
10613
|
+
"$ref": "#/definitions/__schema821"
|
|
10509
10614
|
},
|
|
10510
10615
|
"level": {
|
|
10511
|
-
"$ref": "#/definitions/
|
|
10616
|
+
"$ref": "#/definitions/__schema823"
|
|
10512
10617
|
},
|
|
10513
10618
|
"experiments": {
|
|
10514
|
-
"$ref": "#/definitions/
|
|
10619
|
+
"$ref": "#/definitions/__schema825"
|
|
10515
10620
|
}
|
|
10516
10621
|
},
|
|
10517
10622
|
"required": [
|
|
@@ -10522,11 +10627,11 @@
|
|
|
10522
10627
|
"additionalProperties": false,
|
|
10523
10628
|
"markdownDescription": "`OutboundConfigurationObject` corresponds to the `settings` item in [`OutboundObject`](https://xtls.github.io/en/config/outbound.html).\n"
|
|
10524
10629
|
},
|
|
10525
|
-
"
|
|
10630
|
+
"__schema818": {
|
|
10526
10631
|
"type": "string",
|
|
10527
10632
|
"markdownDescription": "Server address, supports IP address or domain name.\n"
|
|
10528
10633
|
},
|
|
10529
|
-
"
|
|
10634
|
+
"__schema819": {
|
|
10530
10635
|
"markdownDescription": "The port number the server is listening on. Required.\n",
|
|
10531
10636
|
"allOf": [
|
|
10532
10637
|
{
|
|
@@ -10534,19 +10639,19 @@
|
|
|
10534
10639
|
}
|
|
10535
10640
|
]
|
|
10536
10641
|
},
|
|
10537
|
-
"
|
|
10642
|
+
"__schema820": {
|
|
10538
10643
|
"type": "string",
|
|
10539
10644
|
"markdownDescription": "VMess User ID. It can be any string less than 30 bytes or a valid UUID.\n\nA custom string and its mapped UUID are equivalent. This means you can identify the same user in the configuration file like this:\n\n- Write `\"id\": \"我爱🍉老师1314\"`,\n- Or write `\"id\": \"5783a3e7-e373-51cd-8642-c83782b807c5\"` (This UUID is the UUID mapping of `我爱🍉老师1314`)\n\nThe mapping standard is described in [VLESS UUID Mapping Standard: Mapping Custom Strings to a UUIDv5](https://github.com/XTLS/Xray-core/issues/158).\n\nYou can use the command `xray uuid -i \"custom string\"` to generate the UUID mapped from the custom string. You can also use the command `xray uuid` to generate a random UUID.\n"
|
|
10540
10645
|
},
|
|
10541
|
-
"
|
|
10646
|
+
"__schema821": {
|
|
10542
10647
|
"markdownDescription": "Encryption method. The client will use the configured encryption method to send data, and the server will automatically identify it without configuration.\n\n- `\"aes-128-gcm\"`: Use AES-128-GCM algorithm.\n- `\"chacha20-poly1305\"`: Use Chacha20-Poly1305 algorithm.\n- `\"auto\"`: Default value. Automatically selected (uses aes-128-gcm encryption when the running framework is AMD64, ARM64, or s390x; uses Chacha20-Poly1305 encryption in other cases).\n- `\"none\"`: No encryption, maintains the VMess message structure.\n- `\"zero\"`: No encryption, direct stream copy (similar to VLESS).\n\nIt is not recommended to use `\"none\"` or `\"zero\"` pseudo-encryption methods without enabling TLS encryption and enforcing certificate verification. Regardless of the encryption method used, the VMess packet header is protected by encryption and authentication.\n\nNote: `\"auto\"` only determines the AES hardware acceleration support status of the _client_. If the _server_ does not support AES hardware acceleration, you still need to manually set it to `chacha20-poly1305`. This is very important because Chacha20-Poly1305 takes about 48% more time than AES-128-GCM on platforms supporting AES acceleration, but on platforms _without_ AES acceleration, AES-128-GCM takes over 2000% more time than Chacha20-Poly1305.\n",
|
|
10543
10648
|
"allOf": [
|
|
10544
10649
|
{
|
|
10545
|
-
"$ref": "#/definitions/
|
|
10650
|
+
"$ref": "#/definitions/__schema822"
|
|
10546
10651
|
}
|
|
10547
10652
|
]
|
|
10548
10653
|
},
|
|
10549
|
-
"
|
|
10654
|
+
"__schema822": {
|
|
10550
10655
|
"type": "string",
|
|
10551
10656
|
"enum": [
|
|
10552
10657
|
"aes-128-gcm",
|
|
@@ -10556,29 +10661,29 @@
|
|
|
10556
10661
|
"zero"
|
|
10557
10662
|
]
|
|
10558
10663
|
},
|
|
10559
|
-
"
|
|
10664
|
+
"__schema823": {
|
|
10560
10665
|
"markdownDescription": "User level. The connection will use the [local policy](https://xtls.github.io/en/config/policy.html#levelpolicyobject) corresponding to this user level.\n\nThe value of `level` corresponds to the value of `level` in [policy](https://xtls.github.io/en/config/policy.html#policyobject). If not specified, the default is 0.\n",
|
|
10561
10666
|
"allOf": [
|
|
10562
10667
|
{
|
|
10563
|
-
"$ref": "#/definitions/
|
|
10668
|
+
"$ref": "#/definitions/__schema824"
|
|
10564
10669
|
}
|
|
10565
10670
|
]
|
|
10566
10671
|
},
|
|
10567
|
-
"
|
|
10672
|
+
"__schema824": {
|
|
10568
10673
|
"default": 0,
|
|
10569
10674
|
"type": "integer",
|
|
10570
10675
|
"minimum": -9007199254740991,
|
|
10571
10676
|
"maximum": 9007199254740991
|
|
10572
10677
|
},
|
|
10573
|
-
"
|
|
10678
|
+
"__schema825": {
|
|
10574
10679
|
"markdownDescription": "Enabled VMess protocol experimental features. (Features here are unstable and may be removed at any time). Multiple enabled experiments can be separated by the `|` character, such as `\"AuthenticatedLength|NoTerminationSignal\"`.\n\n- `\"AuthenticatedLength\"`: Enable authenticated packet length experiment. This experiment requires both the client and server to enable it simultaneously and run the same version of the program.\n- `\"NoTerminationSignal\"`: Enable not sending the disconnection signal. This feature is now enabled by default.\n",
|
|
10575
10680
|
"allOf": [
|
|
10576
10681
|
{
|
|
10577
|
-
"$ref": "#/definitions/
|
|
10682
|
+
"$ref": "#/definitions/__schema826"
|
|
10578
10683
|
}
|
|
10579
10684
|
]
|
|
10580
10685
|
},
|
|
10581
|
-
"
|
|
10686
|
+
"__schema826": {
|
|
10582
10687
|
"type": "string",
|
|
10583
10688
|
"enum": [
|
|
10584
10689
|
"AuthenticatedLength",
|
|
@@ -10586,7 +10691,7 @@
|
|
|
10586
10691
|
"AuthenticatedLength|NoTerminationSignal"
|
|
10587
10692
|
]
|
|
10588
10693
|
},
|
|
10589
|
-
"
|
|
10694
|
+
"__schema827": {
|
|
10590
10695
|
"type": "object",
|
|
10591
10696
|
"properties": {
|
|
10592
10697
|
"sendThrough": {
|
|
@@ -10608,10 +10713,10 @@
|
|
|
10608
10713
|
"$ref": "#/definitions/__schema705"
|
|
10609
10714
|
},
|
|
10610
10715
|
"protocol": {
|
|
10611
|
-
"$ref": "#/definitions/
|
|
10716
|
+
"$ref": "#/definitions/__schema828"
|
|
10612
10717
|
},
|
|
10613
10718
|
"settings": {
|
|
10614
|
-
"$ref": "#/definitions/
|
|
10719
|
+
"$ref": "#/definitions/__schema829"
|
|
10615
10720
|
}
|
|
10616
10721
|
},
|
|
10617
10722
|
"required": [
|
|
@@ -10621,36 +10726,36 @@
|
|
|
10621
10726
|
"additionalProperties": false,
|
|
10622
10727
|
"markdownDescription": "Standard Wireguard protocol implementation.\n\n### DANGER\n\n**The Wireguard protocol is not designed specifically for bypassing firewalls. If used at the outermost layer to cross the Great Firewall, distinctive characteristics may lead to the server being blocked.**\n\n### TIP\n\nCurrently, configuring `streamSettings` is not supported in the Wireguard protocol outbound.\n\n[Documentation ↗](https://xtls.github.io/en/config/outbounds/wireguard.html)\n"
|
|
10623
10728
|
},
|
|
10624
|
-
"
|
|
10729
|
+
"__schema828": {
|
|
10625
10730
|
"type": "string",
|
|
10626
10731
|
"const": "wireguard"
|
|
10627
10732
|
},
|
|
10628
|
-
"
|
|
10733
|
+
"__schema829": {
|
|
10629
10734
|
"type": "object",
|
|
10630
10735
|
"properties": {
|
|
10631
10736
|
"secretKey": {
|
|
10632
|
-
"$ref": "#/definitions/
|
|
10737
|
+
"$ref": "#/definitions/__schema830"
|
|
10633
10738
|
},
|
|
10634
10739
|
"address": {
|
|
10635
|
-
"$ref": "#/definitions/
|
|
10740
|
+
"$ref": "#/definitions/__schema831"
|
|
10636
10741
|
},
|
|
10637
10742
|
"peers": {
|
|
10638
|
-
"$ref": "#/definitions/
|
|
10743
|
+
"$ref": "#/definitions/__schema833"
|
|
10639
10744
|
},
|
|
10640
10745
|
"noKernelTun": {
|
|
10641
|
-
"$ref": "#/definitions/
|
|
10746
|
+
"$ref": "#/definitions/__schema838"
|
|
10642
10747
|
},
|
|
10643
10748
|
"mtu": {
|
|
10644
|
-
"$ref": "#/definitions/
|
|
10749
|
+
"$ref": "#/definitions/__schema840"
|
|
10645
10750
|
},
|
|
10646
10751
|
"reserved": {
|
|
10647
|
-
"$ref": "#/definitions/
|
|
10752
|
+
"$ref": "#/definitions/__schema842"
|
|
10648
10753
|
},
|
|
10649
10754
|
"workers": {
|
|
10650
|
-
"$ref": "#/definitions/
|
|
10755
|
+
"$ref": "#/definitions/__schema844"
|
|
10651
10756
|
},
|
|
10652
10757
|
"domainStrategy": {
|
|
10653
|
-
"$ref": "#/definitions/
|
|
10758
|
+
"$ref": "#/definitions/__schema846"
|
|
10654
10759
|
}
|
|
10655
10760
|
},
|
|
10656
10761
|
"required": [
|
|
@@ -10662,30 +10767,30 @@
|
|
|
10662
10767
|
"additionalProperties": false,
|
|
10663
10768
|
"markdownDescription": "`OutboundConfigurationObject` corresponds to the `settings` item in [`OutboundObject`](https://xtls.github.io/en/config/outbound.html).\n"
|
|
10664
10769
|
},
|
|
10665
|
-
"
|
|
10770
|
+
"__schema830": {
|
|
10666
10771
|
"type": "string",
|
|
10667
10772
|
"markdownDescription": "User private key. Required.\n"
|
|
10668
10773
|
},
|
|
10669
|
-
"
|
|
10774
|
+
"__schema831": {
|
|
10670
10775
|
"minItems": 1,
|
|
10671
10776
|
"type": "array",
|
|
10672
10777
|
"items": {
|
|
10673
|
-
"$ref": "#/definitions/
|
|
10778
|
+
"$ref": "#/definitions/__schema832"
|
|
10674
10779
|
},
|
|
10675
10780
|
"markdownDescription": "Wireguard will start a virtual network interface (tun) locally. Use one or more IP addresses; IPv6 is supported.\n"
|
|
10676
10781
|
},
|
|
10677
|
-
"
|
|
10782
|
+
"__schema832": {
|
|
10678
10783
|
"type": "string"
|
|
10679
10784
|
},
|
|
10680
|
-
"
|
|
10785
|
+
"__schema833": {
|
|
10681
10786
|
"minItems": 1,
|
|
10682
10787
|
"type": "array",
|
|
10683
10788
|
"items": {
|
|
10684
|
-
"$ref": "#/definitions/
|
|
10789
|
+
"$ref": "#/definitions/__schema834"
|
|
10685
10790
|
},
|
|
10686
10791
|
"markdownDescription": "List of Wireguard servers, where each item is a server configuration.\n"
|
|
10687
10792
|
},
|
|
10688
|
-
"
|
|
10793
|
+
"__schema834": {
|
|
10689
10794
|
"type": "object",
|
|
10690
10795
|
"properties": {
|
|
10691
10796
|
"endpoint": {
|
|
@@ -10700,7 +10805,7 @@
|
|
|
10700
10805
|
"markdownDescription": "Additional symmetric encryption key.\n",
|
|
10701
10806
|
"allOf": [
|
|
10702
10807
|
{
|
|
10703
|
-
"$ref": "#/definitions/
|
|
10808
|
+
"$ref": "#/definitions/__schema835"
|
|
10704
10809
|
}
|
|
10705
10810
|
]
|
|
10706
10811
|
},
|
|
@@ -10708,7 +10813,7 @@
|
|
|
10708
10813
|
"markdownDescription": "Heartbeat interval in seconds. Default is 0, meaning no heartbeat.\n",
|
|
10709
10814
|
"allOf": [
|
|
10710
10815
|
{
|
|
10711
|
-
"$ref": "#/definitions/
|
|
10816
|
+
"$ref": "#/definitions/__schema836"
|
|
10712
10817
|
}
|
|
10713
10818
|
]
|
|
10714
10819
|
},
|
|
@@ -10716,7 +10821,7 @@
|
|
|
10716
10821
|
"markdownDescription": "Wireguard only allows traffic from specific source IPs.\n",
|
|
10717
10822
|
"allOf": [
|
|
10718
10823
|
{
|
|
10719
|
-
"$ref": "#/definitions/
|
|
10824
|
+
"$ref": "#/definitions/__schema837"
|
|
10720
10825
|
}
|
|
10721
10826
|
]
|
|
10722
10827
|
}
|
|
@@ -10727,16 +10832,16 @@
|
|
|
10727
10832
|
],
|
|
10728
10833
|
"additionalProperties": false
|
|
10729
10834
|
},
|
|
10730
|
-
"
|
|
10835
|
+
"__schema835": {
|
|
10731
10836
|
"type": "string"
|
|
10732
10837
|
},
|
|
10733
|
-
"
|
|
10838
|
+
"__schema836": {
|
|
10734
10839
|
"default": 0,
|
|
10735
10840
|
"type": "integer",
|
|
10736
10841
|
"minimum": -9007199254740991,
|
|
10737
10842
|
"maximum": 9007199254740991
|
|
10738
10843
|
},
|
|
10739
|
-
"
|
|
10844
|
+
"__schema837": {
|
|
10740
10845
|
"default": [
|
|
10741
10846
|
"0.0.0.0/0",
|
|
10742
10847
|
"::/0"
|
|
@@ -10746,41 +10851,41 @@
|
|
|
10746
10851
|
"type": "string"
|
|
10747
10852
|
}
|
|
10748
10853
|
},
|
|
10749
|
-
"
|
|
10854
|
+
"__schema838": {
|
|
10750
10855
|
"markdownDescription": "By default, the core detects if it is running on Linux and if the current user has `CAP_NET_ADMIN` permissions to decide whether to enable the system virtual network interface; otherwise, it uses gVisor. Using the system virtual interface offers relatively higher performance. Note that this is only for processing IP packets and has nothing to do with the wireguard kernel module.\n\nThis detection may not always be accurate. For example, some LXC virtualization environments may not have TUN permissions at all, causing the outbound to fail. Therefore, you can set this option to manually disable it.\n\nWhen using the system virtual interface, it occupies IPv6 routing table number `10230`. Each additional Wireguard outbound will use subsequent routing tables sequentially; for example, the second one will use routing table `10231`, and so on.\n\nNote that if a second Xray instance is started on the same machine, it will not assign the next routing table number but will continue trying to use routing table `10230`. Since it is already occupied by the first Xray instance, it will fail to connect. If absolutely needed, you must set this option to disable the system virtual interface.\n",
|
|
10751
10856
|
"allOf": [
|
|
10752
10857
|
{
|
|
10753
|
-
"$ref": "#/definitions/
|
|
10858
|
+
"$ref": "#/definitions/__schema839"
|
|
10754
10859
|
}
|
|
10755
10860
|
]
|
|
10756
10861
|
},
|
|
10757
|
-
"
|
|
10862
|
+
"__schema839": {
|
|
10758
10863
|
"default": false,
|
|
10759
10864
|
"type": "boolean"
|
|
10760
10865
|
},
|
|
10761
|
-
"
|
|
10866
|
+
"__schema840": {
|
|
10762
10867
|
"default": 1420,
|
|
10763
10868
|
"markdownDescription": "MTU size of the underlying Wireguard tun.\n\nThe structure of a Wireguard packet is as follows:\n\n- 20-byte IPv4 header or 40 byte IPv6 header\n- 8-byte UDP header\n- 4-byte type\n- 4-byte key index\n- 8-byte nonce\n- N-byte encrypted data\n- 16-byte authentication tag\n\n`N-byte encrypted data` is the MTU value we need. Depending on whether the endpoint is IPv4 or IPv6, the specific value can be 1440 (IPv4) or 1420 (IPv6). If in a special environment, subtract further (e.g., home broadband PPPoE requires an extra -8).\n",
|
|
10764
10869
|
"allOf": [
|
|
10765
10870
|
{
|
|
10766
|
-
"$ref": "#/definitions/
|
|
10871
|
+
"$ref": "#/definitions/__schema841"
|
|
10767
10872
|
}
|
|
10768
10873
|
]
|
|
10769
10874
|
},
|
|
10770
|
-
"
|
|
10875
|
+
"__schema841": {
|
|
10771
10876
|
"type": "integer",
|
|
10772
10877
|
"minimum": -9007199254740991,
|
|
10773
10878
|
"maximum": 9007199254740991
|
|
10774
10879
|
},
|
|
10775
|
-
"
|
|
10880
|
+
"__schema842": {
|
|
10776
10881
|
"markdownDescription": "Wireguard reserved bytes, fill as needed.\n",
|
|
10777
10882
|
"allOf": [
|
|
10778
10883
|
{
|
|
10779
|
-
"$ref": "#/definitions/
|
|
10884
|
+
"$ref": "#/definitions/__schema843"
|
|
10780
10885
|
}
|
|
10781
10886
|
]
|
|
10782
10887
|
},
|
|
10783
|
-
"
|
|
10888
|
+
"__schema843": {
|
|
10784
10889
|
"default": [],
|
|
10785
10890
|
"type": "array",
|
|
10786
10891
|
"items": {
|
|
@@ -10789,28 +10894,28 @@
|
|
|
10789
10894
|
"maximum": 9007199254740991
|
|
10790
10895
|
}
|
|
10791
10896
|
},
|
|
10792
|
-
"
|
|
10897
|
+
"__schema844": {
|
|
10793
10898
|
"markdownDescription": "Number of threads used by Wireguard. Defaults to the number of system cores.\n",
|
|
10794
10899
|
"allOf": [
|
|
10795
10900
|
{
|
|
10796
|
-
"$ref": "#/definitions/
|
|
10901
|
+
"$ref": "#/definitions/__schema845"
|
|
10797
10902
|
}
|
|
10798
10903
|
]
|
|
10799
10904
|
},
|
|
10800
|
-
"
|
|
10905
|
+
"__schema845": {
|
|
10801
10906
|
"type": "integer",
|
|
10802
10907
|
"minimum": -9007199254740991,
|
|
10803
10908
|
"maximum": 9007199254740991
|
|
10804
10909
|
},
|
|
10805
|
-
"
|
|
10910
|
+
"__schema846": {
|
|
10806
10911
|
"markdownDescription": "Controls the domain resolution strategy when the Wireguard server address is a domain name or the target address of the proxied traffic is a domain name.\n\nUnlike most proxy protocols, Wireguard does not allow passing domain names as targets. Therefore, if the incoming target is a domain, it needs to be resolved to an IP address before transmission. This is handled by Xray's built-in DNS. The meaning of this field is the same as `domainStrategy` in `Freedom` outbound. The default value is `ForceIP`.\n\nThe `domainStrategy` of `Freedom` outbound includes options like `UseIP`, which are not provided here because Wireguard must obtain a usable IP and cannot perform the behavior of falling back to a domain name after `UseIP` resolution fails.\n\nNote: When applied to proxied traffic, this option is also constrained by the `address` option. For example, if you set `ForceIPv6v4` but no IPv6 address is set in `address`, even if the target domain has AAAA records, they will not be resolved/used.\n",
|
|
10807
10912
|
"allOf": [
|
|
10808
10913
|
{
|
|
10809
|
-
"$ref": "#/definitions/
|
|
10914
|
+
"$ref": "#/definitions/__schema847"
|
|
10810
10915
|
}
|
|
10811
10916
|
]
|
|
10812
10917
|
},
|
|
10813
|
-
"
|
|
10918
|
+
"__schema847": {
|
|
10814
10919
|
"default": "ForceIP",
|
|
10815
10920
|
"type": "string",
|
|
10816
10921
|
"enum": [
|