feat(proxies): drop ipv6 latency test & display

This commit is contained in:
kunish 2024-10-13 00:17:21 +08:00
parent d88641ea5e
commit cdd60cfc37
No known key found for this signature in database
GPG Key ID: 67D3ACD788F3A7CD
6 changed files with 13 additions and 138 deletions

View File

@ -21,8 +21,6 @@ import {
setProxiesPreviewType,
setRenderProxiesInTwoColumns,
setUrlForLatencyTest,
setUrlIPv6SupportTest,
urlForIPv6SupportTest,
urlForLatencyTest,
} from '~/signals'
@ -76,16 +74,6 @@ export const ProxiesSettingsModal: Component<{
/>
</div>
<div class="flex flex-col">
<ConfigTitle withDivider>{t('urlForIPv6SupportTest')}</ConfigTitle>
<input
class="input input-bordered w-full"
value={urlForIPv6SupportTest()}
onChange={(e) => setUrlIPv6SupportTest(e.target.value?.trim())}
/>
</div>
<div>
<ConfigTitle withDivider>{t('proxiesSorting')}</ConfigTitle>

View File

@ -16,16 +16,8 @@ export const ProxyNodeCard = (props: {
onClick?: () => void
}) => {
const { proxyName, isSelected, onClick } = props
const {
getNowProxyNodeName,
proxyIPv6SupportMap,
proxyNodeMap,
proxyLatencyTest,
proxyLatencyTestingMap,
} = useProxies()
const supportIPv6 = createMemo(
() => proxyIPv6SupportMap()[getNowProxyNodeName(proxyName || '')],
)
const { proxyNodeMap, proxyLatencyTest, proxyLatencyTestingMap } =
useProxies()
const proxyNode = createMemo(() => proxyNodeMap()[proxyName])
const specialType = () =>
@ -60,21 +52,6 @@ export const ProxyNodeCard = (props: {
{proxyName}
</h2>
<span
class={twMerge(
'text-start text-xs',
isSelected ? 'text-info-content' : 'text-neutral-content',
)}
>
{[
specialType(),
supportIPv6() && 'IPv6',
proxyNode().tfo && 'TFO',
]
.filter(Boolean)
.join(' / ')}
</span>
<div class="card-actions items-center justify-between">
<div class="badge badge-secondary badge-sm font-bold uppercase">
{formatProxyType(proxyNode()?.type)}
@ -102,6 +79,17 @@ export const ProxyNodeCard = (props: {
<div class="flex flex-col items-center gap-2 rounded-box bg-neutral p-2.5 text-neutral-content">
<h2 class="text-lg font-bold">{proxyName}</h2>
<div
class={twMerge(
'w-full text-start text-xs',
isSelected ? 'text-info-content' : 'text-neutral-content',
)}
>
{[specialType(), proxyNode().tfo && 'TFO']
.filter(Boolean)
.join(' / ')}
</div>
<ul class="timeline timeline-vertical timeline-compact timeline-snap-icon">
<For each={proxyNode().latencyTestHistory}>
{(latencyTestResult, index) => (

View File

@ -48,7 +48,6 @@ export default {
auto: 'Auto',
off: 'Off',
proxiesPreviewType: 'Proxies Preview Type',
urlForIPv6SupportTest: 'URL for IPv6 Support Test',
urlForLatencyTest: 'URL for Latency Test',
autoCloseConns: 'Automatically Close Connections',
useTwemoji: 'Use Twemoji Mozilla Font',

View File

@ -50,7 +50,6 @@ export default {
auto: '自适应',
off: '关闭',
proxiesPreviewType: '节点组预览样式',
urlForIPv6SupportTest: '测试 IPv6 支持链接',
urlForLatencyTest: '测速链接',
autoCloseConns: '自动断开连接',
useTwemoji: '使用 Twemoji Mozilla 字体',

View File

@ -53,13 +53,6 @@ export const [urlForLatencyTest, setUrlForLatencyTest] = makePersisted(
{ name: 'urlForLatencyTest', storage: localStorage },
)
export const urlForIPv6SupportTestDefault = 'https://ipv6.google.com'
export const [urlForIPv6SupportTest, setUrlIPv6SupportTest] = makePersisted(
createSignal(urlForIPv6SupportTestDefault),
{ name: 'urlForIPv6SupportTest', storage: localStorage },
)
export const autoCloseConnsDefault = false
export const [autoCloseConns, setAutoCloseConns] = makePersisted(

View File

@ -1,4 +1,3 @@
import { makePersisted } from '@solid-primitives/storage'
import {
closeSingleConnectionAPI,
fetchProxiesAPI,
@ -16,7 +15,6 @@ import {
latencyTestTimeoutDuration,
latestConnectionMsg,
restructRawMsgToConnection,
urlForIPv6SupportTest,
urlForLatencyTest,
} from '~/signals'
import type { Proxy, ProxyNode, ProxyProvider } from '~/types'
@ -66,14 +64,6 @@ const [proxyNodeMap, setProxyNodeMap] = createSignal<Record<string, ProxyInfo>>(
{},
)
const [proxyIPv6SupportMap, setProxyIPv6SupportMap] = makePersisted(
createSignal<Record<string, boolean>>({}),
{
name: 'proxyIPv6SupportMap',
storage: localStorage,
},
)
const getLatencyFromProxy = (
proxy: Pick<Proxy, 'extra' | 'history'>,
url: string,
@ -101,7 +91,6 @@ const setProxiesInfo = (
) => {
const newProxyNodeMap = { ...proxyNodeMap() }
const newLatencyMap = { ...latencyMap() }
const newProxyIPv6SupportMap = { ...proxyIPv6SupportMap() }
proxies.forEach((proxy) => {
const { udp, xudp, type, now, history, name, tfo, provider = '' } = proxy
@ -118,20 +107,11 @@ const setProxiesInfo = (
}
newLatencyMap[proxy.name] = getLatencyFromProxy(proxy, urlForLatencyTest())
// we don't set it when false because sing-box didn't have "extra" so it will always be false
if (
getLatencyFromProxy(proxy, urlForIPv6SupportTest(), false) >
latencyQualityMap().NOT_CONNECTED
) {
newProxyIPv6SupportMap[proxy.name] = true
}
})
batch(() => {
setProxyNodeMap(newProxyNodeMap)
setLatencyMap(newLatencyMap)
setProxyIPv6SupportMap(newProxyIPv6SupportMap)
})
}
@ -201,7 +181,6 @@ export const useProxies = () => {
const nodeName = getNowProxyNodeName(proxyName)
setProxyLatencyTestingMap(nodeName, async () => {
await proxyIPv6SupportTest(nodeName, provider)
try {
const { delay } = await proxyLatencyTestAPI(
nodeName,
@ -225,7 +204,6 @@ export const useProxies = () => {
const proxyGroupLatencyTest = async (proxyGroupName: string) => {
setProxyGroupLatencyTestingMap(proxyGroupName, async () => {
await proxyGroupIPv6SupportTest(proxyGroupName)
await proxyGroupLatencyTestAPI(
proxyGroupName,
urlForLatencyTest(),
@ -235,75 +213,6 @@ export const useProxies = () => {
})
}
const proxyIPv6SupportTest = async (proxyName: string, provider: string) => {
const urlForTest = urlForIPv6SupportTest()
if (!urlForTest || urlForTest.length === 0) {
setProxyIPv6SupportMap({})
return
}
let support = false
try {
const { delay } = await proxyLatencyTestAPI(
proxyName,
provider,
urlForTest,
latencyTestTimeoutDuration(),
)
support = delay > latencyQualityMap().NOT_CONNECTED
} catch {
support = false
}
setProxyIPv6SupportMap((supportMap) => ({
...supportMap,
[proxyName]: support,
}))
}
const proxyGroupIPv6SupportTest = async (proxyGroupName: string) => {
const urlForTest = urlForIPv6SupportTest()
if (!urlForTest || urlForTest.length === 0) {
setProxyIPv6SupportMap({})
return
}
try {
const newLatencyMap = await proxyGroupLatencyTestAPI(
proxyGroupName,
urlForTest,
latencyTestTimeoutDuration(),
)
const newSupportMap = Object.fromEntries(
Object.entries(newLatencyMap).map(([nodeName, latency]) => [
getNowProxyNodeName(nodeName),
latency > latencyQualityMap().NOT_CONNECTED,
]),
)
setProxyIPv6SupportMap((supportMap) => ({
...supportMap,
...newSupportMap,
}))
} catch {
const allNodes = proxies().find((p) => p.name === proxyGroupName)?.all
if (!allNodes) {
return
}
setProxyIPv6SupportMap((proxyIPv6SupportMap) => ({
...proxyIPv6SupportMap,
...Object.fromEntries(
allNodes.map((name) => [getNowProxyNodeName(name), false]),
),
}))
}
}
const updateProviderByProviderName = (providerName: string) =>
setUpdatingMap(providerName, async () => {
try {
@ -392,6 +301,5 @@ export const useProxies = () => {
getNowProxyNodeName,
getLatencyByName,
isProxyGroup,
proxyIPv6SupportMap,
}
}