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 WireguardDomainStrategy = Object.freeze([ 'ForceIP', 'ForceIPv4', 'ForceIPv4v6', 'ForceIPv6', 'ForceIPv6v4', ] as const); 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', });