mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-06-06 05:04:22 +00:00
Adds a panel-only `pinnedPeerCertSha256` field on TLS settings with a tags input and a random-hash generator. The hashes ride share links as `pcs` (v2rayN-compatible), Clash sub as `pin-sha256`, and JSON sub as `pinnedPeerCertSha256`, while remaining stripped from the run-config sent to xray-core.
617 lines
13 KiB
Text
617 lines
13 KiB
Text
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
|
|
exports[`InboundSchema (full) fixtures > parses hysteria-v1-tls byte-stably 1`] = `
|
|
{
|
|
"down": 0,
|
|
"enable": true,
|
|
"expiryTime": 0,
|
|
"id": 21,
|
|
"listen": "",
|
|
"port": 36715,
|
|
"protocol": "hysteria",
|
|
"remark": "gina-hysteria-v1",
|
|
"settings": {
|
|
"clients": [
|
|
{
|
|
"auth": "hyst-v1-auth-XYZ",
|
|
"comment": "",
|
|
"email": "gina@example.test",
|
|
"enable": true,
|
|
"expiryTime": 0,
|
|
"limitIp": 0,
|
|
"reset": 0,
|
|
"subId": "hy1-001",
|
|
"tgId": 0,
|
|
"totalGB": 0,
|
|
},
|
|
],
|
|
"version": 1,
|
|
},
|
|
"sniffing": {
|
|
"destOverride": [
|
|
"http",
|
|
"tls",
|
|
"quic",
|
|
"fakedns",
|
|
],
|
|
"domainsExcluded": [],
|
|
"enabled": false,
|
|
"ipsExcluded": [],
|
|
"metadataOnly": false,
|
|
"routeOnly": false,
|
|
},
|
|
"streamSettings": {
|
|
"network": "tcp",
|
|
"security": "tls",
|
|
"tcpSettings": {
|
|
"acceptProxyProtocol": false,
|
|
},
|
|
"tlsSettings": {
|
|
"alpn": [
|
|
"h3",
|
|
],
|
|
"certificates": [
|
|
{
|
|
"buildChain": false,
|
|
"certificateFile": "/etc/ssl/certs/hysteria.crt",
|
|
"keyFile": "/etc/ssl/private/hysteria.key",
|
|
"oneTimeLoading": false,
|
|
"usage": "encipherment",
|
|
},
|
|
],
|
|
"cipherSuites": "",
|
|
"disableSystemRoot": false,
|
|
"echServerKeys": "",
|
|
"enableSessionResumption": false,
|
|
"maxVersion": "1.3",
|
|
"minVersion": "1.2",
|
|
"rejectUnknownSni": false,
|
|
"serverName": "hysteria.example.test",
|
|
"settings": {
|
|
"echConfigList": "",
|
|
"fingerprint": "chrome",
|
|
"pinnedPeerCertSha256": [],
|
|
},
|
|
},
|
|
},
|
|
"tag": "inbound-hysteria-v1",
|
|
"total": 0,
|
|
"up": 0,
|
|
}
|
|
`;
|
|
|
|
exports[`InboundSchema (full) fixtures > parses shadowsocks-tcp-2022 byte-stably 1`] = `
|
|
{
|
|
"down": 0,
|
|
"enable": true,
|
|
"expiryTime": 0,
|
|
"id": 17,
|
|
"listen": "",
|
|
"port": 8388,
|
|
"protocol": "shadowsocks",
|
|
"remark": "frank-ss-tcp-2022",
|
|
"settings": {
|
|
"clients": [
|
|
{
|
|
"comment": "",
|
|
"email": "frank@example.test",
|
|
"enable": true,
|
|
"expiryTime": 0,
|
|
"limitIp": 0,
|
|
"method": "",
|
|
"password": "dGVzdC1jbGllbnQtcGFzc3dvcmQtMQ==",
|
|
"reset": 0,
|
|
"subId": "ss-001",
|
|
"tgId": 0,
|
|
"totalGB": 0,
|
|
},
|
|
],
|
|
"ivCheck": false,
|
|
"method": "2022-blake3-aes-256-gcm",
|
|
"network": "tcp,udp",
|
|
"password": "ZmFrZS1zZXJ2ZXItcGFzc3dvcmQtMDAwMQ==",
|
|
},
|
|
"sniffing": {
|
|
"destOverride": [
|
|
"http",
|
|
"tls",
|
|
"quic",
|
|
"fakedns",
|
|
],
|
|
"domainsExcluded": [],
|
|
"enabled": true,
|
|
"ipsExcluded": [],
|
|
"metadataOnly": false,
|
|
"routeOnly": false,
|
|
},
|
|
"streamSettings": {
|
|
"network": "tcp",
|
|
"security": "none",
|
|
"tcpSettings": {
|
|
"acceptProxyProtocol": false,
|
|
"header": {
|
|
"type": "none",
|
|
},
|
|
},
|
|
},
|
|
"tag": "inbound-ss-2022",
|
|
"total": 0,
|
|
"up": 0,
|
|
}
|
|
`;
|
|
|
|
exports[`InboundSchema (full) fixtures > parses trojan-ws-tls byte-stably 1`] = `
|
|
{
|
|
"down": 0,
|
|
"enable": true,
|
|
"expiryTime": 0,
|
|
"id": 13,
|
|
"listen": "",
|
|
"port": 443,
|
|
"protocol": "trojan",
|
|
"remark": "eve-trojan-ws-tls",
|
|
"settings": {
|
|
"clients": [
|
|
{
|
|
"comment": "",
|
|
"email": "eve@example.test",
|
|
"enable": true,
|
|
"expiryTime": 0,
|
|
"limitIp": 0,
|
|
"password": "trojan-test-pw-XYZ",
|
|
"reset": 0,
|
|
"subId": "trj-001",
|
|
"tgId": 0,
|
|
"totalGB": 0,
|
|
},
|
|
],
|
|
"fallbacks": [],
|
|
},
|
|
"sniffing": {
|
|
"destOverride": [
|
|
"http",
|
|
"tls",
|
|
"quic",
|
|
"fakedns",
|
|
],
|
|
"domainsExcluded": [],
|
|
"enabled": true,
|
|
"ipsExcluded": [],
|
|
"metadataOnly": false,
|
|
"routeOnly": false,
|
|
},
|
|
"streamSettings": {
|
|
"network": "ws",
|
|
"security": "tls",
|
|
"tlsSettings": {
|
|
"alpn": [
|
|
"h2",
|
|
"http/1.1",
|
|
],
|
|
"certificates": [
|
|
{
|
|
"buildChain": false,
|
|
"certificateFile": "/etc/ssl/certs/trojan.crt",
|
|
"keyFile": "/etc/ssl/private/trojan.key",
|
|
"oneTimeLoading": false,
|
|
"usage": "encipherment",
|
|
},
|
|
],
|
|
"cipherSuites": "",
|
|
"disableSystemRoot": false,
|
|
"echServerKeys": "",
|
|
"enableSessionResumption": false,
|
|
"maxVersion": "1.3",
|
|
"minVersion": "1.2",
|
|
"rejectUnknownSni": false,
|
|
"serverName": "trojan.example.test",
|
|
"settings": {
|
|
"echConfigList": "",
|
|
"fingerprint": "chrome",
|
|
"pinnedPeerCertSha256": [],
|
|
},
|
|
},
|
|
"wsSettings": {
|
|
"acceptProxyProtocol": false,
|
|
"headers": {},
|
|
"heartbeatPeriod": 0,
|
|
"host": "trojan.example.test",
|
|
"path": "/trojan",
|
|
},
|
|
},
|
|
"tag": "inbound-trojan-ws",
|
|
"total": 0,
|
|
"up": 0,
|
|
}
|
|
`;
|
|
|
|
exports[`InboundSchema (full) fixtures > parses vless-tcp-reality byte-stably 1`] = `
|
|
{
|
|
"down": 0,
|
|
"enable": true,
|
|
"expiryTime": 0,
|
|
"id": 9,
|
|
"listen": "",
|
|
"port": 443,
|
|
"protocol": "vless",
|
|
"remark": "dave-vless-tcp-reality",
|
|
"settings": {
|
|
"clients": [
|
|
{
|
|
"comment": "",
|
|
"email": "dave@example.test",
|
|
"enable": true,
|
|
"expiryTime": 0,
|
|
"flow": "xtls-rprx-vision",
|
|
"id": "22222222-3333-4444-9555-666666666666",
|
|
"limitIp": 0,
|
|
"reset": 0,
|
|
"subId": "vless-reality-001",
|
|
"tgId": 0,
|
|
"totalGB": 0,
|
|
},
|
|
],
|
|
"decryption": "none",
|
|
"encryption": "none",
|
|
"fallbacks": [],
|
|
},
|
|
"sniffing": {
|
|
"destOverride": [
|
|
"http",
|
|
"tls",
|
|
"quic",
|
|
"fakedns",
|
|
],
|
|
"domainsExcluded": [],
|
|
"enabled": true,
|
|
"ipsExcluded": [],
|
|
"metadataOnly": false,
|
|
"routeOnly": false,
|
|
},
|
|
"streamSettings": {
|
|
"network": "tcp",
|
|
"realitySettings": {
|
|
"maxClientVer": "",
|
|
"maxTimediff": 0,
|
|
"minClientVer": "",
|
|
"mldsa65Seed": "",
|
|
"privateKey": "wM-2_oQRWXyLcXhV5q1ifTBcS3K8mYR3wQI3PqGFK1k",
|
|
"serverNames": [
|
|
"yahoo.com",
|
|
"www.yahoo.com",
|
|
],
|
|
"settings": {
|
|
"fingerprint": "chrome",
|
|
"mldsa65Verify": "",
|
|
"publicKey": "Tx5yj1bRcOPHkdvT2pIAQ2zh0gQ8m4OPdnzqXJxxV3o",
|
|
"serverName": "",
|
|
"spiderX": "/",
|
|
},
|
|
"shortIds": [
|
|
"a3f1",
|
|
"b8c2",
|
|
],
|
|
"show": false,
|
|
"target": "yahoo.com:443",
|
|
"xver": 0,
|
|
},
|
|
"security": "reality",
|
|
"tcpSettings": {
|
|
"acceptProxyProtocol": false,
|
|
"header": {
|
|
"type": "none",
|
|
},
|
|
},
|
|
},
|
|
"tag": "inbound-vless-reality",
|
|
"total": 0,
|
|
"up": 0,
|
|
}
|
|
`;
|
|
|
|
exports[`InboundSchema (full) fixtures > parses vless-ws-tls byte-stably 1`] = `
|
|
{
|
|
"down": 0,
|
|
"enable": true,
|
|
"expiryTime": 0,
|
|
"id": 42,
|
|
"listen": "",
|
|
"port": 443,
|
|
"protocol": "vless",
|
|
"remark": "alice-vless-ws-tls",
|
|
"settings": {
|
|
"clients": [
|
|
{
|
|
"comment": "",
|
|
"email": "alice@example.test",
|
|
"enable": true,
|
|
"expiryTime": 0,
|
|
"flow": "",
|
|
"id": "8c14d6f7-2e3b-4a91-9d24-3f7a6b8c1e02",
|
|
"limitIp": 0,
|
|
"reset": 0,
|
|
"subId": "abc123def",
|
|
"tgId": 0,
|
|
"totalGB": 0,
|
|
},
|
|
],
|
|
"decryption": "none",
|
|
"encryption": "none",
|
|
"fallbacks": [],
|
|
},
|
|
"sniffing": {
|
|
"destOverride": [
|
|
"http",
|
|
"tls",
|
|
"quic",
|
|
"fakedns",
|
|
],
|
|
"domainsExcluded": [],
|
|
"enabled": true,
|
|
"ipsExcluded": [],
|
|
"metadataOnly": false,
|
|
"routeOnly": false,
|
|
},
|
|
"streamSettings": {
|
|
"network": "ws",
|
|
"security": "tls",
|
|
"tlsSettings": {
|
|
"alpn": [
|
|
"h2",
|
|
"http/1.1",
|
|
],
|
|
"certificates": [
|
|
{
|
|
"buildChain": false,
|
|
"certificateFile": "/etc/ssl/certs/cdn.example.test.crt",
|
|
"keyFile": "/etc/ssl/private/cdn.example.test.key",
|
|
"oneTimeLoading": false,
|
|
"usage": "encipherment",
|
|
},
|
|
],
|
|
"cipherSuites": "",
|
|
"disableSystemRoot": false,
|
|
"echServerKeys": "",
|
|
"enableSessionResumption": false,
|
|
"maxVersion": "1.3",
|
|
"minVersion": "1.2",
|
|
"rejectUnknownSni": false,
|
|
"serverName": "cdn.example.test",
|
|
"settings": {
|
|
"echConfigList": "",
|
|
"fingerprint": "chrome",
|
|
"pinnedPeerCertSha256": [],
|
|
},
|
|
},
|
|
"wsSettings": {
|
|
"acceptProxyProtocol": false,
|
|
"headers": {},
|
|
"heartbeatPeriod": 0,
|
|
"host": "cdn.example.test",
|
|
"path": "/ws",
|
|
},
|
|
},
|
|
"tag": "inbound-vless-1",
|
|
"total": 0,
|
|
"up": 0,
|
|
}
|
|
`;
|
|
|
|
exports[`InboundSchema (full) fixtures > parses vless-ws-tls-pinned byte-stably 1`] = `
|
|
{
|
|
"down": 0,
|
|
"enable": true,
|
|
"expiryTime": 0,
|
|
"id": 43,
|
|
"listen": "",
|
|
"port": 443,
|
|
"protocol": "vless",
|
|
"remark": "alice-vless-ws-tls-pinned",
|
|
"settings": {
|
|
"clients": [
|
|
{
|
|
"comment": "",
|
|
"email": "alice@example.test",
|
|
"enable": true,
|
|
"expiryTime": 0,
|
|
"flow": "",
|
|
"id": "8c14d6f7-2e3b-4a91-9d24-3f7a6b8c1e02",
|
|
"limitIp": 0,
|
|
"reset": 0,
|
|
"subId": "abc123def",
|
|
"tgId": 0,
|
|
"totalGB": 0,
|
|
},
|
|
],
|
|
"decryption": "none",
|
|
"encryption": "none",
|
|
"fallbacks": [],
|
|
},
|
|
"sniffing": {
|
|
"destOverride": [
|
|
"http",
|
|
"tls",
|
|
"quic",
|
|
"fakedns",
|
|
],
|
|
"domainsExcluded": [],
|
|
"enabled": true,
|
|
"ipsExcluded": [],
|
|
"metadataOnly": false,
|
|
"routeOnly": false,
|
|
},
|
|
"streamSettings": {
|
|
"network": "ws",
|
|
"security": "tls",
|
|
"tlsSettings": {
|
|
"alpn": [
|
|
"h2",
|
|
"http/1.1",
|
|
],
|
|
"certificates": [
|
|
{
|
|
"buildChain": false,
|
|
"certificateFile": "/etc/ssl/certs/cdn.example.test.crt",
|
|
"keyFile": "/etc/ssl/private/cdn.example.test.key",
|
|
"oneTimeLoading": false,
|
|
"usage": "encipherment",
|
|
},
|
|
],
|
|
"cipherSuites": "",
|
|
"disableSystemRoot": false,
|
|
"echServerKeys": "",
|
|
"enableSessionResumption": false,
|
|
"maxVersion": "1.3",
|
|
"minVersion": "1.2",
|
|
"rejectUnknownSni": false,
|
|
"serverName": "cdn.example.test",
|
|
"settings": {
|
|
"echConfigList": "",
|
|
"fingerprint": "chrome",
|
|
"pinnedPeerCertSha256": [
|
|
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
|
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB=",
|
|
],
|
|
},
|
|
},
|
|
"wsSettings": {
|
|
"acceptProxyProtocol": false,
|
|
"headers": {},
|
|
"heartbeatPeriod": 0,
|
|
"host": "cdn.example.test",
|
|
"path": "/ws",
|
|
},
|
|
},
|
|
"tag": "inbound-vless-pinned-1",
|
|
"total": 0,
|
|
"up": 0,
|
|
}
|
|
`;
|
|
|
|
exports[`InboundSchema (full) fixtures > parses vmess-tcp-tls byte-stably 1`] = `
|
|
{
|
|
"down": 0,
|
|
"enable": true,
|
|
"expiryTime": 0,
|
|
"id": 7,
|
|
"listen": "",
|
|
"port": 8443,
|
|
"protocol": "vmess",
|
|
"remark": "carol-vmess-tcp-tls",
|
|
"settings": {
|
|
"clients": [
|
|
{
|
|
"comment": "",
|
|
"email": "carol@example.test",
|
|
"enable": true,
|
|
"expiryTime": 0,
|
|
"id": "11111111-2222-4333-8444-555555555555",
|
|
"limitIp": 0,
|
|
"reset": 0,
|
|
"security": "auto",
|
|
"subId": "vmess-001",
|
|
"tgId": 0,
|
|
"totalGB": 0,
|
|
},
|
|
],
|
|
},
|
|
"sniffing": {
|
|
"destOverride": [
|
|
"http",
|
|
"tls",
|
|
"quic",
|
|
"fakedns",
|
|
],
|
|
"domainsExcluded": [],
|
|
"enabled": true,
|
|
"ipsExcluded": [],
|
|
"metadataOnly": false,
|
|
"routeOnly": false,
|
|
},
|
|
"streamSettings": {
|
|
"network": "tcp",
|
|
"security": "tls",
|
|
"tcpSettings": {
|
|
"acceptProxyProtocol": false,
|
|
"header": {
|
|
"type": "none",
|
|
},
|
|
},
|
|
"tlsSettings": {
|
|
"alpn": [
|
|
"h2",
|
|
"http/1.1",
|
|
],
|
|
"certificates": [
|
|
{
|
|
"buildChain": false,
|
|
"certificateFile": "/etc/ssl/certs/vmess.crt",
|
|
"keyFile": "/etc/ssl/private/vmess.key",
|
|
"oneTimeLoading": false,
|
|
"usage": "encipherment",
|
|
},
|
|
],
|
|
"cipherSuites": "",
|
|
"disableSystemRoot": false,
|
|
"echServerKeys": "",
|
|
"enableSessionResumption": false,
|
|
"maxVersion": "1.3",
|
|
"minVersion": "1.2",
|
|
"rejectUnknownSni": false,
|
|
"serverName": "vmess.example.test",
|
|
"settings": {
|
|
"echConfigList": "",
|
|
"fingerprint": "chrome",
|
|
"pinnedPeerCertSha256": [],
|
|
},
|
|
},
|
|
},
|
|
"tag": "inbound-vmess-1",
|
|
"total": 0,
|
|
"up": 0,
|
|
}
|
|
`;
|
|
|
|
exports[`InboundSchema (full) fixtures > parses wireguard-server byte-stably 1`] = `
|
|
{
|
|
"down": 0,
|
|
"enable": true,
|
|
"expiryTime": 0,
|
|
"id": 25,
|
|
"listen": "",
|
|
"port": 51820,
|
|
"protocol": "wireguard",
|
|
"remark": "wg-server",
|
|
"settings": {
|
|
"mtu": 1420,
|
|
"noKernelTun": false,
|
|
"peers": [
|
|
{
|
|
"allowedIPs": [
|
|
"10.0.0.2/32",
|
|
],
|
|
"keepAlive": 25,
|
|
"privateKey": "QGVlb2dXc1ZTWGw0ZXBzZndsWmtMaUM5MUlNYjBHWFdYbz0=",
|
|
"publicKey": "DGSYIcEKAUkA7HhzGSjxLZuV67BR3LeyU0BMLJzNVHQ=",
|
|
},
|
|
],
|
|
"secretKey": "iJ2cBkrSGqRwIfYIDIxk7hr5RXfdR93MfJUL7yqkkH8=",
|
|
},
|
|
"sniffing": {
|
|
"destOverride": [
|
|
"http",
|
|
"tls",
|
|
"quic",
|
|
"fakedns",
|
|
],
|
|
"domainsExcluded": [],
|
|
"enabled": false,
|
|
"ipsExcluded": [],
|
|
"metadataOnly": false,
|
|
"routeOnly": false,
|
|
},
|
|
"tag": "inbound-wg-1",
|
|
"total": 0,
|
|
"up": 0,
|
|
}
|
|
`;
|