@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
package/dist/full/schema.json
CHANGED
|
@@ -1056,7 +1056,7 @@
|
|
|
1056
1056
|
]
|
|
1057
1057
|
},
|
|
1058
1058
|
"then": {
|
|
1059
|
-
"$ref": "#/definitions/
|
|
1059
|
+
"$ref": "#/definitions/__schema815"
|
|
1060
1060
|
}
|
|
1061
1061
|
},
|
|
1062
1062
|
{
|
|
@@ -1071,7 +1071,7 @@
|
|
|
1071
1071
|
]
|
|
1072
1072
|
},
|
|
1073
1073
|
"then": {
|
|
1074
|
-
"$ref": "#/definitions/
|
|
1074
|
+
"$ref": "#/definitions/__schema827"
|
|
1075
1075
|
}
|
|
1076
1076
|
}
|
|
1077
1077
|
]
|
|
@@ -10837,28 +10837,39 @@
|
|
|
10837
10837
|
"const": "vless"
|
|
10838
10838
|
},
|
|
10839
10839
|
"__schema798": {
|
|
10840
|
+
"anyOf": [
|
|
10841
|
+
{
|
|
10842
|
+
"$ref": "#/definitions/__schema799"
|
|
10843
|
+
},
|
|
10844
|
+
{
|
|
10845
|
+
"$ref": "#/definitions/__schema811"
|
|
10846
|
+
}
|
|
10847
|
+
],
|
|
10848
|
+
"markdownDescription": "`OutboundConfigurationObject` corresponds to the `settings` item in [`OutboundObject`](https://xtls.github.io/en/config/outbound.html).\n"
|
|
10849
|
+
},
|
|
10850
|
+
"__schema799": {
|
|
10840
10851
|
"type": "object",
|
|
10841
10852
|
"properties": {
|
|
10842
10853
|
"address": {
|
|
10843
|
-
"$ref": "#/definitions/
|
|
10854
|
+
"$ref": "#/definitions/__schema800"
|
|
10844
10855
|
},
|
|
10845
10856
|
"port": {
|
|
10846
|
-
"$ref": "#/definitions/
|
|
10857
|
+
"$ref": "#/definitions/__schema801"
|
|
10847
10858
|
},
|
|
10848
10859
|
"id": {
|
|
10849
|
-
"$ref": "#/definitions/
|
|
10860
|
+
"$ref": "#/definitions/__schema802"
|
|
10850
10861
|
},
|
|
10851
10862
|
"encryption": {
|
|
10852
|
-
"$ref": "#/definitions/
|
|
10863
|
+
"$ref": "#/definitions/__schema803"
|
|
10853
10864
|
},
|
|
10854
10865
|
"flow": {
|
|
10855
|
-
"$ref": "#/definitions/
|
|
10866
|
+
"$ref": "#/definitions/__schema805"
|
|
10856
10867
|
},
|
|
10857
10868
|
"level": {
|
|
10858
|
-
"$ref": "#/definitions/
|
|
10869
|
+
"$ref": "#/definitions/__schema807"
|
|
10859
10870
|
},
|
|
10860
10871
|
"reverse": {
|
|
10861
|
-
"$ref": "#/definitions/
|
|
10872
|
+
"$ref": "#/definitions/__schema809"
|
|
10862
10873
|
}
|
|
10863
10874
|
},
|
|
10864
10875
|
"required": [
|
|
@@ -10870,11 +10881,11 @@
|
|
|
10870
10881
|
"additionalProperties": false,
|
|
10871
10882
|
"markdownDescription": "`OutboundConfigurationObject` corresponds to the `settings` item in [`OutboundObject`](https://xtls.github.io/en/config/outbound.html).\n"
|
|
10872
10883
|
},
|
|
10873
|
-
"
|
|
10884
|
+
"__schema800": {
|
|
10874
10885
|
"type": "string",
|
|
10875
10886
|
"markdownDescription": "Server address, points to the server. Supports domain names, IPv4, and IPv6.\n"
|
|
10876
10887
|
},
|
|
10877
|
-
"
|
|
10888
|
+
"__schema801": {
|
|
10878
10889
|
"markdownDescription": "Server port, usually the same as the port the server is listening on.\n",
|
|
10879
10890
|
"allOf": [
|
|
10880
10891
|
{
|
|
@@ -10882,31 +10893,31 @@
|
|
|
10882
10893
|
}
|
|
10883
10894
|
]
|
|
10884
10895
|
},
|
|
10885
|
-
"
|
|
10896
|
+
"__schema802": {
|
|
10886
10897
|
"type": "string",
|
|
10887
10898
|
"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"
|
|
10888
10899
|
},
|
|
10889
|
-
"
|
|
10900
|
+
"__schema803": {
|
|
10890
10901
|
"default": "none",
|
|
10891
10902
|
"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",
|
|
10892
10903
|
"allOf": [
|
|
10893
10904
|
{
|
|
10894
|
-
"$ref": "#/definitions/
|
|
10905
|
+
"$ref": "#/definitions/__schema804"
|
|
10895
10906
|
}
|
|
10896
10907
|
]
|
|
10897
10908
|
},
|
|
10898
|
-
"
|
|
10909
|
+
"__schema804": {
|
|
10899
10910
|
"type": "string"
|
|
10900
10911
|
},
|
|
10901
|
-
"
|
|
10912
|
+
"__schema805": {
|
|
10902
10913
|
"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",
|
|
10903
10914
|
"allOf": [
|
|
10904
10915
|
{
|
|
10905
|
-
"$ref": "#/definitions/
|
|
10916
|
+
"$ref": "#/definitions/__schema806"
|
|
10906
10917
|
}
|
|
10907
10918
|
]
|
|
10908
10919
|
},
|
|
10909
|
-
"
|
|
10920
|
+
"__schema806": {
|
|
10910
10921
|
"type": "string",
|
|
10911
10922
|
"enum": [
|
|
10912
10923
|
"",
|
|
@@ -10914,29 +10925,29 @@
|
|
|
10914
10925
|
"xtls-rprx-vision-udp443"
|
|
10915
10926
|
]
|
|
10916
10927
|
},
|
|
10917
|
-
"
|
|
10928
|
+
"__schema807": {
|
|
10918
10929
|
"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",
|
|
10919
10930
|
"allOf": [
|
|
10920
10931
|
{
|
|
10921
|
-
"$ref": "#/definitions/
|
|
10932
|
+
"$ref": "#/definitions/__schema808"
|
|
10922
10933
|
}
|
|
10923
10934
|
]
|
|
10924
10935
|
},
|
|
10925
|
-
"
|
|
10936
|
+
"__schema808": {
|
|
10926
10937
|
"default": 0,
|
|
10927
10938
|
"type": "integer",
|
|
10928
10939
|
"minimum": -9007199254740991,
|
|
10929
10940
|
"maximum": 9007199254740991
|
|
10930
10941
|
},
|
|
10931
|
-
"
|
|
10942
|
+
"__schema809": {
|
|
10932
10943
|
"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",
|
|
10933
10944
|
"allOf": [
|
|
10934
10945
|
{
|
|
10935
|
-
"$ref": "#/definitions/
|
|
10946
|
+
"$ref": "#/definitions/__schema810"
|
|
10936
10947
|
}
|
|
10937
10948
|
]
|
|
10938
10949
|
},
|
|
10939
|
-
"
|
|
10950
|
+
"__schema810": {
|
|
10940
10951
|
"type": "object",
|
|
10941
10952
|
"properties": {
|
|
10942
10953
|
"tag": {
|
|
@@ -10956,7 +10967,101 @@
|
|
|
10956
10967
|
],
|
|
10957
10968
|
"additionalProperties": false
|
|
10958
10969
|
},
|
|
10959
|
-
"
|
|
10970
|
+
"__schema811": {
|
|
10971
|
+
"type": "object",
|
|
10972
|
+
"properties": {
|
|
10973
|
+
"vnext": {
|
|
10974
|
+
"type": "array",
|
|
10975
|
+
"items": {
|
|
10976
|
+
"type": "object",
|
|
10977
|
+
"properties": {
|
|
10978
|
+
"address": {
|
|
10979
|
+
"type": "string",
|
|
10980
|
+
"markdownDescription": "Server address, points to the server. Supports domain names, IPv4, and IPv6.\n"
|
|
10981
|
+
},
|
|
10982
|
+
"port": {
|
|
10983
|
+
"markdownDescription": "Server port, usually the same as the port the server is listening on.\n",
|
|
10984
|
+
"allOf": [
|
|
10985
|
+
{
|
|
10986
|
+
"$ref": "#/definitions/__schema148"
|
|
10987
|
+
}
|
|
10988
|
+
]
|
|
10989
|
+
},
|
|
10990
|
+
"users": {
|
|
10991
|
+
"type": "array",
|
|
10992
|
+
"items": {
|
|
10993
|
+
"type": "object",
|
|
10994
|
+
"properties": {
|
|
10995
|
+
"id": {
|
|
10996
|
+
"type": "string",
|
|
10997
|
+
"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"
|
|
10998
|
+
},
|
|
10999
|
+
"encryption": {
|
|
11000
|
+
"default": "none",
|
|
11001
|
+
"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",
|
|
11002
|
+
"allOf": [
|
|
11003
|
+
{
|
|
11004
|
+
"$ref": "#/definitions/__schema812"
|
|
11005
|
+
}
|
|
11006
|
+
]
|
|
11007
|
+
},
|
|
11008
|
+
"flow": {
|
|
11009
|
+
"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",
|
|
11010
|
+
"allOf": [
|
|
11011
|
+
{
|
|
11012
|
+
"$ref": "#/definitions/__schema813"
|
|
11013
|
+
}
|
|
11014
|
+
]
|
|
11015
|
+
},
|
|
11016
|
+
"level": {
|
|
11017
|
+
"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",
|
|
11018
|
+
"allOf": [
|
|
11019
|
+
{
|
|
11020
|
+
"$ref": "#/definitions/__schema814"
|
|
11021
|
+
}
|
|
11022
|
+
]
|
|
11023
|
+
}
|
|
11024
|
+
},
|
|
11025
|
+
"required": [
|
|
11026
|
+
"id",
|
|
11027
|
+
"encryption"
|
|
11028
|
+
],
|
|
11029
|
+
"additionalProperties": false
|
|
11030
|
+
}
|
|
11031
|
+
}
|
|
11032
|
+
},
|
|
11033
|
+
"required": [
|
|
11034
|
+
"address",
|
|
11035
|
+
"port",
|
|
11036
|
+
"users"
|
|
11037
|
+
],
|
|
11038
|
+
"additionalProperties": false
|
|
11039
|
+
}
|
|
11040
|
+
}
|
|
11041
|
+
},
|
|
11042
|
+
"required": [
|
|
11043
|
+
"vnext"
|
|
11044
|
+
],
|
|
11045
|
+
"additionalProperties": false
|
|
11046
|
+
},
|
|
11047
|
+
"__schema812": {
|
|
11048
|
+
"type": "string"
|
|
11049
|
+
},
|
|
11050
|
+
"__schema813": {
|
|
11051
|
+
"type": "string",
|
|
11052
|
+
"enum": [
|
|
11053
|
+
"",
|
|
11054
|
+
"xtls-rprx-vision",
|
|
11055
|
+
"xtls-rprx-vision-udp443"
|
|
11056
|
+
]
|
|
11057
|
+
},
|
|
11058
|
+
"__schema814": {
|
|
11059
|
+
"default": 0,
|
|
11060
|
+
"type": "integer",
|
|
11061
|
+
"minimum": -9007199254740991,
|
|
11062
|
+
"maximum": 9007199254740991
|
|
11063
|
+
},
|
|
11064
|
+
"__schema815": {
|
|
10960
11065
|
"type": "object",
|
|
10961
11066
|
"properties": {
|
|
10962
11067
|
"sendThrough": {
|
|
@@ -10978,10 +11083,10 @@
|
|
|
10978
11083
|
"$ref": "#/definitions/__schema705"
|
|
10979
11084
|
},
|
|
10980
11085
|
"protocol": {
|
|
10981
|
-
"$ref": "#/definitions/
|
|
11086
|
+
"$ref": "#/definitions/__schema816"
|
|
10982
11087
|
},
|
|
10983
11088
|
"settings": {
|
|
10984
|
-
"$ref": "#/definitions/
|
|
11089
|
+
"$ref": "#/definitions/__schema817"
|
|
10985
11090
|
}
|
|
10986
11091
|
},
|
|
10987
11092
|
"required": [
|
|
@@ -10991,30 +11096,30 @@
|
|
|
10991
11096
|
"additionalProperties": false,
|
|
10992
11097
|
"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"
|
|
10993
11098
|
},
|
|
10994
|
-
"
|
|
11099
|
+
"__schema816": {
|
|
10995
11100
|
"type": "string",
|
|
10996
11101
|
"const": "vmess"
|
|
10997
11102
|
},
|
|
10998
|
-
"
|
|
11103
|
+
"__schema817": {
|
|
10999
11104
|
"type": "object",
|
|
11000
11105
|
"properties": {
|
|
11001
11106
|
"address": {
|
|
11002
|
-
"$ref": "#/definitions/
|
|
11107
|
+
"$ref": "#/definitions/__schema818"
|
|
11003
11108
|
},
|
|
11004
11109
|
"port": {
|
|
11005
|
-
"$ref": "#/definitions/
|
|
11110
|
+
"$ref": "#/definitions/__schema819"
|
|
11006
11111
|
},
|
|
11007
11112
|
"id": {
|
|
11008
|
-
"$ref": "#/definitions/
|
|
11113
|
+
"$ref": "#/definitions/__schema820"
|
|
11009
11114
|
},
|
|
11010
11115
|
"security": {
|
|
11011
|
-
"$ref": "#/definitions/
|
|
11116
|
+
"$ref": "#/definitions/__schema821"
|
|
11012
11117
|
},
|
|
11013
11118
|
"level": {
|
|
11014
|
-
"$ref": "#/definitions/
|
|
11119
|
+
"$ref": "#/definitions/__schema823"
|
|
11015
11120
|
},
|
|
11016
11121
|
"experiments": {
|
|
11017
|
-
"$ref": "#/definitions/
|
|
11122
|
+
"$ref": "#/definitions/__schema825"
|
|
11018
11123
|
}
|
|
11019
11124
|
},
|
|
11020
11125
|
"required": [
|
|
@@ -11025,11 +11130,11 @@
|
|
|
11025
11130
|
"additionalProperties": false,
|
|
11026
11131
|
"markdownDescription": "`OutboundConfigurationObject` corresponds to the `settings` item in [`OutboundObject`](https://xtls.github.io/en/config/outbound.html).\n"
|
|
11027
11132
|
},
|
|
11028
|
-
"
|
|
11133
|
+
"__schema818": {
|
|
11029
11134
|
"type": "string",
|
|
11030
11135
|
"markdownDescription": "Server address, supports IP address or domain name.\n"
|
|
11031
11136
|
},
|
|
11032
|
-
"
|
|
11137
|
+
"__schema819": {
|
|
11033
11138
|
"markdownDescription": "The port number the server is listening on. Required.\n",
|
|
11034
11139
|
"allOf": [
|
|
11035
11140
|
{
|
|
@@ -11037,19 +11142,19 @@
|
|
|
11037
11142
|
}
|
|
11038
11143
|
]
|
|
11039
11144
|
},
|
|
11040
|
-
"
|
|
11145
|
+
"__schema820": {
|
|
11041
11146
|
"type": "string",
|
|
11042
11147
|
"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"
|
|
11043
11148
|
},
|
|
11044
|
-
"
|
|
11149
|
+
"__schema821": {
|
|
11045
11150
|
"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",
|
|
11046
11151
|
"allOf": [
|
|
11047
11152
|
{
|
|
11048
|
-
"$ref": "#/definitions/
|
|
11153
|
+
"$ref": "#/definitions/__schema822"
|
|
11049
11154
|
}
|
|
11050
11155
|
]
|
|
11051
11156
|
},
|
|
11052
|
-
"
|
|
11157
|
+
"__schema822": {
|
|
11053
11158
|
"type": "string",
|
|
11054
11159
|
"enum": [
|
|
11055
11160
|
"aes-128-gcm",
|
|
@@ -11059,29 +11164,29 @@
|
|
|
11059
11164
|
"zero"
|
|
11060
11165
|
]
|
|
11061
11166
|
},
|
|
11062
|
-
"
|
|
11167
|
+
"__schema823": {
|
|
11063
11168
|
"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",
|
|
11064
11169
|
"allOf": [
|
|
11065
11170
|
{
|
|
11066
|
-
"$ref": "#/definitions/
|
|
11171
|
+
"$ref": "#/definitions/__schema824"
|
|
11067
11172
|
}
|
|
11068
11173
|
]
|
|
11069
11174
|
},
|
|
11070
|
-
"
|
|
11175
|
+
"__schema824": {
|
|
11071
11176
|
"default": 0,
|
|
11072
11177
|
"type": "integer",
|
|
11073
11178
|
"minimum": -9007199254740991,
|
|
11074
11179
|
"maximum": 9007199254740991
|
|
11075
11180
|
},
|
|
11076
|
-
"
|
|
11181
|
+
"__schema825": {
|
|
11077
11182
|
"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",
|
|
11078
11183
|
"allOf": [
|
|
11079
11184
|
{
|
|
11080
|
-
"$ref": "#/definitions/
|
|
11185
|
+
"$ref": "#/definitions/__schema826"
|
|
11081
11186
|
}
|
|
11082
11187
|
]
|
|
11083
11188
|
},
|
|
11084
|
-
"
|
|
11189
|
+
"__schema826": {
|
|
11085
11190
|
"type": "string",
|
|
11086
11191
|
"enum": [
|
|
11087
11192
|
"AuthenticatedLength",
|
|
@@ -11089,7 +11194,7 @@
|
|
|
11089
11194
|
"AuthenticatedLength|NoTerminationSignal"
|
|
11090
11195
|
]
|
|
11091
11196
|
},
|
|
11092
|
-
"
|
|
11197
|
+
"__schema827": {
|
|
11093
11198
|
"type": "object",
|
|
11094
11199
|
"properties": {
|
|
11095
11200
|
"sendThrough": {
|
|
@@ -11111,10 +11216,10 @@
|
|
|
11111
11216
|
"$ref": "#/definitions/__schema705"
|
|
11112
11217
|
},
|
|
11113
11218
|
"protocol": {
|
|
11114
|
-
"$ref": "#/definitions/
|
|
11219
|
+
"$ref": "#/definitions/__schema828"
|
|
11115
11220
|
},
|
|
11116
11221
|
"settings": {
|
|
11117
|
-
"$ref": "#/definitions/
|
|
11222
|
+
"$ref": "#/definitions/__schema829"
|
|
11118
11223
|
}
|
|
11119
11224
|
},
|
|
11120
11225
|
"required": [
|
|
@@ -11124,36 +11229,36 @@
|
|
|
11124
11229
|
"additionalProperties": false,
|
|
11125
11230
|
"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"
|
|
11126
11231
|
},
|
|
11127
|
-
"
|
|
11232
|
+
"__schema828": {
|
|
11128
11233
|
"type": "string",
|
|
11129
11234
|
"const": "wireguard"
|
|
11130
11235
|
},
|
|
11131
|
-
"
|
|
11236
|
+
"__schema829": {
|
|
11132
11237
|
"type": "object",
|
|
11133
11238
|
"properties": {
|
|
11134
11239
|
"secretKey": {
|
|
11135
|
-
"$ref": "#/definitions/
|
|
11240
|
+
"$ref": "#/definitions/__schema830"
|
|
11136
11241
|
},
|
|
11137
11242
|
"address": {
|
|
11138
|
-
"$ref": "#/definitions/
|
|
11243
|
+
"$ref": "#/definitions/__schema831"
|
|
11139
11244
|
},
|
|
11140
11245
|
"peers": {
|
|
11141
|
-
"$ref": "#/definitions/
|
|
11246
|
+
"$ref": "#/definitions/__schema833"
|
|
11142
11247
|
},
|
|
11143
11248
|
"noKernelTun": {
|
|
11144
|
-
"$ref": "#/definitions/
|
|
11249
|
+
"$ref": "#/definitions/__schema838"
|
|
11145
11250
|
},
|
|
11146
11251
|
"mtu": {
|
|
11147
|
-
"$ref": "#/definitions/
|
|
11252
|
+
"$ref": "#/definitions/__schema840"
|
|
11148
11253
|
},
|
|
11149
11254
|
"reserved": {
|
|
11150
|
-
"$ref": "#/definitions/
|
|
11255
|
+
"$ref": "#/definitions/__schema842"
|
|
11151
11256
|
},
|
|
11152
11257
|
"workers": {
|
|
11153
|
-
"$ref": "#/definitions/
|
|
11258
|
+
"$ref": "#/definitions/__schema844"
|
|
11154
11259
|
},
|
|
11155
11260
|
"domainStrategy": {
|
|
11156
|
-
"$ref": "#/definitions/
|
|
11261
|
+
"$ref": "#/definitions/__schema846"
|
|
11157
11262
|
}
|
|
11158
11263
|
},
|
|
11159
11264
|
"required": [
|
|
@@ -11165,30 +11270,30 @@
|
|
|
11165
11270
|
"additionalProperties": false,
|
|
11166
11271
|
"markdownDescription": "`OutboundConfigurationObject` corresponds to the `settings` item in [`OutboundObject`](https://xtls.github.io/en/config/outbound.html).\n"
|
|
11167
11272
|
},
|
|
11168
|
-
"
|
|
11273
|
+
"__schema830": {
|
|
11169
11274
|
"type": "string",
|
|
11170
11275
|
"markdownDescription": "User private key. Required.\n"
|
|
11171
11276
|
},
|
|
11172
|
-
"
|
|
11277
|
+
"__schema831": {
|
|
11173
11278
|
"minItems": 1,
|
|
11174
11279
|
"type": "array",
|
|
11175
11280
|
"items": {
|
|
11176
|
-
"$ref": "#/definitions/
|
|
11281
|
+
"$ref": "#/definitions/__schema832"
|
|
11177
11282
|
},
|
|
11178
11283
|
"markdownDescription": "Wireguard will start a virtual network interface (tun) locally. Use one or more IP addresses; IPv6 is supported.\n"
|
|
11179
11284
|
},
|
|
11180
|
-
"
|
|
11285
|
+
"__schema832": {
|
|
11181
11286
|
"type": "string"
|
|
11182
11287
|
},
|
|
11183
|
-
"
|
|
11288
|
+
"__schema833": {
|
|
11184
11289
|
"minItems": 1,
|
|
11185
11290
|
"type": "array",
|
|
11186
11291
|
"items": {
|
|
11187
|
-
"$ref": "#/definitions/
|
|
11292
|
+
"$ref": "#/definitions/__schema834"
|
|
11188
11293
|
},
|
|
11189
11294
|
"markdownDescription": "List of Wireguard servers, where each item is a server configuration.\n"
|
|
11190
11295
|
},
|
|
11191
|
-
"
|
|
11296
|
+
"__schema834": {
|
|
11192
11297
|
"type": "object",
|
|
11193
11298
|
"properties": {
|
|
11194
11299
|
"endpoint": {
|
|
@@ -11203,7 +11308,7 @@
|
|
|
11203
11308
|
"markdownDescription": "Additional symmetric encryption key.\n",
|
|
11204
11309
|
"allOf": [
|
|
11205
11310
|
{
|
|
11206
|
-
"$ref": "#/definitions/
|
|
11311
|
+
"$ref": "#/definitions/__schema835"
|
|
11207
11312
|
}
|
|
11208
11313
|
]
|
|
11209
11314
|
},
|
|
@@ -11211,7 +11316,7 @@
|
|
|
11211
11316
|
"markdownDescription": "Heartbeat interval in seconds. Default is 0, meaning no heartbeat.\n",
|
|
11212
11317
|
"allOf": [
|
|
11213
11318
|
{
|
|
11214
|
-
"$ref": "#/definitions/
|
|
11319
|
+
"$ref": "#/definitions/__schema836"
|
|
11215
11320
|
}
|
|
11216
11321
|
]
|
|
11217
11322
|
},
|
|
@@ -11219,7 +11324,7 @@
|
|
|
11219
11324
|
"markdownDescription": "Wireguard only allows traffic from specific source IPs.\n",
|
|
11220
11325
|
"allOf": [
|
|
11221
11326
|
{
|
|
11222
|
-
"$ref": "#/definitions/
|
|
11327
|
+
"$ref": "#/definitions/__schema837"
|
|
11223
11328
|
}
|
|
11224
11329
|
]
|
|
11225
11330
|
}
|
|
@@ -11230,16 +11335,16 @@
|
|
|
11230
11335
|
],
|
|
11231
11336
|
"additionalProperties": false
|
|
11232
11337
|
},
|
|
11233
|
-
"
|
|
11338
|
+
"__schema835": {
|
|
11234
11339
|
"type": "string"
|
|
11235
11340
|
},
|
|
11236
|
-
"
|
|
11341
|
+
"__schema836": {
|
|
11237
11342
|
"default": 0,
|
|
11238
11343
|
"type": "integer",
|
|
11239
11344
|
"minimum": -9007199254740991,
|
|
11240
11345
|
"maximum": 9007199254740991
|
|
11241
11346
|
},
|
|
11242
|
-
"
|
|
11347
|
+
"__schema837": {
|
|
11243
11348
|
"default": [
|
|
11244
11349
|
"0.0.0.0/0",
|
|
11245
11350
|
"::/0"
|
|
@@ -11249,41 +11354,41 @@
|
|
|
11249
11354
|
"type": "string"
|
|
11250
11355
|
}
|
|
11251
11356
|
},
|
|
11252
|
-
"
|
|
11357
|
+
"__schema838": {
|
|
11253
11358
|
"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",
|
|
11254
11359
|
"allOf": [
|
|
11255
11360
|
{
|
|
11256
|
-
"$ref": "#/definitions/
|
|
11361
|
+
"$ref": "#/definitions/__schema839"
|
|
11257
11362
|
}
|
|
11258
11363
|
]
|
|
11259
11364
|
},
|
|
11260
|
-
"
|
|
11365
|
+
"__schema839": {
|
|
11261
11366
|
"default": false,
|
|
11262
11367
|
"type": "boolean"
|
|
11263
11368
|
},
|
|
11264
|
-
"
|
|
11369
|
+
"__schema840": {
|
|
11265
11370
|
"default": 1420,
|
|
11266
11371
|
"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",
|
|
11267
11372
|
"allOf": [
|
|
11268
11373
|
{
|
|
11269
|
-
"$ref": "#/definitions/
|
|
11374
|
+
"$ref": "#/definitions/__schema841"
|
|
11270
11375
|
}
|
|
11271
11376
|
]
|
|
11272
11377
|
},
|
|
11273
|
-
"
|
|
11378
|
+
"__schema841": {
|
|
11274
11379
|
"type": "integer",
|
|
11275
11380
|
"minimum": -9007199254740991,
|
|
11276
11381
|
"maximum": 9007199254740991
|
|
11277
11382
|
},
|
|
11278
|
-
"
|
|
11383
|
+
"__schema842": {
|
|
11279
11384
|
"markdownDescription": "Wireguard reserved bytes, fill as needed.\n",
|
|
11280
11385
|
"allOf": [
|
|
11281
11386
|
{
|
|
11282
|
-
"$ref": "#/definitions/
|
|
11387
|
+
"$ref": "#/definitions/__schema843"
|
|
11283
11388
|
}
|
|
11284
11389
|
]
|
|
11285
11390
|
},
|
|
11286
|
-
"
|
|
11391
|
+
"__schema843": {
|
|
11287
11392
|
"default": [],
|
|
11288
11393
|
"type": "array",
|
|
11289
11394
|
"items": {
|
|
@@ -11292,28 +11397,28 @@
|
|
|
11292
11397
|
"maximum": 9007199254740991
|
|
11293
11398
|
}
|
|
11294
11399
|
},
|
|
11295
|
-
"
|
|
11400
|
+
"__schema844": {
|
|
11296
11401
|
"markdownDescription": "Number of threads used by Wireguard. Defaults to the number of system cores.\n",
|
|
11297
11402
|
"allOf": [
|
|
11298
11403
|
{
|
|
11299
|
-
"$ref": "#/definitions/
|
|
11404
|
+
"$ref": "#/definitions/__schema845"
|
|
11300
11405
|
}
|
|
11301
11406
|
]
|
|
11302
11407
|
},
|
|
11303
|
-
"
|
|
11408
|
+
"__schema845": {
|
|
11304
11409
|
"type": "integer",
|
|
11305
11410
|
"minimum": -9007199254740991,
|
|
11306
11411
|
"maximum": 9007199254740991
|
|
11307
11412
|
},
|
|
11308
|
-
"
|
|
11413
|
+
"__schema846": {
|
|
11309
11414
|
"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",
|
|
11310
11415
|
"allOf": [
|
|
11311
11416
|
{
|
|
11312
|
-
"$ref": "#/definitions/
|
|
11417
|
+
"$ref": "#/definitions/__schema847"
|
|
11313
11418
|
}
|
|
11314
11419
|
]
|
|
11315
11420
|
},
|
|
11316
|
-
"
|
|
11421
|
+
"__schema847": {
|
|
11317
11422
|
"default": "ForceIP",
|
|
11318
11423
|
"type": "string",
|
|
11319
11424
|
"enum": [
|