mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-11-02 19:25:05 +03:00
62423cacd1
Bump xtls/xray-core to b26a91de4f (v26.9.30) and the three binary pins (DockerInit.sh, release.yml Linux + Windows) in lockstep. No deleted symbols; the sing and sing-shadowsocks indirect deps drop out with the SS2022 rewrite. XDNS finalmask (#6718) replaced its string lists with objects: domains are {name, types, edns0, lenLimit, labelLimit} and client resolvers {type, settings.addr}. The loader no longer parses the old lists, so a single stored xdns mask keeps the whole core from starting. The new leaf package internal/util/maskcompat converts them: "name[:type]" becomes a domain and "name[:type]+udp://addr" a domain plus a udp resolver. A bare name maps to TXT, the type legacy clients queried by default, and each converted domain keeps the 1232-byte EDNS0 the old code always used (without it the server caps answers at 512). It runs from: - the XdnsFinalmaskObjectsFix seeder, over inbound streams, hosts, the xray template, the global sub-JSON mask and cached subscription outbounds; - inbound save (normalizeStreamSettings) and GetXrayConfig, for rows that never went through the seeder; - both link importers, since fm= from an older panel carries the lists. The finalmask form edits the object shape (every key needs a registered field, or the finalmask watch drops it on save) and lifts legacy masks on open. The udp-mask golden fixture moves to the object shape, which TestGoldenStreamFixturesBuildInXray now builds through the core. The wire format changed as well, so pre-upgrade clients need the new core. WireGuard outbound (#6771) dropped settings.domainStrategy and the remoteDNS "local" mode. The endpoint lookup now follows sockopt.domainStrategy and in-tunnel targets the outbound's targetStrategy. The old key is silently ignored, which undid the IPv4-first endpoint lookup the WARP outbound depends on (#5205), and "local" now panics the core at startup because remoteDNS goes through netip.MustParseAddr. The WireguardDomainStrategyFix seeder moves a stored family preference to both keys (a value already set wins) and turns "local" into targetStrategy; the outbound form lifts legacy rows the same way and drops its select, the WARP modal writes the new placement, and the inbound form loses a field the server never read. ValidateOutboundConfig now refuses a non-IP remoteDNS entry, which conf.Build() lets through, on template save and for outbound subscriptions. Noise finalmask items accept type "exp" (#6862), a tag expression. The form offers it for noise items only: header-custom items go through the core's PraseByteSlice, which refuses it. TUN gained autoSystemDnsToGateway (Linux) and autoSystemWfpBlockLeak (Windows). Both pass through the settings schema so a value set in JSON survives the next form save. MASQUE (inbound, outbound, transport) and the XDRIVE transport are new protocols the panel does not offer yet; their new loader refusals only cover configs the panel never generates. The FakeDNS IPv6 pool default, the SS2022 rewrite (same gRPC account; emails are now deduped case-insensitively, as the panel already does), the restored udphop interval default and the rest change no panel-facing config.
102 lines
2.7 KiB
TypeScript
102 lines
2.7 KiB
TypeScript
export const UTLS_FINGERPRINT = Object.freeze({
|
|
UTLS_CHROME: 'chrome',
|
|
UTLS_FIREFOX: 'firefox',
|
|
UTLS_SAFARI: 'safari',
|
|
UTLS_IOS: 'ios',
|
|
UTLS_android: 'android',
|
|
UTLS_EDGE: 'edge',
|
|
UTLS_360: '360',
|
|
UTLS_QQ: 'qq',
|
|
UTLS_RANDOM: 'random',
|
|
UTLS_RANDOMIZED: 'randomized',
|
|
UTLS_RONDOMIZEDNOALPN: 'randomizednoalpn',
|
|
UTLS_UNSAFE: 'unsafe',
|
|
});
|
|
|
|
export const ALPN_OPTION = Object.freeze({
|
|
H3: 'h3',
|
|
H2: 'h2',
|
|
HTTP1: 'http/1.1',
|
|
});
|
|
|
|
export const SNIFFING_OPTION = Object.freeze({
|
|
HTTP: 'http',
|
|
TLS: 'tls',
|
|
QUIC: 'quic',
|
|
FAKEDNS: 'fakedns',
|
|
});
|
|
|
|
export const USERS_SECURITY = Object.freeze({
|
|
AES_128_GCM: 'aes-128-gcm',
|
|
CHACHA20_POLY1305: 'chacha20-poly1305',
|
|
AUTO: 'auto',
|
|
});
|
|
|
|
export const MODE_OPTION = Object.freeze({
|
|
AUTO: 'auto',
|
|
PACKET_UP: 'packet-up',
|
|
STREAM_UP: 'stream-up',
|
|
STREAM_ONE: 'stream-one',
|
|
});
|
|
|
|
export const Address_Port_Strategy = Object.freeze({
|
|
NONE: 'none',
|
|
SRV_PORT_ONLY: 'SrvPortOnly',
|
|
SRV_ADDRESS_ONLY: 'SrvAddressOnly',
|
|
SRV_PORT_AND_ADDRESS: 'SrvPortAndAddress',
|
|
TXT_PORT_ONLY: 'TxtPortOnly',
|
|
TXT_ADDRESS_ONLY: 'TxtAddressOnly',
|
|
TXT_PORT_AND_ADDRESS: 'TxtPortAndAddress',
|
|
});
|
|
|
|
export const DNSRuleActions = Object.freeze(['direct', 'drop', 'return', 'hijack'] as const);
|
|
|
|
export const TLS_VERSION_OPTION = Object.freeze({
|
|
TLS10: '1.0',
|
|
TLS11: '1.1',
|
|
TLS12: '1.2',
|
|
TLS13: '1.3',
|
|
});
|
|
|
|
export const TLS_CIPHER_OPTION = Object.freeze({
|
|
AES_128_GCM: 'TLS_AES_128_GCM_SHA256',
|
|
AES_256_GCM: 'TLS_AES_256_GCM_SHA384',
|
|
CHACHA20_POLY1305: 'TLS_CHACHA20_POLY1305_SHA256',
|
|
ECDHE_ECDSA_AES_128_CBC: 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA',
|
|
ECDHE_ECDSA_AES_256_CBC: 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA',
|
|
ECDHE_RSA_AES_128_CBC: 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA',
|
|
ECDHE_RSA_AES_256_CBC: 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA',
|
|
ECDHE_ECDSA_AES_128_GCM: 'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256',
|
|
ECDHE_ECDSA_AES_256_GCM: 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384',
|
|
ECDHE_RSA_AES_128_GCM: 'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256',
|
|
ECDHE_RSA_AES_256_GCM: 'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384',
|
|
ECDHE_ECDSA_CHACHA20_POLY1305: 'TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256',
|
|
ECDHE_RSA_CHACHA20_POLY1305: 'TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256',
|
|
});
|
|
|
|
export const USAGE_OPTION = Object.freeze({
|
|
ENCIPHERMENT: 'encipherment',
|
|
VERIFY: 'verify',
|
|
ISSUE: 'issue',
|
|
});
|
|
|
|
export const DOMAIN_STRATEGY_OPTION = Object.freeze({
|
|
AS_IS: 'AsIs',
|
|
USE_IP: 'UseIP',
|
|
USE_IPV6V4: 'UseIPv6v4',
|
|
USE_IPV6: 'UseIPv6',
|
|
USE_IPV4V6: 'UseIPv4v6',
|
|
USE_IPV4: 'UseIPv4',
|
|
FORCE_IP: 'ForceIP',
|
|
FORCE_IPV6V4: 'ForceIPv6v4',
|
|
FORCE_IPV6: 'ForceIPv6',
|
|
FORCE_IPV4V6: 'ForceIPv4v6',
|
|
FORCE_IPV4: 'ForceIPv4',
|
|
});
|
|
|
|
export const TCP_CONGESTION_OPTION = Object.freeze({
|
|
BBR: 'bbr',
|
|
CUBIC: 'cubic',
|
|
RENO: 'reno',
|
|
});
|