mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-01-29 08:45:41 +08:00
This commit implements the automatic lightweight mode feature with timer functionality: - Rename configuration properties from auto_enter_lite_mode to enable_auto_light_weight_mode and auto_enter_lite_mode_delay to auto_light_weight_minutes for better clarity - Add window event listeners to detect when window is closed or gets focus - Implement timer system to automatically enter lightweight mode after configured time - Remove exit_lightweight_mode function as it's no longer needed with the new implementation - Update UI components to reflect the new property names - Add logging for lightweight mode operations - Initialize lightweight mode based on user configuration at startup The feature now allows users to set a timer that will automatically enter lightweight mode after closing the main window, which can be cancelled by focusing the window again.
808 lines
17 KiB
TypeScript
808 lines
17 KiB
TypeScript
type Platform =
|
|
| "aix"
|
|
| "android"
|
|
| "darwin"
|
|
| "freebsd"
|
|
| "haiku"
|
|
| "linux"
|
|
| "openbsd"
|
|
| "sunos"
|
|
| "win32"
|
|
| "cygwin"
|
|
| "netbsd";
|
|
|
|
/**
|
|
* defines in `vite.config.ts`
|
|
*/
|
|
declare const OS_PLATFORM: Platform;
|
|
|
|
/**
|
|
* Some interface for clash api
|
|
*/
|
|
interface IConfigData {
|
|
port: number;
|
|
mode: string;
|
|
ipv6: boolean;
|
|
"socket-port": number;
|
|
"allow-lan": boolean;
|
|
"log-level": string;
|
|
"mixed-port": number;
|
|
"redir-port": number;
|
|
"socks-port": number;
|
|
"tproxy-port": number;
|
|
"external-controller": string;
|
|
secret: string;
|
|
"unified-delay": boolean;
|
|
tun: {
|
|
stack: string;
|
|
device: string;
|
|
"auto-route": boolean;
|
|
"auto-detect-interface": boolean;
|
|
"dns-hijack": string[];
|
|
"strict-route": boolean;
|
|
mtu: number;
|
|
};
|
|
dns?: {
|
|
enable?: boolean;
|
|
listen?: string;
|
|
"enhanced-mode"?: "fake-ip" | "redir-host";
|
|
"fake-ip-range"?: string;
|
|
"fake-ip-filter"?: string[];
|
|
"fake-ip-filter-mode"?: "blacklist" | "whitelist";
|
|
"prefer-h3"?: boolean;
|
|
"respect-rules"?: boolean;
|
|
nameserver?: string[];
|
|
fallback?: string[];
|
|
"default-nameserver"?: string[];
|
|
"proxy-server-nameserver"?: string[];
|
|
"direct-nameserver"?: string[];
|
|
"direct-nameserver-follow-policy"?: boolean;
|
|
"nameserver-policy"?: Record<string, any>;
|
|
"use-hosts"?: boolean;
|
|
"use-system-hosts"?: boolean;
|
|
"fallback-filter"?: {
|
|
geoip?: boolean;
|
|
"geoip-code"?: string;
|
|
ipcidr?: string[];
|
|
domain?: string[];
|
|
};
|
|
};
|
|
}
|
|
|
|
interface IRuleItem {
|
|
type: string;
|
|
payload: string;
|
|
proxy: string;
|
|
}
|
|
|
|
interface IProxyItem {
|
|
name: string;
|
|
type: string;
|
|
udp: boolean;
|
|
xudp: boolean;
|
|
tfo: boolean;
|
|
mptcp: boolean;
|
|
smux: boolean;
|
|
history: {
|
|
time: string;
|
|
delay: number;
|
|
}[];
|
|
testUrl?: string;
|
|
all?: string[];
|
|
now?: string;
|
|
hidden?: boolean;
|
|
icon?: string;
|
|
provider?: string; // 记录是否来自provider
|
|
fixed?: string; // 记录固定(优先)的节点
|
|
}
|
|
|
|
type IProxyGroupItem = Omit<IProxyItem, "all"> & {
|
|
all: IProxyItem[];
|
|
};
|
|
|
|
interface IProxyProviderItem {
|
|
name: string;
|
|
type: string;
|
|
proxies: IProxyItem[];
|
|
updatedAt: string;
|
|
vehicleType: string;
|
|
subscriptionInfo?: {
|
|
Upload: number;
|
|
Download: number;
|
|
Total: number;
|
|
Expire: number;
|
|
};
|
|
}
|
|
|
|
interface IRuleProviderItem {
|
|
name: string;
|
|
behavior: string;
|
|
format: string;
|
|
ruleCount: number;
|
|
type: string;
|
|
updatedAt: string;
|
|
vehicleType: string;
|
|
}
|
|
|
|
interface ITrafficItem {
|
|
up: number;
|
|
down: number;
|
|
}
|
|
|
|
interface ILogItem {
|
|
type: string;
|
|
time?: string;
|
|
payload: string;
|
|
}
|
|
|
|
interface IConnectionsItem {
|
|
id: string;
|
|
metadata: {
|
|
network: string;
|
|
type: string;
|
|
host: string;
|
|
sourceIP: string;
|
|
sourcePort: string;
|
|
destinationPort: string;
|
|
destinationIP?: string;
|
|
remoteDestination?: string;
|
|
process?: string;
|
|
processPath?: string;
|
|
};
|
|
upload: number;
|
|
download: number;
|
|
start: string;
|
|
chains: string[];
|
|
rule: string;
|
|
rulePayload: string;
|
|
curUpload?: number; // upload speed, calculate at runtime
|
|
curDownload?: number; // download speed, calculate at runtime
|
|
}
|
|
|
|
interface IConnections {
|
|
downloadTotal: number;
|
|
uploadTotal: number;
|
|
connections: IConnectionsItem[];
|
|
}
|
|
|
|
/**
|
|
* Some interface for command
|
|
*/
|
|
|
|
interface IClashInfo {
|
|
// status: string;
|
|
mixed_port?: number; // clash mixed port
|
|
socks_port?: number; // clash socks port
|
|
redir_port?: number; // clash redir port
|
|
tproxy_port?: number; // clash tproxy port
|
|
port?: number; // clash http port
|
|
server?: string; // external-controller
|
|
secret?: string;
|
|
}
|
|
|
|
interface IProfileItem {
|
|
uid: string;
|
|
type?: "local" | "remote" | "merge" | "script";
|
|
name?: string;
|
|
desc?: string;
|
|
file?: string;
|
|
url?: string;
|
|
updated?: number;
|
|
selected?: {
|
|
name?: string;
|
|
now?: string;
|
|
}[];
|
|
extra?: {
|
|
upload: number;
|
|
download: number;
|
|
total: number;
|
|
expire: number;
|
|
};
|
|
option?: IProfileOption;
|
|
home?: string;
|
|
}
|
|
|
|
interface IProfileOption {
|
|
user_agent?: string;
|
|
with_proxy?: boolean;
|
|
self_proxy?: boolean;
|
|
update_interval?: number;
|
|
danger_accept_invalid_certs?: boolean;
|
|
merge?: string;
|
|
script?: string;
|
|
rules?: string;
|
|
proxies?: string;
|
|
groups?: string;
|
|
}
|
|
|
|
interface IProfilesConfig {
|
|
current?: string;
|
|
valid?: string[];
|
|
items?: IProfileItem[];
|
|
}
|
|
|
|
interface IVergeTestItem {
|
|
uid: string;
|
|
name?: string;
|
|
icon?: string;
|
|
url: string;
|
|
}
|
|
interface IAddress {
|
|
V4?: {
|
|
ip: string;
|
|
broadcast?: string;
|
|
netmask?: string;
|
|
};
|
|
V6?: {
|
|
ip: string;
|
|
broadcast?: string;
|
|
netmask?: string;
|
|
};
|
|
}
|
|
interface INetworkInterface {
|
|
name: string;
|
|
addr: IAddress[];
|
|
mac_addr?: string;
|
|
index: number;
|
|
}
|
|
|
|
interface ISeqProfileConfig {
|
|
prepend: [];
|
|
append: [];
|
|
delete: [];
|
|
}
|
|
|
|
interface IProxyGroupConfig {
|
|
name: string;
|
|
type: "select" | "url-test" | "fallback" | "load-balance" | "relay";
|
|
proxies?: string[];
|
|
use?: string[];
|
|
url?: string;
|
|
interval?: number;
|
|
lazy?: boolean;
|
|
timeout?: number;
|
|
"max-failed-times"?: number;
|
|
"disable-udp"?: boolean;
|
|
"interface-name": string;
|
|
"routing-mark"?: number;
|
|
"include-all"?: boolean;
|
|
"include-all-proxies"?: boolean;
|
|
"include-all-providers"?: boolean;
|
|
filter?: string;
|
|
"exclude-filter"?: string;
|
|
"exclude-type"?: string;
|
|
"expected-status"?: string;
|
|
hidden?: boolean;
|
|
icon?: string;
|
|
}
|
|
|
|
interface WsOptions {
|
|
path?: string;
|
|
headers?: {
|
|
[key: string]: string;
|
|
};
|
|
"max-early-data"?: number;
|
|
"early-data-header-name"?: string;
|
|
"v2ray-http-upgrade"?: boolean;
|
|
"v2ray-http-upgrade-fast-open"?: boolean;
|
|
}
|
|
|
|
interface HttpOptions {
|
|
method?: string;
|
|
path?: string[];
|
|
headers?: {
|
|
[key: string]: string[];
|
|
};
|
|
}
|
|
|
|
interface H2Options {
|
|
path?: string;
|
|
host?: string;
|
|
}
|
|
|
|
interface GrpcOptions {
|
|
"grpc-service-name"?: string;
|
|
}
|
|
|
|
interface RealityOptions {
|
|
"public-key"?: string;
|
|
"short-id"?: string;
|
|
}
|
|
type ClientFingerprint =
|
|
| "chrome"
|
|
| "firefox"
|
|
| "safari"
|
|
| "iOS"
|
|
| "android"
|
|
| "edge"
|
|
| "360"
|
|
| "qq"
|
|
| "random";
|
|
type NetworkType = "ws" | "http" | "h2" | "grpc" | "tcp";
|
|
type CipherType =
|
|
| "none"
|
|
| "auto"
|
|
| "dummy"
|
|
| "aes-128-gcm"
|
|
| "aes-192-gcm"
|
|
| "aes-256-gcm"
|
|
| "lea-128-gcm"
|
|
| "lea-192-gcm"
|
|
| "lea-256-gcm"
|
|
| "aes-128-gcm-siv"
|
|
| "aes-256-gcm-siv"
|
|
| "2022-blake3-aes-128-gcm"
|
|
| "2022-blake3-aes-256-gcm"
|
|
| "aes-128-cfb"
|
|
| "aes-192-cfb"
|
|
| "aes-256-cfb"
|
|
| "aes-128-ctr"
|
|
| "aes-192-ctr"
|
|
| "aes-256-ctr"
|
|
| "chacha20"
|
|
| "chacha20-ietf"
|
|
| "chacha20-ietf-poly1305"
|
|
| "2022-blake3-chacha20-poly1305"
|
|
| "rabbit128-poly1305"
|
|
| "xchacha20-ietf-poly1305"
|
|
| "xchacha20"
|
|
| "aegis-128l"
|
|
| "aegis-256"
|
|
| "aez-384"
|
|
| "deoxys-ii-256-128"
|
|
| "rc4-md5";
|
|
// base
|
|
interface IProxyBaseConfig {
|
|
tfo?: boolean;
|
|
mptcp?: boolean;
|
|
"interface-name"?: string;
|
|
"routing-mark"?: number;
|
|
"ip-version"?: "dual" | "ipv4" | "ipv6" | "ipv4-prefer" | "ipv6-prefer";
|
|
"dialer-proxy"?: string;
|
|
}
|
|
// direct
|
|
interface IProxyDirectConfig extends IProxyBaseConfig {
|
|
name: string;
|
|
type: "direct";
|
|
}
|
|
// dns
|
|
interface IProxyDnsConfig extends IProxyBaseConfig {
|
|
name: string;
|
|
type: "dns";
|
|
}
|
|
// http
|
|
interface IProxyHttpConfig extends IProxyBaseConfig {
|
|
name: string;
|
|
type: "http";
|
|
server?: string;
|
|
port?: number;
|
|
username?: string;
|
|
password?: string;
|
|
tls?: boolean;
|
|
sni?: string;
|
|
"skip-cert-verify"?: boolean;
|
|
fingerprint?: string;
|
|
headers?: {
|
|
[key: string]: string;
|
|
};
|
|
}
|
|
// socks5
|
|
interface IProxySocks5Config extends IProxyBaseConfig {
|
|
name: string;
|
|
type: "socks5";
|
|
server?: string;
|
|
port?: number;
|
|
username?: string;
|
|
password?: string;
|
|
tls?: boolean;
|
|
udp?: boolean;
|
|
"skip-cert-verify"?: boolean;
|
|
fingerprint?: string;
|
|
}
|
|
// ssh
|
|
interface IProxySshConfig extends IProxyBaseConfig {
|
|
name: string;
|
|
type: "ssh";
|
|
server?: string;
|
|
port?: number;
|
|
username?: string;
|
|
password?: string;
|
|
"private-key"?: string;
|
|
"private-key-passphrase"?: string;
|
|
"host-key"?: string;
|
|
"host-key-algorithms"?: string;
|
|
}
|
|
// trojan
|
|
interface IProxyTrojanConfig extends IProxyBaseConfig {
|
|
name: string;
|
|
type: "trojan";
|
|
server?: string;
|
|
port?: number;
|
|
password?: string;
|
|
alpn?: string[];
|
|
sni?: string;
|
|
"skip-cert-verify"?: boolean;
|
|
fingerprint?: string;
|
|
udp?: boolean;
|
|
network?: NetworkType;
|
|
"reality-opts"?: RealityOptions;
|
|
"grpc-opts"?: GrpcOptions;
|
|
"ws-opts"?: WsOptions;
|
|
"ss-opts"?: {
|
|
enabled?: boolean;
|
|
method?: string;
|
|
password?: string;
|
|
};
|
|
"client-fingerprint"?: ClientFingerprint;
|
|
}
|
|
// tuic
|
|
interface IProxyTuicConfig extends IProxyBaseConfig {
|
|
name: string;
|
|
type: "tuic";
|
|
server?: string;
|
|
port?: number;
|
|
token?: string;
|
|
uuid?: string;
|
|
password?: string;
|
|
ip?: string;
|
|
"heartbeat-interval"?: number;
|
|
alpn?: string[];
|
|
"reduce-rtt"?: boolean;
|
|
"request-timeout"?: number;
|
|
"udp-relay-mode"?: string;
|
|
"congestion-controller"?: string;
|
|
"disable-sni"?: boolean;
|
|
"max-udp-relay-packet-size"?: number;
|
|
"fast-open"?: boolean;
|
|
"max-open-streams"?: number;
|
|
cwnd?: number;
|
|
"skip-cert-verify"?: boolean;
|
|
fingerprint?: string;
|
|
ca?: string;
|
|
"ca-str"?: string;
|
|
"recv-window-conn"?: number;
|
|
"recv-window"?: number;
|
|
"disable-mtu-discovery"?: boolean;
|
|
"max-datagram-frame-size"?: number;
|
|
sni?: string;
|
|
"udp-over-stream"?: boolean;
|
|
"udp-over-stream-version"?: number;
|
|
}
|
|
// vless
|
|
interface IProxyVlessConfig extends IProxyBaseConfig {
|
|
name: string;
|
|
type: "vless";
|
|
server?: string;
|
|
port?: number;
|
|
uuid?: string;
|
|
flow?: string;
|
|
tls?: boolean;
|
|
alpn?: string[];
|
|
udp?: boolean;
|
|
"packet-addr"?: boolean;
|
|
xudp?: boolean;
|
|
"packet-encoding"?: string;
|
|
network?: NetworkType;
|
|
"reality-opts"?: RealityOptions;
|
|
"http-opts"?: HttpOptions;
|
|
"h2-opts"?: H2Options;
|
|
"grpc-opts"?: GrpcOptions;
|
|
"ws-opts"?: WsOptions;
|
|
"ws-path"?: string;
|
|
"ws-headers"?: {
|
|
[key: string]: string;
|
|
};
|
|
"skip-cert-verify"?: boolean;
|
|
fingerprint?: string;
|
|
servername?: string;
|
|
"client-fingerprint"?: ClientFingerprint;
|
|
smux?: boolean;
|
|
}
|
|
// vmess
|
|
interface IProxyVmessConfig extends IProxyBaseConfig {
|
|
name: string;
|
|
type: "vmess";
|
|
server?: string;
|
|
port?: number;
|
|
uuid?: string;
|
|
alterId?: number;
|
|
cipher?: CipherType;
|
|
udp?: boolean;
|
|
network?: NetworkType;
|
|
tls?: boolean;
|
|
alpn?: string[];
|
|
"skip-cert-verify"?: boolean;
|
|
fingerprint?: string;
|
|
servername?: string;
|
|
"reality-opts"?: RealityOptions;
|
|
"http-opts"?: HttpOptions;
|
|
"h2-opts"?: H2Options;
|
|
"grpc-opts"?: GrpcOptions;
|
|
"ws-opts"?: WsOptions;
|
|
"packet-addr"?: boolean;
|
|
xudp?: boolean;
|
|
"packet-encoding"?: string;
|
|
"global-padding"?: boolean;
|
|
"authenticated-length"?: boolean;
|
|
"client-fingerprint"?: ClientFingerprint;
|
|
smux?: boolean;
|
|
}
|
|
interface WireGuardPeerOptions {
|
|
server?: string;
|
|
port?: number;
|
|
"public-key"?: string;
|
|
"pre-shared-key"?: string;
|
|
reserved?: number[];
|
|
"allowed-ips"?: string[];
|
|
}
|
|
// wireguard
|
|
interface IProxyWireguardConfig extends IProxyBaseConfig, WireGuardPeerOptions {
|
|
name: string;
|
|
type: "wireguard";
|
|
ip?: string;
|
|
ipv6?: string;
|
|
"private-key"?: string;
|
|
workers?: number;
|
|
mtu?: number;
|
|
udp?: boolean;
|
|
"persistent-keepalive"?: number;
|
|
peers?: WireGuardPeerOptions[];
|
|
"remote-dns-resolve"?: boolean;
|
|
dns?: string[];
|
|
"refresh-server-ip-interval"?: number;
|
|
}
|
|
// hysteria
|
|
interface IProxyHysteriaConfig extends IProxyBaseConfig {
|
|
name: string;
|
|
type: "hysteria";
|
|
server?: string;
|
|
port?: number;
|
|
ports?: string;
|
|
protocol?: string;
|
|
"obfs-protocol"?: string;
|
|
up?: string;
|
|
"up-speed"?: number;
|
|
down?: string;
|
|
"down-speed"?: number;
|
|
auth?: string;
|
|
"auth-str"?: string;
|
|
obfs?: string;
|
|
sni?: string;
|
|
"skip-cert-verify"?: boolean;
|
|
fingerprint?: string;
|
|
alpn?: string[];
|
|
ca?: string;
|
|
"ca-str"?: string;
|
|
"recv-window-conn"?: number;
|
|
"recv-window"?: number;
|
|
"disable-mtu-discovery"?: boolean;
|
|
"fast-open"?: boolean;
|
|
"hop-interval"?: number;
|
|
}
|
|
// hysteria2
|
|
interface IProxyHysteria2Config extends IProxyBaseConfig {
|
|
name: string;
|
|
type: "hysteria2";
|
|
server?: string;
|
|
port?: number;
|
|
ports?: string;
|
|
"hop-interval"?: number;
|
|
protocol?: string;
|
|
"obfs-protocol"?: string;
|
|
up?: string;
|
|
down?: string;
|
|
password?: string;
|
|
obfs?: string;
|
|
"obfs-password"?: string;
|
|
sni?: string;
|
|
"skip-cert-verify"?: boolean;
|
|
fingerprint?: string;
|
|
alpn?: string[];
|
|
ca?: string;
|
|
"ca-str"?: string;
|
|
cwnd?: number;
|
|
"udp-mtu"?: number;
|
|
}
|
|
// shadowsocks
|
|
interface IProxyShadowsocksConfig extends IProxyBaseConfig {
|
|
name: string;
|
|
type: "ss";
|
|
server?: string;
|
|
port?: number;
|
|
password?: string;
|
|
cipher?: CipherType;
|
|
udp?: boolean;
|
|
plugin?: "obfs" | "v2ray-plugin" | "shadow-tls" | "restls";
|
|
"plugin-opts"?: {
|
|
mode?: string;
|
|
host?: string;
|
|
password?: string;
|
|
path?: string;
|
|
tls?: string;
|
|
fingerprint?: string;
|
|
headers?: {
|
|
[key: string]: string;
|
|
};
|
|
"skip-cert-verify"?: boolean;
|
|
version?: number;
|
|
mux?: boolean;
|
|
"v2ray-http-upgrade"?: boolean;
|
|
"v2ray-http-upgrade-fast-open"?: boolean;
|
|
"version-hint"?: string;
|
|
"restls-script"?: string;
|
|
};
|
|
"udp-over-tcp"?: boolean;
|
|
"udp-over-tcp-version"?: number;
|
|
"client-fingerprint"?: ClientFingerprint;
|
|
smux?: boolean;
|
|
}
|
|
// shadowsocksR
|
|
interface IProxyshadowsocksRConfig extends IProxyBaseConfig {
|
|
name: string;
|
|
type: "ssr";
|
|
server?: string;
|
|
port?: number;
|
|
password?: string;
|
|
cipher?: CipherType;
|
|
obfs?: string;
|
|
"obfs-param"?: string;
|
|
protocol?: string;
|
|
"protocol-param"?: string;
|
|
udp?: boolean;
|
|
}
|
|
// sing-mux
|
|
interface IProxySmuxConfig {
|
|
smux?: {
|
|
enabled?: boolean;
|
|
protocol?: "smux" | "yamux" | "h2mux";
|
|
"max-connections"?: number;
|
|
"min-streams"?: number;
|
|
"max-streams"?: number;
|
|
padding?: boolean;
|
|
statistic?: boolean;
|
|
"only-tcp"?: boolean;
|
|
"brutal-opts"?: {
|
|
enabled?: boolean;
|
|
up?: string;
|
|
down?: string;
|
|
};
|
|
};
|
|
}
|
|
// snell
|
|
interface IProxySnellConfig extends IProxyBaseConfig {
|
|
name: string;
|
|
type: "snell";
|
|
server?: string;
|
|
port?: number;
|
|
psk?: string;
|
|
udp?: boolean;
|
|
version?: number;
|
|
"obfs-opts"?: {};
|
|
}
|
|
interface IProxyConfig
|
|
extends IProxyBaseConfig,
|
|
IProxyDirectConfig,
|
|
IProxyDnsConfig,
|
|
IProxyHttpConfig,
|
|
IProxySocks5Config,
|
|
IProxySshConfig,
|
|
IProxyTrojanConfig,
|
|
IProxyTuicConfig,
|
|
IProxyVlessConfig,
|
|
IProxyVmessConfig,
|
|
IProxyWireguardConfig,
|
|
IProxyHysteriaConfig,
|
|
IProxyHysteria2Config,
|
|
IProxyShadowsocksConfig,
|
|
IProxyshadowsocksRConfig,
|
|
IProxySmuxConfig,
|
|
IProxySnellConfig {
|
|
type:
|
|
| "ss"
|
|
| "ssr"
|
|
| "direct"
|
|
| "dns"
|
|
| "snell"
|
|
| "http"
|
|
| "trojan"
|
|
| "hysteria"
|
|
| "hysteria2"
|
|
| "tuic"
|
|
| "wireguard"
|
|
| "ssh"
|
|
| "socks5"
|
|
| "vmess"
|
|
| "vless";
|
|
}
|
|
|
|
interface IVergeConfig {
|
|
app_log_level?: "trace" | "debug" | "info" | "warn" | "error" | string;
|
|
language?: string;
|
|
tray_event?:
|
|
| "main_window"
|
|
| "tray_menu"
|
|
| "system_proxy"
|
|
| "tun_mode"
|
|
| string;
|
|
env_type?: "bash" | "cmd" | "powershell" | "fish" | string;
|
|
startup_script?: string;
|
|
start_page?: string;
|
|
clash_core?: string;
|
|
theme_mode?: "light" | "dark" | "system";
|
|
traffic_graph?: boolean;
|
|
enable_memory_usage?: boolean;
|
|
enable_group_icon?: boolean;
|
|
menu_icon?: "monochrome" | "colorful" | "disable";
|
|
tray_icon?: "monochrome" | "colorful";
|
|
common_tray_icon?: boolean;
|
|
sysproxy_tray_icon?: boolean;
|
|
tun_tray_icon?: boolean;
|
|
enable_tray_speed?: boolean;
|
|
enable_tun_mode?: boolean;
|
|
enable_auto_light_weight_mode?: boolean;
|
|
auto_light_weight_minutes?: number;
|
|
enable_auto_launch?: boolean;
|
|
enable_silent_start?: boolean;
|
|
enable_system_proxy?: boolean;
|
|
enable_global_hotkey?: boolean;
|
|
enable_dns_settings?: boolean;
|
|
proxy_auto_config?: boolean;
|
|
pac_file_content?: string;
|
|
enable_random_port?: boolean;
|
|
verge_mixed_port?: number;
|
|
verge_socks_port?: number;
|
|
verge_redir_port?: number;
|
|
verge_tproxy_port?: number;
|
|
verge_port?: number;
|
|
verge_redir_enabled?: boolean;
|
|
verge_tproxy_enabled?: boolean;
|
|
verge_socks_enabled?: boolean;
|
|
verge_http_enabled?: boolean;
|
|
enable_proxy_guard?: boolean;
|
|
enable_bypass_check?: boolean;
|
|
use_default_bypass?: boolean;
|
|
proxy_guard_duration?: number;
|
|
system_proxy_bypass?: string;
|
|
web_ui_list?: string[];
|
|
hotkeys?: string[];
|
|
theme_setting?: {
|
|
primary_color?: string;
|
|
secondary_color?: string;
|
|
primary_text?: string;
|
|
secondary_text?: string;
|
|
info_color?: string;
|
|
error_color?: string;
|
|
warning_color?: string;
|
|
success_color?: string;
|
|
font_family?: string;
|
|
css_injection?: string;
|
|
};
|
|
auto_close_connection?: boolean;
|
|
auto_check_update?: boolean;
|
|
default_latency_test?: string;
|
|
default_latency_timeout?: number;
|
|
enable_builtin_enhanced?: boolean;
|
|
auto_log_clean?: 0 | 1 | 2 | 3;
|
|
proxy_layout_column?: number;
|
|
test_list?: IVergeTestItem[];
|
|
webdav_url?: string;
|
|
webdav_username?: string;
|
|
webdav_password?: string;
|
|
home_cards?: Record<string, boolean>;
|
|
}
|
|
|
|
interface IWebDavFile {
|
|
filename: string;
|
|
href: string;
|
|
last_modified: string;
|
|
content_length: number;
|
|
content_type: string;
|
|
tag: string;
|
|
}
|
|
|
|
interface IWebDavConfig {
|
|
url: string;
|
|
username: string;
|
|
password: string;
|
|
}
|