mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-09-17 07:37:15 +00:00
fix(outbound): read the probe testability gate's ids like the core (#6527)
A direct, DNS, loopback or blackhole outbound is not a proxy, so the probe must reject it instead of measuring the panel host's own reachability. The gate compared the protocol id exactly while the core lowercases it in LoadWithID before resolving the handler, so "Freedom" and "DNS" were not recognised: the HTTP probe ran through the direct outbound and returned Success=true with a full egress block, and the row's Test button stayed enabled because isUntestable compared exactly as well. The operator reads the panel host's own country and delay as a working tunnel. The batch gate now folds the id once before its switch, and isUntestable goes through the shared isOutboundProtocol helper.
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import { isUntestable } from '@/pages/xray/outbounds/outbounds-tab-helpers';
|
||||
import type { OutboundRow } from '@/pages/xray/outbounds/outbounds-tab-types';
|
||||
|
||||
// The row's Test button is disabled by this gate alone: a spelling the core
|
||||
// resolves but the gate misses reports the panel host's own reachability as a tunnel.
|
||||
const row = (protocol: string, tag = 'probe'): OutboundRow => ({ key: 0, tag, protocol });
|
||||
|
||||
describe('isUntestable', () => {
|
||||
it.each(['Freedom', 'FREEDOM', 'fReEdOm'])('disables a %s row', (protocol) => {
|
||||
expect(isUntestable(row(protocol))).toBe(true);
|
||||
});
|
||||
|
||||
it.each(['DNS', 'Dns'])('disables a %s row', (protocol) => {
|
||||
expect(isUntestable(row(protocol))).toBe(true);
|
||||
});
|
||||
|
||||
it.each(['Blackhole', 'BLACKHOLE', 'Loopback'])('disables a %s row', (protocol) => {
|
||||
expect(isUntestable(row(protocol))).toBe(true);
|
||||
});
|
||||
|
||||
it.each(['vless', 'VMess', 'Trojan', 'Socks'])('leaves a %s row testable', (protocol) => {
|
||||
expect(isUntestable(row(protocol))).toBe(false);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user