菜单

配置文件增强

相关源文件

Clash Verge Rev 中的 Profile Enhancement (配置文件增强) 是一个复杂的系统,它允许用户在标准配置文件提供的基本设置之外,修改、扩展和自定义其代理配置。该系统通过合并配置、应用 JavaScript 转换和 TUN 模式等特殊增强来实现高级自定义。

Profile Enhancement 概述

Profile Enhancement 的工作原理是接收一个基础配置文件,并应用一系列转换来生成 Mihomo (Clash) 核心使用的最终配置。这些转换遵循特定的顺序,可以修改配置的任何方面。

来源: src-tauri/src/enhance/mod.rs12-286

增强类型

Clash Verge Rev 支持多种配置文件增强类型,每种类型在配置自定义过程中都起到特定作用。

1. 合并增强 (Merge Enhancement)

合并增强允许合并多个配置文件或将特定设置添加到基础配置中。这对于将通用设置应用到多个配置文件非常有用。

2. 脚本增强 (Script Enhancement)

脚本增强使用 JavaScript 以编程方式修改配置。这提供了最大的灵活性,允许根据条件进行复杂的转换和动态调整。

3. 规则增强 (Rules Enhancement)

规则增强专门针对配置的 rules 部分,允许用户添加、删除或修改代理路由规则。

4. 代理增强 (Proxies Enhancement)

代理增强侧重于修改 proxies 部分,使用户能够添加或自定义代理服务器。

5. 组增强 (Groups Enhancement)

组增强修改 proxy-groups 部分,允许用户将代理组织成具有特定选择策略的组。

来源: src-tauri/src/config/prfitem.rs11-56 src-tauri/src/config/prfitem.rs72-107

增强流程

增强过程遵循特定的顺序,以确保所有修改都得到正确应用。

  1. 加载基础配置:系统从当前配置文件的配置开始。
  2. 应用全局增强:首先应用全局合并和脚本增强。
  3. 应用特定于配置文件的增强:
    • 规则增强
    • 代理增强
    • 组增强
    • 合并增强
    • 脚本增强
  4. 与默认配置合并:与 clash_config 的默认设置合并。
  5. 应用内置脚本:执行系统脚本以实现兼容性和修复。
  6. 配置 TUN 模式:如果启用了 TUN 模式,将进行特殊处理。
  7. 排序和最终确定:对配置进行排序和最终确定。

来源: src-tauri/src/enhance/mod.rs17-285

增强实现细节

核心增强函数

增强过程的主入口是 enhance 模块中的 enhance() 函数。此函数

  1. 从不同来源检索配置和设置
  2. 按顺序应用增强
  3. 返回最终配置、包含的密钥和脚本执行日志
enhance() -> (Mapping, Vec<String>, HashMap<String, ResultLog>)

来源: src-tauri/src/enhance/mod.rs17-285

链项目和链类型

Profile 增强以“链项目”的形式表示,具有不同的类型。

  • ChainType::Merge - 用于合并增强
  • ChainType::Script - 用于脚本增强
  • ChainType::Rules - 用于规则增强
  • ChainType::Proxies - 用于代理增强
  • ChainType::Groups - 用于组增强

来源: src-tauri/src/enhance/mod.rs8-9 src-tauri/src/enhance/chain.rs (推断)

TUN 模式增强

TUN 模式由于其对系统网络的影响,需要特殊处理。 tun 模块中的 use_tun 函数处理此配置。

TUN 配置流程

来源: src-tauri/src/enhance/tun.rs21-80

当启用 TUN 模式时,增强功能会

  1. 检查当前的 DNS 配置模式(enhanced-mode)。
  2. 如果在“fake-ip”模式下使用,则配置 DNS 设置。
  3. 修改 macOS 上的系统 DNS。
  4. 在最终配置中更新 TUN 配置。

来源: src-tauri/src/enhance/tun.rs21-80

配置文件创建和增强选项

创建配置文件时,系统会自动创建相关的增强项目。

来源: src-tauri/src/config/prfitem.rs135-226 src-tauri/src/config/prfitem.rs230-426

对于本地和远程配置文件,系统会

  1. 检查是否指定了增强选项。
  2. 使用默认模板创建缺失的增强项目。
  3. 通过 option 字段将增强项目链接到配置文件。

来源: src-tauri/src/config/prfitem.rs176-203 src-tauri/src/config/prfitem.rs376-402

增强模板和函数

每种增强类型都有特定的模板和函数用于创建和应用增强。

增强类型创建函数模板常量增强应用
合并from_merge()ITEM_MERGEITEM_MERGE_EMPTYuse_merge()
脚本from_script()ITEM_SCRIPTuse_script()
规则from_rules()ITEM_RULESuse_seq() 配合 "rules"
代理from_proxies()ITEM_PROXIESuse_seq() 配合 "proxies"
分组任务from_groups()ITEM_GROUPSuse_seq() 配合 "proxy-groups"

来源: src-tauri/src/config/prfitem.rs430-541 src-tauri/src/enhance/mod.rs144-195

配置文件增强的用户界面

Profile Viewer 组件提供了创建和编辑配置文件的界面,包括设置增强选项。

来源: src/components/profile/profile-viewer.tsx1-344

TUN 模式的特殊处理

TUN 模式设置有一个专用的 UI 组件,允许配置:

  1. 堆栈模式 (gvisor, system, mixed)
  2. 设备名称
  3. 自动路由设置
  4. 自动检测接口设置
  5. DNS 劫持设置
  6. 严格路由设置
  7. MTU 值

更改 TUN 设置后,将触发配置文件增强过程以应用更改。

来源: src/components/setting/mods/tun-viewer.tsx1-231

与配置系统的集成

配置文件增强系统与配置系统紧密集成。

  1. 配置文件增强以独立文件的形式存储在 profiles 目录中。
  2. 配置文件通过 option 字段引用这些增强。
  3. 选择配置文件后,其增强会按顺序应用。
  4. 增强后的配置由 Mihomo 核心使用。

来源: src-tauri/src/config/profiles.rs1-489 src-tauri/src/enhance/mod.rs17-285

结论

Clash Verge Rev 中的 Profile Enhancement 系统提供了一种强大而灵活的方式来定制代理配置。通过支持多种增强类型和结构化的增强流程,用户可以在保持组织性和清晰性的同时创建复杂的配置。

该系统是 Clash Verge Rev 有别于其他 Clash GUI 客户端的关键特性之一,它使高级用户能够根据特定需求微调其代理设置,同时为经验较少льзова 提供合理的默认设置。