xray-typed 1.0.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.
- package/README.md +0 -0
- package/dist/config/api.d.ts +15 -0
- package/dist/config/api.d.ts.map +1 -0
- package/dist/config/api.js +3 -0
- package/dist/config/api.js.map +1 -0
- package/dist/config/dns.d.ts +65 -0
- package/dist/config/dns.d.ts.map +1 -0
- package/dist/config/dns.js +3 -0
- package/dist/config/dns.js.map +1 -0
- package/dist/config/fakedns.d.ts +13 -0
- package/dist/config/fakedns.d.ts.map +1 -0
- package/dist/config/fakedns.js +3 -0
- package/dist/config/fakedns.js.map +1 -0
- package/dist/config/inbound.d.ts +36 -0
- package/dist/config/inbound.d.ts.map +1 -0
- package/dist/config/inbound.js +3 -0
- package/dist/config/inbound.js.map +1 -0
- package/dist/config/index.d.ts +15 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +31 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/log.d.ts +20 -0
- package/dist/config/log.d.ts.map +1 -0
- package/dist/config/log.js +3 -0
- package/dist/config/log.js.map +1 -0
- package/dist/config/metrics.d.ts +12 -0
- package/dist/config/metrics.d.ts.map +1 -0
- package/dist/config/metrics.js +3 -0
- package/dist/config/metrics.js.map +1 -0
- package/dist/config/mux.d.ts +17 -0
- package/dist/config/mux.d.ts.map +1 -0
- package/dist/config/mux.js +3 -0
- package/dist/config/mux.js.map +1 -0
- package/dist/config/observatory.d.ts +34 -0
- package/dist/config/observatory.d.ts.map +1 -0
- package/dist/config/observatory.js +3 -0
- package/dist/config/observatory.js.map +1 -0
- package/dist/config/outbound.d.ts +48 -0
- package/dist/config/outbound.d.ts.map +1 -0
- package/dist/config/outbound.js +3 -0
- package/dist/config/outbound.js.map +1 -0
- package/dist/config/policy.d.ts +40 -0
- package/dist/config/policy.d.ts.map +1 -0
- package/dist/config/policy.js +3 -0
- package/dist/config/policy.js.map +1 -0
- package/dist/config/reverse.d.ts +24 -0
- package/dist/config/reverse.d.ts.map +1 -0
- package/dist/config/reverse.js +3 -0
- package/dist/config/reverse.js.map +1 -0
- package/dist/config/routing.d.ts +84 -0
- package/dist/config/routing.d.ts.map +1 -0
- package/dist/config/routing.js +3 -0
- package/dist/config/routing.js.map +1 -0
- package/dist/config/sniffing.d.ts +19 -0
- package/dist/config/sniffing.d.ts.map +1 -0
- package/dist/config/sniffing.js +3 -0
- package/dist/config/sniffing.js.map +1 -0
- package/dist/config/stats.d.ts +9 -0
- package/dist/config/stats.d.ts.map +1 -0
- package/dist/config/stats.js +3 -0
- package/dist/config/stats.js.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/proxies/blackhole.d.ts +15 -0
- package/dist/proxies/blackhole.d.ts.map +1 -0
- package/dist/proxies/blackhole.js +3 -0
- package/dist/proxies/blackhole.js.map +1 -0
- package/dist/proxies/dns.d.ts +22 -0
- package/dist/proxies/dns.d.ts.map +1 -0
- package/dist/proxies/dns.js +3 -0
- package/dist/proxies/dns.js.map +1 -0
- package/dist/proxies/dokodemo.d.ts +20 -0
- package/dist/proxies/dokodemo.d.ts.map +1 -0
- package/dist/proxies/dokodemo.js +3 -0
- package/dist/proxies/dokodemo.js.map +1 -0
- package/dist/proxies/freedom.d.ts +47 -0
- package/dist/proxies/freedom.d.ts.map +1 -0
- package/dist/proxies/freedom.js +3 -0
- package/dist/proxies/freedom.js.map +1 -0
- package/dist/proxies/http.d.ts +57 -0
- package/dist/proxies/http.d.ts.map +1 -0
- package/dist/proxies/http.js +9 -0
- package/dist/proxies/http.js.map +1 -0
- package/dist/proxies/index.d.ts +13 -0
- package/dist/proxies/index.d.ts.map +1 -0
- package/dist/proxies/index.js +29 -0
- package/dist/proxies/index.js.map +1 -0
- package/dist/proxies/loopback.d.ts +11 -0
- package/dist/proxies/loopback.d.ts.map +1 -0
- package/dist/proxies/loopback.js +3 -0
- package/dist/proxies/loopback.js.map +1 -0
- package/dist/proxies/shadowsocks.d.ts +74 -0
- package/dist/proxies/shadowsocks.d.ts.map +1 -0
- package/dist/proxies/shadowsocks.js +9 -0
- package/dist/proxies/shadowsocks.js.map +1 -0
- package/dist/proxies/socks.d.ts +60 -0
- package/dist/proxies/socks.d.ts.map +1 -0
- package/dist/proxies/socks.js +9 -0
- package/dist/proxies/socks.js.map +1 -0
- package/dist/proxies/trojan.d.ts +67 -0
- package/dist/proxies/trojan.d.ts.map +1 -0
- package/dist/proxies/trojan.js +9 -0
- package/dist/proxies/trojan.js.map +1 -0
- package/dist/proxies/vless.d.ts +96 -0
- package/dist/proxies/vless.d.ts.map +1 -0
- package/dist/proxies/vless.js +9 -0
- package/dist/proxies/vless.js.map +1 -0
- package/dist/proxies/vmess.d.ts +68 -0
- package/dist/proxies/vmess.d.ts.map +1 -0
- package/dist/proxies/vmess.js +9 -0
- package/dist/proxies/vmess.js.map +1 -0
- package/dist/proxies/wireguard.d.ts +36 -0
- package/dist/proxies/wireguard.d.ts.map +1 -0
- package/dist/proxies/wireguard.js +3 -0
- package/dist/proxies/wireguard.js.map +1 -0
- package/dist/transport/common.d.ts +25 -0
- package/dist/transport/common.d.ts.map +1 -0
- package/dist/transport/common.js +6 -0
- package/dist/transport/common.js.map +1 -0
- package/dist/transport/finalmask.d.ts +79 -0
- package/dist/transport/finalmask.d.ts.map +1 -0
- package/dist/transport/finalmask.js +3 -0
- package/dist/transport/finalmask.js.map +1 -0
- package/dist/transport/grpc.d.ts +24 -0
- package/dist/transport/grpc.d.ts.map +1 -0
- package/dist/transport/grpc.js +3 -0
- package/dist/transport/grpc.js.map +1 -0
- package/dist/transport/http.d.ts +21 -0
- package/dist/transport/http.d.ts.map +1 -0
- package/dist/transport/http.js +3 -0
- package/dist/transport/http.js.map +1 -0
- package/dist/transport/httpupgrade.d.ts +16 -0
- package/dist/transport/httpupgrade.d.ts.map +1 -0
- package/dist/transport/httpupgrade.js +3 -0
- package/dist/transport/httpupgrade.js.map +1 -0
- package/dist/transport/hysteria.d.ts +45 -0
- package/dist/transport/hysteria.d.ts.map +1 -0
- package/dist/transport/hysteria.js +3 -0
- package/dist/transport/hysteria.js.map +1 -0
- package/dist/transport/index.d.ts +16 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +30 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/kcp.d.ts +31 -0
- package/dist/transport/kcp.d.ts.map +1 -0
- package/dist/transport/kcp.js +3 -0
- package/dist/transport/kcp.js.map +1 -0
- package/dist/transport/quic.d.ts +20 -0
- package/dist/transport/quic.d.ts.map +1 -0
- package/dist/transport/quic.js +3 -0
- package/dist/transport/quic.js.map +1 -0
- package/dist/transport/reality.d.ts +60 -0
- package/dist/transport/reality.d.ts.map +1 -0
- package/dist/transport/reality.js +3 -0
- package/dist/transport/reality.js.map +1 -0
- package/dist/transport/sockopt.d.ts +74 -0
- package/dist/transport/sockopt.d.ts.map +1 -0
- package/dist/transport/sockopt.js +3 -0
- package/dist/transport/sockopt.js.map +1 -0
- package/dist/transport/splithttp.d.ts +81 -0
- package/dist/transport/splithttp.d.ts.map +1 -0
- package/dist/transport/splithttp.js +3 -0
- package/dist/transport/splithttp.js.map +1 -0
- package/dist/transport/stream.d.ts +57 -0
- package/dist/transport/stream.d.ts.map +1 -0
- package/dist/transport/stream.js +3 -0
- package/dist/transport/stream.js.map +1 -0
- package/dist/transport/tcp.d.ts +42 -0
- package/dist/transport/tcp.d.ts.map +1 -0
- package/dist/transport/tcp.js +3 -0
- package/dist/transport/tcp.js.map +1 -0
- package/dist/transport/tls.d.ts +69 -0
- package/dist/transport/tls.d.ts.map +1 -0
- package/dist/transport/tls.js +3 -0
- package/dist/transport/tls.js.map +1 -0
- package/dist/transport/websocket.d.ts +18 -0
- package/dist/transport/websocket.d.ts.map +1 -0
- package/dist/transport/websocket.js +3 -0
- package/dist/transport/websocket.js.map +1 -0
- package/dist/xray-config.d.ts +76 -0
- package/dist/xray-config.d.ts.map +1 -0
- package/dist/xray-config.js +3 -0
- package/dist/xray-config.js.map +1 -0
- package/package.json +30 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from './common';
|
|
2
|
+
export * from './tcp';
|
|
3
|
+
export * from './kcp';
|
|
4
|
+
export * from './websocket';
|
|
5
|
+
export * from './http';
|
|
6
|
+
export * from './grpc';
|
|
7
|
+
export * from './quic';
|
|
8
|
+
export * from './httpupgrade';
|
|
9
|
+
export { SplitHTTPConfig, XmuxConfig, SplitHTTPMode } from './splithttp';
|
|
10
|
+
export { HysteriaConfig, MasqueradeConfig, MasqueradeType } from './hysteria';
|
|
11
|
+
export * from './tls';
|
|
12
|
+
export * from './reality';
|
|
13
|
+
export * from './sockopt';
|
|
14
|
+
export * from './finalmask';
|
|
15
|
+
export * from './stream';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC9E,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./common"), exports);
|
|
18
|
+
__exportStar(require("./tcp"), exports);
|
|
19
|
+
__exportStar(require("./kcp"), exports);
|
|
20
|
+
__exportStar(require("./websocket"), exports);
|
|
21
|
+
__exportStar(require("./http"), exports);
|
|
22
|
+
__exportStar(require("./grpc"), exports);
|
|
23
|
+
__exportStar(require("./quic"), exports);
|
|
24
|
+
__exportStar(require("./httpupgrade"), exports);
|
|
25
|
+
__exportStar(require("./tls"), exports);
|
|
26
|
+
__exportStar(require("./reality"), exports);
|
|
27
|
+
__exportStar(require("./sockopt"), exports);
|
|
28
|
+
__exportStar(require("./finalmask"), exports);
|
|
29
|
+
__exportStar(require("./stream"), exports);
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,wCAAsB;AACtB,wCAAsB;AACtB,8CAA4B;AAC5B,yCAAuB;AACvB,yCAAuB;AACvB,yCAAuB;AACvB,gDAA8B;AAG9B,wCAAsB;AACtB,4CAA0B;AAC1B,4CAA0B;AAC1B,8CAA4B;AAC5B,2CAAyB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { HeaderType } from './common';
|
|
2
|
+
/**
|
|
3
|
+
* mKCP transport configuration.
|
|
4
|
+
*
|
|
5
|
+
* @see https://xtls.github.io/en/config/transports/mkcp.html
|
|
6
|
+
*/
|
|
7
|
+
export interface KCPConfig {
|
|
8
|
+
/** Maximum Transmission Unit (576–1460, default: 1350). */
|
|
9
|
+
mtu?: number;
|
|
10
|
+
/** Transmission Time Interval in ms (10–100, default: 50). */
|
|
11
|
+
tti?: number;
|
|
12
|
+
/** Uplink capacity in MB/s (default: 5). */
|
|
13
|
+
uplinkCapacity?: number;
|
|
14
|
+
/** Downlink capacity in MB/s (default: 20). */
|
|
15
|
+
downlinkCapacity?: number;
|
|
16
|
+
/** Enable congestion control (default: false). */
|
|
17
|
+
congestion?: boolean;
|
|
18
|
+
/** Read buffer size in MB (default: 2). */
|
|
19
|
+
readBufferSize?: number;
|
|
20
|
+
/** Write buffer size in MB (default: 2). */
|
|
21
|
+
writeBufferSize?: number;
|
|
22
|
+
/** Header obfuscation. */
|
|
23
|
+
header?: KCPHeader;
|
|
24
|
+
/** Encryption seed string. */
|
|
25
|
+
seed?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface KCPHeader {
|
|
28
|
+
/** Header obfuscation type. */
|
|
29
|
+
type?: HeaderType;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=kcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kcp.d.ts","sourceRoot":"","sources":["../../src/transport/kcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACtB,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kDAAkD;IAClD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACtB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,UAAU,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kcp.js","sourceRoot":"","sources":["../../src/transport/kcp.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { HeaderType } from './common';
|
|
2
|
+
/**
|
|
3
|
+
* QUIC transport configuration.
|
|
4
|
+
*
|
|
5
|
+
* @see https://xtls.github.io/en/config/transports/quic.html
|
|
6
|
+
*/
|
|
7
|
+
export interface QUICConfig {
|
|
8
|
+
/** Encryption method for QUIC payload. */
|
|
9
|
+
security?: QUICSecurity;
|
|
10
|
+
/** Encryption key. */
|
|
11
|
+
key?: string;
|
|
12
|
+
/** Header obfuscation. */
|
|
13
|
+
header?: QUICHeader;
|
|
14
|
+
}
|
|
15
|
+
export interface QUICHeader {
|
|
16
|
+
/** Header obfuscation type. */
|
|
17
|
+
type?: HeaderType;
|
|
18
|
+
}
|
|
19
|
+
export type QUICSecurity = 'none' | 'aes-128-gcm' | 'chacha20-poly1305';
|
|
20
|
+
//# sourceMappingURL=quic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quic.d.ts","sourceRoot":"","sources":["../../src/transport/quic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACvB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,sBAAsB;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,MAAM,CAAC,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACvB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,aAAa,GAAG,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quic.js","sourceRoot":"","sources":["../../src/transport/quic.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* REALITY configuration for Xray-Core.
|
|
3
|
+
*
|
|
4
|
+
* @see https://xtls.github.io/en/config/transport.html#realityobject
|
|
5
|
+
*/
|
|
6
|
+
export interface REALITYConfig {
|
|
7
|
+
/** Show debug info in logs. */
|
|
8
|
+
show?: boolean;
|
|
9
|
+
/** Target destination for REALITY (e.g. "example.com:443"). */
|
|
10
|
+
target?: string | number;
|
|
11
|
+
/** Alias for target (legacy). */
|
|
12
|
+
dest?: string | number;
|
|
13
|
+
/** Destination type. */
|
|
14
|
+
type?: string;
|
|
15
|
+
/** PROXY protocol version to send to target (0 = disabled, 1 or 2). */
|
|
16
|
+
xver?: number;
|
|
17
|
+
/** Server names (SNI) allowed for this REALITY server. */
|
|
18
|
+
serverNames?: string[];
|
|
19
|
+
/** X25519 private key (base64, server-side). */
|
|
20
|
+
privateKey?: string;
|
|
21
|
+
/** Minimum client version allowed. */
|
|
22
|
+
minClientVer?: string;
|
|
23
|
+
/** Maximum client version allowed. */
|
|
24
|
+
maxClientVer?: string;
|
|
25
|
+
/** Maximum time difference in ms allowed. */
|
|
26
|
+
maxTimeDiff?: number;
|
|
27
|
+
/** Short IDs for client authentication (hex strings, 0-16 chars). */
|
|
28
|
+
shortIds?: string[];
|
|
29
|
+
/** ML-DSA-65 seed for post-quantum key exchange (server-side). */
|
|
30
|
+
mldsa65Seed?: string;
|
|
31
|
+
/** Rate-limit fallback upload config. */
|
|
32
|
+
limitFallbackUpload?: LimitFallbackConfig;
|
|
33
|
+
/** Rate-limit fallback download config. */
|
|
34
|
+
limitFallbackDownload?: LimitFallbackConfig;
|
|
35
|
+
/** uTLS fingerprint (required on client side). */
|
|
36
|
+
fingerprint?: string;
|
|
37
|
+
/** Server name (SNI) to use. Must be one of server's serverNames. */
|
|
38
|
+
serverName?: string;
|
|
39
|
+
/** Password for authentication. */
|
|
40
|
+
password?: string;
|
|
41
|
+
/** X25519 public key (base64, client-side). */
|
|
42
|
+
publicKey?: string;
|
|
43
|
+
/** Short ID to use (must be one of server's shortIds). */
|
|
44
|
+
shortId?: string;
|
|
45
|
+
/** ML-DSA-65 verification key (base64, client-side). */
|
|
46
|
+
mldsa65Verify?: string;
|
|
47
|
+
/** Spider path for camouflage browsing. */
|
|
48
|
+
spiderX?: string;
|
|
49
|
+
/** Path to write TLS master key log (for debugging). */
|
|
50
|
+
masterKeyLog?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface LimitFallbackConfig {
|
|
53
|
+
/** Start rate-limiting after this many bytes. */
|
|
54
|
+
afterBytes?: number;
|
|
55
|
+
/** Rate limit in bytes per second. */
|
|
56
|
+
bytesPerSec?: number;
|
|
57
|
+
/** Burst rate in bytes per second. */
|
|
58
|
+
burstBytesPerSec?: number;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=reality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reality.d.ts","sourceRoot":"","sources":["../../src/transport/reality.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC1B,+BAA+B;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;IAIf,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,mBAAmB,CAAC;IAI5C,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAChC,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reality.js","sourceRoot":"","sources":["../../src/transport/reality.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Socket options (sockopt) configuration for Xray-Core.
|
|
3
|
+
*
|
|
4
|
+
* @see https://xtls.github.io/en/config/transport.html#sockoptobject
|
|
5
|
+
*/
|
|
6
|
+
export interface SocketConfig {
|
|
7
|
+
/** SO_MARK value for outbound connections (Linux only). */
|
|
8
|
+
mark?: number;
|
|
9
|
+
/** Enable TCP Fast Open. true/false or integer queue length. */
|
|
10
|
+
tcpFastOpen?: boolean | number;
|
|
11
|
+
/** Transparent proxy mode (Linux only). */
|
|
12
|
+
tproxy?: TProxyMode;
|
|
13
|
+
/** Accept PROXY protocol on inbound connections. */
|
|
14
|
+
acceptProxyProtocol?: boolean;
|
|
15
|
+
/** Domain resolution strategy for this connection. */
|
|
16
|
+
domainStrategy?: SockoptDomainStrategy;
|
|
17
|
+
/** Tag of another outbound to use as dialer proxy. */
|
|
18
|
+
dialerProxy?: string;
|
|
19
|
+
/** TCP keep-alive probe interval in seconds. */
|
|
20
|
+
tcpKeepAliveInterval?: number;
|
|
21
|
+
/** TCP keep-alive idle time before first probe in seconds. */
|
|
22
|
+
tcpKeepAliveIdle?: number;
|
|
23
|
+
/** TCP congestion control algorithm (e.g. "bbr", "cubic"). */
|
|
24
|
+
tcpCongestion?: string;
|
|
25
|
+
/** TCP window clamp value. */
|
|
26
|
+
tcpWindowClamp?: number;
|
|
27
|
+
/** TCP maximum segment size. */
|
|
28
|
+
tcpMaxSeg?: number;
|
|
29
|
+
/** Enable NAT penetration mode. */
|
|
30
|
+
penetrate?: boolean;
|
|
31
|
+
/** TCP user timeout in milliseconds. */
|
|
32
|
+
tcpUserTimeout?: number;
|
|
33
|
+
/** Restrict to IPv6 only. */
|
|
34
|
+
v6only?: boolean;
|
|
35
|
+
/** Bind to specific network interface. */
|
|
36
|
+
interface?: string;
|
|
37
|
+
/** Enable Multipath TCP (MPTCP). */
|
|
38
|
+
tcpMptcp?: boolean;
|
|
39
|
+
/** Custom socket options (advanced). */
|
|
40
|
+
customSockopt?: CustomSockoptConfig[];
|
|
41
|
+
/** Address and port binding strategy. */
|
|
42
|
+
addressPortStrategy?: string;
|
|
43
|
+
/** Happy Eyeballs (RFC 8305) settings. */
|
|
44
|
+
happyEyeballs?: HappyEyeballsConfig;
|
|
45
|
+
/** Trusted X-Forwarded-For IP addresses. */
|
|
46
|
+
trustedXForwardedFor?: string[];
|
|
47
|
+
}
|
|
48
|
+
export interface CustomSockoptConfig {
|
|
49
|
+
/** System/OS type (e.g. "linux"). */
|
|
50
|
+
system?: string;
|
|
51
|
+
/** Network type (e.g. "tcp", "udp"). */
|
|
52
|
+
network?: string;
|
|
53
|
+
/** Socket option level (e.g. "SOL_SOCKET", "IPPROTO_TCP"). */
|
|
54
|
+
level?: string;
|
|
55
|
+
/** Socket option name (e.g. "SO_REUSEADDR"). */
|
|
56
|
+
opt?: string;
|
|
57
|
+
/** Socket option value. */
|
|
58
|
+
value?: string;
|
|
59
|
+
/** Value type (e.g. "int", "str"). */
|
|
60
|
+
type?: string;
|
|
61
|
+
}
|
|
62
|
+
export interface HappyEyeballsConfig {
|
|
63
|
+
/** Prefer IPv6 over IPv4. */
|
|
64
|
+
prioritizeIPv6?: boolean;
|
|
65
|
+
/** Delay in ms before trying next address family. */
|
|
66
|
+
tryDelayMs?: number;
|
|
67
|
+
/** Interleave factor for address sorting. */
|
|
68
|
+
interleave?: number;
|
|
69
|
+
/** Maximum concurrent connection attempts. */
|
|
70
|
+
maxConcurrentTry?: number;
|
|
71
|
+
}
|
|
72
|
+
export type TProxyMode = 'off' | 'redirect' | 'tproxy';
|
|
73
|
+
export type SockoptDomainStrategy = 'AsIs' | 'UseIP' | 'UseIPv4' | 'UseIPv6' | 'UseIPv4v6' | 'UseIPv6v4' | 'ForceIP' | 'ForceIPv4' | 'ForceIPv6' | 'ForceIPv4v6' | 'ForceIPv6v4';
|
|
74
|
+
//# sourceMappingURL=sockopt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sockopt.d.ts","sourceRoot":"","sources":["../../src/transport/sockopt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,YAAY;IACzB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,2CAA2C;IAC3C,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,oDAAoD;IACpD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sDAAsD;IACtD,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wCAAwC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,aAAa,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACtC,yCAAyC;IACzC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0CAA0C;IAC1C,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,4CAA4C;IAC5C,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAChC,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAChC,6BAA6B;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEvD,MAAM,MAAM,qBAAqB,GAC3B,MAAM,GACN,OAAO,GACP,SAAS,GACT,SAAS,GACT,WAAW,GACX,WAAW,GACX,SAAS,GACT,WAAW,GACX,WAAW,GACX,aAAa,GACb,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sockopt.js","sourceRoot":"","sources":["../../src/transport/sockopt.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Int32Range } from './common';
|
|
2
|
+
import type { StreamSettingsConfig } from './stream';
|
|
3
|
+
/**
|
|
4
|
+
* SplitHTTP / XHTTP transport configuration.
|
|
5
|
+
*
|
|
6
|
+
* @see https://xtls.github.io/en/config/transports/splithttp.html
|
|
7
|
+
*/
|
|
8
|
+
export interface SplitHTTPConfig {
|
|
9
|
+
/** Host header value. */
|
|
10
|
+
host?: string;
|
|
11
|
+
/** HTTP path (default: "/"). */
|
|
12
|
+
path?: string;
|
|
13
|
+
/** Operation mode. */
|
|
14
|
+
mode?: SplitHTTPMode;
|
|
15
|
+
/** Custom HTTP headers. */
|
|
16
|
+
headers?: Record<string, string>;
|
|
17
|
+
/** Padding bytes range for obfuscation (e.g. "100-1000"). */
|
|
18
|
+
xPaddingBytes?: Int32Range;
|
|
19
|
+
/** Enable obfuscation mode for padding. */
|
|
20
|
+
xPaddingObfsMode?: boolean;
|
|
21
|
+
/** Key for padding obfuscation. */
|
|
22
|
+
xPaddingKey?: string;
|
|
23
|
+
/** Header name for padding. */
|
|
24
|
+
xPaddingHeader?: string;
|
|
25
|
+
/** Placement of padding data. */
|
|
26
|
+
xPaddingPlacement?: string;
|
|
27
|
+
/** HTTP method for padding. */
|
|
28
|
+
xPaddingMethod?: string;
|
|
29
|
+
/** HTTP method for uplink data (default: "POST"). */
|
|
30
|
+
uplinkHTTPMethod?: string;
|
|
31
|
+
/** Session placement strategy. */
|
|
32
|
+
sessionPlacement?: string;
|
|
33
|
+
/** Key for session placement. */
|
|
34
|
+
sessionKey?: string;
|
|
35
|
+
/** Sequence number placement strategy. */
|
|
36
|
+
seqPlacement?: string;
|
|
37
|
+
/** Key for sequence number placement. */
|
|
38
|
+
seqKey?: string;
|
|
39
|
+
/** Uplink data placement strategy. */
|
|
40
|
+
uplinkDataPlacement?: string;
|
|
41
|
+
/** Key for uplink data placement. */
|
|
42
|
+
uplinkDataKey?: string;
|
|
43
|
+
/** Uplink chunk size range (e.g. "10000-50000"). */
|
|
44
|
+
uplinkChunkSize?: Int32Range;
|
|
45
|
+
/** Disable gRPC-style content-type header. */
|
|
46
|
+
noGRPCHeader?: boolean;
|
|
47
|
+
/** Disable SSE content-type header. */
|
|
48
|
+
noSSEHeader?: boolean;
|
|
49
|
+
/** Maximum bytes per POST request (e.g. "1000000-2000000"). */
|
|
50
|
+
scMaxEachPostBytes?: Int32Range;
|
|
51
|
+
/** Minimum interval between POST requests in ms (e.g. "10-50"). */
|
|
52
|
+
scMinPostsIntervalMs?: Int32Range;
|
|
53
|
+
/** Maximum number of buffered POST requests. */
|
|
54
|
+
scMaxBufferedPosts?: number;
|
|
55
|
+
/** Server-side stream-up duration range in seconds (e.g. "10-30"). */
|
|
56
|
+
scStreamUpServerSecs?: Int32Range;
|
|
57
|
+
/** Maximum header bytes for the server to accept. */
|
|
58
|
+
serverMaxHeaderBytes?: number;
|
|
59
|
+
/** Connection multiplexing configuration. */
|
|
60
|
+
xmux?: XmuxConfig;
|
|
61
|
+
/** Download stream settings (for separate download connection). */
|
|
62
|
+
downloadSettings?: StreamSettingsConfig;
|
|
63
|
+
/** Extra settings as raw JSON. */
|
|
64
|
+
extra?: Record<string, unknown>;
|
|
65
|
+
}
|
|
66
|
+
export interface XmuxConfig {
|
|
67
|
+
/** Maximum concurrent streams per connection (e.g. "8-16"). */
|
|
68
|
+
maxConcurrency?: Int32Range;
|
|
69
|
+
/** Maximum connections (e.g. "1-4"). */
|
|
70
|
+
maxConnections?: Int32Range;
|
|
71
|
+
/** Maximum reuse times per connection (e.g. "32-64"). */
|
|
72
|
+
cMaxReuseTimes?: Int32Range;
|
|
73
|
+
/** Maximum request times per HTTP stream (e.g. "16-32"). */
|
|
74
|
+
hMaxRequestTimes?: Int32Range;
|
|
75
|
+
/** Maximum reusable seconds for HTTP stream (e.g. "300-600"). */
|
|
76
|
+
hMaxReusableSecs?: Int32Range;
|
|
77
|
+
/** Keep-alive period in seconds. */
|
|
78
|
+
hKeepAlivePeriod?: number;
|
|
79
|
+
}
|
|
80
|
+
export type SplitHTTPMode = 'auto' | 'packet-up' | 'stream-up' | 'stream-one';
|
|
81
|
+
//# sourceMappingURL=splithttp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"splithttp.d.ts","sourceRoot":"","sources":["../../src/transport/splithttp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAErD;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC5B,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,6DAA6D;IAC7D,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+BAA+B;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uCAAuC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAChC,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sEAAsE;IACtE,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,qDAAqD;IACrD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,6CAA6C;IAC7C,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IACvB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,wCAAwC;IACxC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,yDAAyD;IACzD,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,oCAAoC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"splithttp.js","sourceRoot":"","sources":["../../src/transport/splithttp.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { TransportProtocol, SecurityType } from './common';
|
|
2
|
+
import { TCPConfig } from './tcp';
|
|
3
|
+
import { KCPConfig } from './kcp';
|
|
4
|
+
import { WebSocketConfig } from './websocket';
|
|
5
|
+
import { HTTPTransportConfig } from './http';
|
|
6
|
+
import { GRPCConfig } from './grpc';
|
|
7
|
+
import { HTTPUpgradeConfig } from './httpupgrade';
|
|
8
|
+
import { SplitHTTPConfig } from './splithttp';
|
|
9
|
+
import { HysteriaConfig } from './hysteria';
|
|
10
|
+
import { TLSConfig } from './tls';
|
|
11
|
+
import { REALITYConfig } from './reality';
|
|
12
|
+
import { SocketConfig } from './sockopt';
|
|
13
|
+
import { FinalMaskConfig } from './finalmask';
|
|
14
|
+
/**
|
|
15
|
+
* Stream settings (transport layer) for Xray-Core inbound/outbound connections.
|
|
16
|
+
*
|
|
17
|
+
* @see https://xtls.github.io/en/config/transport.html#streamsettingsobject
|
|
18
|
+
*/
|
|
19
|
+
export interface StreamSettingsConfig {
|
|
20
|
+
/** Override address for this stream. */
|
|
21
|
+
address?: string;
|
|
22
|
+
/** Override port for this stream. */
|
|
23
|
+
port?: number;
|
|
24
|
+
/** Transport protocol type. */
|
|
25
|
+
network?: TransportProtocol;
|
|
26
|
+
/** Security layer type. */
|
|
27
|
+
security?: SecurityType;
|
|
28
|
+
/** FinalMask configuration for advanced masking. */
|
|
29
|
+
finalmask?: FinalMaskConfig;
|
|
30
|
+
/** TLS settings (when security = "tls"). */
|
|
31
|
+
tlsSettings?: TLSConfig;
|
|
32
|
+
/** REALITY settings (when security = "reality"). */
|
|
33
|
+
realitySettings?: REALITYConfig;
|
|
34
|
+
/** Raw TCP settings (alias for tcpSettings). */
|
|
35
|
+
rawSettings?: TCPConfig;
|
|
36
|
+
/** TCP transport settings (when network = "tcp" or "raw"). */
|
|
37
|
+
tcpSettings?: TCPConfig;
|
|
38
|
+
/** XHTTP/SplitHTTP settings (when network = "xhttp"). */
|
|
39
|
+
xhttpSettings?: SplitHTTPConfig;
|
|
40
|
+
/** SplitHTTP settings (alias, when network = "splithttp"). */
|
|
41
|
+
splithttpSettings?: SplitHTTPConfig;
|
|
42
|
+
/** mKCP settings (when network = "kcp" or "mkcp"). */
|
|
43
|
+
kcpSettings?: KCPConfig;
|
|
44
|
+
/** gRPC settings (when network = "grpc" or "gun"). */
|
|
45
|
+
grpcSettings?: GRPCConfig;
|
|
46
|
+
/** WebSocket settings (when network = "ws" or "websocket"). */
|
|
47
|
+
wsSettings?: WebSocketConfig;
|
|
48
|
+
/** HTTPUpgrade settings (when network = "httpupgrade"). */
|
|
49
|
+
httpupgradeSettings?: HTTPUpgradeConfig;
|
|
50
|
+
/** HTTP/2 settings (when network = "http" or "h2"). */
|
|
51
|
+
httpSettings?: HTTPTransportConfig;
|
|
52
|
+
/** Hysteria2 settings (when network = "hysteria2"). */
|
|
53
|
+
hysteriaSettings?: HysteriaConfig;
|
|
54
|
+
/** Socket options. */
|
|
55
|
+
sockopt?: SocketConfig;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/transport/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACjC,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,oDAAoD;IACpD,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,oDAAoD;IACpD,eAAe,CAAC,EAAE,aAAa,CAAC;IAChC,gDAAgD;IAChD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,yDAAyD;IACzD,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,eAAe,CAAC;IACpC,sDAAsD;IACtD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,sDAAsD;IACtD,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,+DAA+D;IAC/D,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,2DAA2D;IAC3D,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;IACxC,uDAAuD;IACvD,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,cAAc,CAAC;IAClC,sBAAsB;IACtB,OAAO,CAAC,EAAE,YAAY,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/transport/stream.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TCP transport configuration.
|
|
3
|
+
*
|
|
4
|
+
* @see https://xtls.github.io/en/config/transports/tcp.html
|
|
5
|
+
*/
|
|
6
|
+
export interface TCPConfig {
|
|
7
|
+
/** Accept PROXY protocol on inbound connections. */
|
|
8
|
+
acceptProxyProtocol?: boolean;
|
|
9
|
+
/** Header obfuscation settings. */
|
|
10
|
+
header?: TCPHeaderNone | TCPHeaderHTTP;
|
|
11
|
+
}
|
|
12
|
+
export interface TCPHeaderNone {
|
|
13
|
+
type: 'none';
|
|
14
|
+
}
|
|
15
|
+
export interface TCPHeaderHTTP {
|
|
16
|
+
type: 'http';
|
|
17
|
+
/** HTTP request configuration (client side). */
|
|
18
|
+
request?: TCPHTTPRequest;
|
|
19
|
+
/** HTTP response configuration (server side). */
|
|
20
|
+
response?: TCPHTTPResponse;
|
|
21
|
+
}
|
|
22
|
+
export interface TCPHTTPRequest {
|
|
23
|
+
/** HTTP version (default: "1.1"). */
|
|
24
|
+
version?: string;
|
|
25
|
+
/** HTTP method (default: "GET"). */
|
|
26
|
+
method?: string;
|
|
27
|
+
/** URL paths (randomly selected per connection). */
|
|
28
|
+
path?: string[];
|
|
29
|
+
/** HTTP headers. Values are arrays (randomly selected). */
|
|
30
|
+
headers?: Record<string, string[]>;
|
|
31
|
+
}
|
|
32
|
+
export interface TCPHTTPResponse {
|
|
33
|
+
/** HTTP version (default: "1.1"). */
|
|
34
|
+
version?: string;
|
|
35
|
+
/** HTTP status code (default: "200"). */
|
|
36
|
+
status?: string;
|
|
37
|
+
/** HTTP reason phrase (default: "OK"). */
|
|
38
|
+
reason?: string;
|
|
39
|
+
/** HTTP headers. Values are arrays. */
|
|
40
|
+
headers?: Record<string, string[]>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=tcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tcp.d.ts","sourceRoot":"","sources":["../../src/transport/tcp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACtB,oDAAoD;IACpD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mCAAmC;IACnC,MAAM,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC;CAC1C;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC3B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC5B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tcp.js","sourceRoot":"","sources":["../../src/transport/tcp.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { SocketConfig } from './sockopt';
|
|
2
|
+
/**
|
|
3
|
+
* TLS configuration for Xray-Core.
|
|
4
|
+
*
|
|
5
|
+
* @see https://xtls.github.io/en/config/transport.html#tlsobject
|
|
6
|
+
*/
|
|
7
|
+
export interface TLSConfig {
|
|
8
|
+
/** Server Name Indication for TLS handshake. */
|
|
9
|
+
serverName?: string;
|
|
10
|
+
/** ALPN protocols (e.g. ["h2", "http/1.1"]). */
|
|
11
|
+
alpn?: string[];
|
|
12
|
+
/** Allow insecure TLS connections (skip certificate verification). */
|
|
13
|
+
allowInsecure?: boolean;
|
|
14
|
+
/** TLS certificates. */
|
|
15
|
+
certificates?: TLSCertConfig[];
|
|
16
|
+
/** Enable TLS session resumption. */
|
|
17
|
+
enableSessionResumption?: boolean;
|
|
18
|
+
/** Disable loading system root CA certificates. */
|
|
19
|
+
disableSystemRoot?: boolean;
|
|
20
|
+
/** Minimum TLS version (e.g. "1.2", "1.3"). */
|
|
21
|
+
minVersion?: string;
|
|
22
|
+
/** Maximum TLS version (e.g. "1.2", "1.3"). */
|
|
23
|
+
maxVersion?: string;
|
|
24
|
+
/** Cipher suites (colon-separated, e.g. "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"). */
|
|
25
|
+
cipherSuites?: string;
|
|
26
|
+
/** uTLS fingerprint for client hello. */
|
|
27
|
+
fingerprint?: TLSFingerprint;
|
|
28
|
+
/** Reject connections with unknown/empty SNI on server side. */
|
|
29
|
+
rejectUnknownSni?: boolean;
|
|
30
|
+
/** Preferred elliptic curves. */
|
|
31
|
+
curvePreferences?: string[];
|
|
32
|
+
/** Path to write TLS master key log (for debugging, e.g. with Wireshark). */
|
|
33
|
+
masterKeyLog?: string;
|
|
34
|
+
/** SHA-256 hash of pinned peer certificate for certificate pinning. */
|
|
35
|
+
pinnedPeerCertSha256?: string;
|
|
36
|
+
/** Verify peer certificate by exact CN/SAN name. */
|
|
37
|
+
verifyPeerCertByName?: string;
|
|
38
|
+
/** Verify peer certificate against multiple names. */
|
|
39
|
+
verifyPeerCertInNames?: string[];
|
|
40
|
+
/** ECH server keys (base64, server-side). */
|
|
41
|
+
echServerKeys?: string;
|
|
42
|
+
/** ECH config list (base64, client-side). */
|
|
43
|
+
echConfigList?: string;
|
|
44
|
+
/** ECH force query for config list retrieval. */
|
|
45
|
+
echForceQuery?: string;
|
|
46
|
+
/** Socket options for ECH DNS queries. */
|
|
47
|
+
echSockopt?: SocketConfig;
|
|
48
|
+
}
|
|
49
|
+
export interface TLSCertConfig {
|
|
50
|
+
/** Path to certificate file. */
|
|
51
|
+
certificateFile?: string;
|
|
52
|
+
/** Inline certificate content (PEM lines as array). */
|
|
53
|
+
certificate?: string[];
|
|
54
|
+
/** Path to private key file. */
|
|
55
|
+
keyFile?: string;
|
|
56
|
+
/** Inline private key content (PEM lines as array). */
|
|
57
|
+
key?: string[];
|
|
58
|
+
/** Certificate usage type. */
|
|
59
|
+
usage?: CertificateUsage;
|
|
60
|
+
/** OCSP stapling update interval in seconds. */
|
|
61
|
+
ocspStapling?: number;
|
|
62
|
+
/** Load certificate only once (no hot-reload). */
|
|
63
|
+
oneTimeLoading?: boolean;
|
|
64
|
+
/** Build full certificate chain. */
|
|
65
|
+
buildChain?: boolean;
|
|
66
|
+
}
|
|
67
|
+
export type CertificateUsage = 'encipherment' | 'verify' | 'issue' | 'verifyclient';
|
|
68
|
+
export type TLSFingerprint = '' | 'chrome' | 'firefox' | 'safari' | 'ios' | 'android' | 'edge' | 'qq' | '360' | 'random' | 'randomized' | 'helloChrome_Auto' | 'helloFirefox_Auto' | 'helloSafari_Auto' | 'helloEdge_Auto' | 'hello360_Auto' | 'helloQQ_Auto';
|
|
69
|
+
//# sourceMappingURL=tls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tls.d.ts","sourceRoot":"","sources":["../../src/transport/tls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACtB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,sEAAsE;IACtE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wBAAwB;IACxB,YAAY,CAAC,EAAE,aAAa,EAAE,CAAC;IAC/B,qCAAqC;IACrC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iCAAiC;IACjC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oDAAoD;IACpD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sDAAsD;IACtD,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,6CAA6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC1B,gCAAgC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,8BAA8B;IAC9B,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oCAAoC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,gBAAgB,GACtB,cAAc,GACd,QAAQ,GACR,OAAO,GACP,cAAc,CAAC;AAErB,MAAM,MAAM,cAAc,GACpB,EAAE,GACF,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,KAAK,GACL,SAAS,GACT,MAAM,GACN,IAAI,GACJ,KAAK,GACL,QAAQ,GACR,YAAY,GACZ,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,GAClB,gBAAgB,GAChB,eAAe,GACf,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tls.js","sourceRoot":"","sources":["../../src/transport/tls.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebSocket transport configuration.
|
|
3
|
+
*
|
|
4
|
+
* @see https://xtls.github.io/en/config/transports/websocket.html
|
|
5
|
+
*/
|
|
6
|
+
export interface WebSocketConfig {
|
|
7
|
+
/** Host header value. */
|
|
8
|
+
host?: string;
|
|
9
|
+
/** WebSocket path (default: "/"). */
|
|
10
|
+
path?: string;
|
|
11
|
+
/** Custom HTTP headers for the WebSocket handshake. */
|
|
12
|
+
headers?: Record<string, string>;
|
|
13
|
+
/** Accept PROXY protocol on inbound connections. */
|
|
14
|
+
acceptProxyProtocol?: boolean;
|
|
15
|
+
/** WebSocket heartbeat/ping period in seconds (0 = disabled). */
|
|
16
|
+
heartbeatPeriod?: number;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=websocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/transport/websocket.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC5B,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,oDAAoD;IACpD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B"}
|