mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-10-23 14:25:01 +03:00
refactor(inbounds): drop the single-user shadowsocks inbound paths
isSSMultiUser treated 2022-blake3-chacha20-poly1305 as a single-user inbound, and the inbounds page grew a row QR modal, a separate link panel in the info modal and a client-count skip for that case. The method is no longer allowed on inbounds, so every shadowsocks inbound carries clients and those paths cannot be reached: remove them along with the inbound-level QrCodeModal they alone opened.
This commit is contained in:
@@ -1387,11 +1387,8 @@ export function preferPublicHost(browserHost: string, publicHost: string): strin
|
||||
return publicHost && isLoopbackHost(browserHost) ? publicHost : browserHost;
|
||||
}
|
||||
|
||||
// Returns the client array for protocols that have one. SS returns its
|
||||
// clients only in 2022-blake3 multi-user mode (matches the legacy
|
||||
// `this.clients` getter, which used isSSMultiUser to gate). Returns null
|
||||
// for SS single-user, http, mixed, tunnel, wireguard, hysteria2-without-
|
||||
// clients, and any protocol without a clients array.
|
||||
// Returns the client array for protocols that have one; null for http, mixed,
|
||||
// tunnel, wireguard, hysteria2-without-clients, and any protocol without one.
|
||||
type ClientShape = {
|
||||
id?: string;
|
||||
uuid?: string;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Pure-function ports of the legacy Inbound class capability predicates
|
||||
// (canEnableTls, canEnableReality, canEnableTlsFlow, canEnableStream,
|
||||
// canEnableVisionSeed, isSS2022, isSSMultiUser). Each accepts the minimal
|
||||
// canEnableVisionSeed, isSS2022). Each accepts the minimal
|
||||
// slice of an InboundFormValues it needs, so the same predicate can be
|
||||
// called against a partial-row, a full form value, or a hand-built test
|
||||
// fixture without the caller projecting a whole object.
|
||||
@@ -21,7 +21,6 @@ const STREAM_PROTOCOLS = [
|
||||
];
|
||||
const VISION_FLOW = 'xtls-rprx-vision';
|
||||
const SS_2022_PREFIX = '2022';
|
||||
const SS_BLAKE3_CHACHA20 = '2022-blake3-chacha20-poly1305';
|
||||
|
||||
export interface CapabilityProtocolSlice {
|
||||
protocol: string;
|
||||
@@ -103,15 +102,6 @@ export function canEnableVisionSeed(values: CapabilityVlessSlice): boolean {
|
||||
return clients.some((c) => c?.flow === VISION_FLOW);
|
||||
}
|
||||
|
||||
// Why: legacy returns true on non-SS protocols too (the method getter
|
||||
// resolves to "" and "" !== blake3-chacha20-poly1305). Preserved for
|
||||
// parity with the legacy class; in practice the callers all narrow on
|
||||
// protocol === shadowsocks before checking.
|
||||
export function isSSMultiUser(values: CapabilityShadowsocksSlice): boolean {
|
||||
const method = values.protocol === 'shadowsocks' ? (values.settings?.method ?? '') : '';
|
||||
return method !== SS_BLAKE3_CHACHA20;
|
||||
}
|
||||
|
||||
export function isSS2022(values: CapabilityShadowsocksSlice): boolean {
|
||||
const method = values.protocol === 'shadowsocks' ? (values.settings?.method ?? '') : '';
|
||||
return method.substring(0, 4) === SS_2022_PREFIX;
|
||||
|
||||
Reference in New Issue
Block a user