菜单

核心组件

相关源文件

介绍

v2rayN 中的核心组件是管理代理配置、控制核心进程以及提供应用程序基本功能的底层服务和处理程序。这些组件独立于用户界面运行,构成了应用程序的引擎。有关用户界面层的信息,请参阅 用户界面

核心组件架构

下图说明了主要核心组件及其关系

来源: ServiceLib/Handler/CoreHandler.cs ServiceLib/Handler/ConfigHandler.cs ServiceLib/Handler/AppHandler.cs ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs ServiceLib/Services/CoreConfig/CoreConfigClashService.cs

Application Handler (AppHandler)

AppHandler 是一个单例,充当应用程序的中央协调器,负责管理应用程序状态和初始化其他组件。

主要职责

  • 初始化应用程序环境
  • 管理应用程序状态
  • 提供对配置数据的访问
  • 管理 SQLite 数据库连接
  • 确定配置的适用核心类型

来源: ServiceLib/Handler/AppHandler.cs1-247

Configuration Handler (ConfigHandler)

ConfigHandler 管理 v2rayN 的所有配置方面,包括应用程序设置和服务器配置文件。

主要职责

  • 加载和保存应用程序配置文件
  • 管理各种类型的服务器配置文件
  • 设置默认服务器
  • 排序和去重服务器列表

来源: ServiceLib/Handler/ConfigHandler.cs1-1024

ConfigHandler 加载应用程序配置文件(guiNConfig.json)并管理存储在 SQLite 中的服务器配置文件。它提供了一套丰富的方法来操作服务器配置文件,包括对每种支持的协议类型的专用处理程序。

Core Handler (CoreHandler)

CoreHandler 负责管理代理核心进程。它控制这些进程的生命周期,包括启动、监控和停止它们。

主要职责

  • 初始化核心环境
  • 使用适当的配置启动代理核心进程
  • 监控进程状态和输出
  • 在需要时停止进程
  • 支持速度测试功能
  • 处理特定于平台的行为

来源: ServiceLib/Handler/CoreHandler.cs1-409

CoreHandler 通过几个关键方法管理代理核心进程

  • Init(): 设置环境变量并准备核心二进制文件
  • LoadCore(): 为选定的配置文件生成并加载配置
  • CoreStop(): 终止正在运行的核心进程
  • LoadCoreConfigSpeedtest(): 创建用于速度测试的特殊配置

特定于平台的处理是 CoreHandler 的一个关键方面,它为 Windows、Linux 和 macOS 提供了特殊代码,特别是对于通常需要提升权限的 TUN 模式。

核心配置服务

这些服务为不同的核心类型生成代理配置。每种服务都实现类似的功能,但根据其特定核心类型的要求进行定制

通用结构

所有核心配置服务共享一个类似的模式

来源: ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs ServiceLib/Services/CoreConfig/CoreConfigClashService.cs

V2ray 配置服务

为 V2Ray/Xray 核心生成配置,处理

  • 日志配置
  • 入站连接(SOCKS、HTTP)
  • 出站连接(各种协议)
  • 路由规则
  • DNS 设置
  • Mux 设置

主要方法包括

  • GenerateClientConfigContent(): 创建标准的客户端配置
  • GenerateClientSpeedtestConfig(): 创建用于速度测试的配置
  • GenerateClientMultipleLoadConfig(): 为多个服务器创建配置

来源: ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs1-420

Singbox 配置服务

为 Sing-box 核心生成配置,处理

  • 日志配置
  • 入站连接
  • 出站连接
  • 路由规则
  • DNS 设置
  • TUN 模式设置
  • 实验性功能
  • 规则集转换

来源: ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs1-303

Clash 配置服务

为 Clash 兼容核心生成配置,处理

  • 从其他格式的转换
  • 混合自定义设置
  • 代理组配置
  • TUN 模式设置
  • 日志级别映射

来源: ServiceLib/Services/CoreConfig/CoreConfigClashService.cs1-262

配置数据模型

核心组件使用几个关键数据模型来表示配置信息

V2ray 配置模型

V2rayConfig 类及其相关类代表 V2Ray/Xray 核心的配置结构

来源: ServiceLib/Models/V2rayConfig.cs1-458

全局常量

Global 类提供了应用程序中使用的常量和共享资源

  • 文件名和路径
  • 协议类型和映射
  • 安全设置
  • 网络配置
  • URL 资源
  • 域名策略

来源: ServiceLib/Global.cs1-524

实用函数

Utils 类提供了所有核心组件使用的基本实用方法

  • 文件系统操作
  • 字符串转换函数
  • Base64 编码/解码
  • 不同数据类型的路径管理
  • 平台检测(Windows/Linux/macOS)
  • 端口可用性检查
  • 网络验证

主要方法包括

  • GetPath()GetConfigPath()GetBinPath(): 管理文件路径
  • IsWindows()IsLinux()IsOSX(): 平台检测
  • Base64Encode()Base64Decode(): 编码工具
  • GetFreePort(): 查找可用网络端口
  • IsDomain()IsIPv6(): 网络验证

来源: ServiceLib/Common/Utils.cs1-866

核心进程管理流程

以下图表说明了核心组件如何协同工作以管理代理进程的生命周期

来源: ServiceLib/Handler/CoreHandler.cs ServiceLib/Handler/CoreHandler.cs182-237

结论

v2rayN 的核心组件协同工作,提供应用程序的基本功能。AppHandler 初始化和协调系统,ConfigHandler 管理配置数据,CoreHandler 控制代理进程,Core Configuration Services 为不同的代理类型生成必要的配置文件。

这些组件为应用程序提供了坚实的基础,处理配置管理、进程控制和平台特定行为等复杂操作,同时向用户界面层呈现一致的接口。