Files
VoCat/web/src/components/proxy/shared.ts
T
2026-08-09 05:33:21 +08:00

47 lines
1.1 KiB
TypeScript

import type { UpstreamProxy } from "../../types";
import { tl } from "../../lib/i18n";
export interface LoadError {
message: string;
status?: number;
}
export interface UpstreamForm {
id: string;
name: string;
addr: string;
username: string;
password: string;
enabled: boolean;
}
// Result of the SOCKS5 handshake and UDP Associate connectivity probe.
export interface UpstreamProbeResult {
reachable?: boolean;
handshakeOk?: boolean;
udpAssociateOk?: boolean;
authMethod?: string;
relayAddr?: string;
diagnosis?: string;
hint?: string;
error?: string;
}
export interface UpstreamRow extends UpstreamProxy {
bindingCount: number;
}
export function ipv6Hint(): string {
return tl("IPv6 地址请使用 [IPv6]:port,例如 [2001:db8::1]:1080");
}
export function ipv6AddrError(addr: string): string {
const value = String(addr || "").trim();
if (!value || value.startsWith("[")) return "";
return (value.match(/:/g) || []).length > 1 ? ipv6Hint() : "";
}
export function emptyUpstreamForm(): UpstreamForm {
return { id: "", name: "", addr: "", username: "", password: "", enabled: true };
}