菜单

概述

相关源文件

v2rayN 是一款开源的图形用户界面 (GUI) 客户端,用于通过各种协议管理代理连接。它充当 V2Ray、Xray 和 sing-box 等核心代理实现的前端,为用户提供了一种方便的方式来配置、管理和切换不同的代理服务器。

本文档介绍了 v2rayN 应用程序的整体架构、关键组件和功能。有关特定子系统的详细信息,请参阅本 wiki 中各自的页面。

主要特性和功能

v2rayN 提供以下核心功能:

  • 配置和管理多个服务器配置文件
  • 支持各种代理协议(VMess、VLESS、Shadowsocks、Trojan、SOCKS、HTTP、Hysteria2、TUIC、WireGuard)
  • 服务器列表的订阅管理
  • 系统代理集成
  • 流量路由规则配置
  • 服务器连接的速度测试
  • 跨平台支持 (Windows, Linux, macOS)
  • 多语言支持
  • 应用程序和代理核心的更新

来源: v2rayN/ServiceLib/Global.cs5-73 v2rayN/v2rayN/v2rayN.csproj1-37

系统架构

v2rayN 遵循 MVVM(模型-视图-视图模型)架构模式,并组织成几个关键层:

来源: v2rayN/ServiceLib/Handler/AppHandler.cs1-248 v2rayN/v2rayN/Views/MainWindow.xaml.cs1-471

组件说明

核心组件

CoreHandler

CoreHandler 负责管理代理核心进程的生命周期。它负责启动和停止合适的代理核心(例如 Xray、sing-box),并提供正确的配置。

CoreHandler 还管理:

  • 同时运行多个代理核心(主核心和预服务核心)
  • 速度测试的配置
  • 跨平台进程管理(包括在 Linux 上需要时使用 sudo)

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

ConfigHandler

ConfigHandler 管理应用程序的配置和服务器配置文件。它负责:

  • 加载和保存应用程序配置
  • 管理服务器配置文件数据库
  • 生成特定于核心的配置文件

AppHandler

AppHandler 是一个单例,负责管理应用程序的全局状态、初始化,并提供对常见功能的访问:

  • 应用程序初始化
  • 配置访问
  • 配置文件和订阅的数据库操作
  • 核心类型确定

来源: v2rayN/ServiceLib/Handler/AppHandler.cs1-248

用户界面

主用户界面采用 WPF(Windows Presentation Foundation)构建,遵循 MVVM 模式。UI 支持不同的布局方向:

  • 水平分割
  • 垂直分割
  • 基于选项卡的用户界面

主窗口提供以下功能:

  • 服务器配置文件管理
  • 订阅管理
  • 应用程序设置
  • 路由配置
  • 状态信息

来源: v2rayN/v2rayN/Views/MainWindow.xaml1-427 v2rayN/v2rayN/Views/MainWindow.xaml.cs1-471

数据流

来源: v2rayN/ServiceLib/Handler/CoreHandler.cs66-100 v2rayN/v2rayN/Views/MainWindow.xaml.cs166-250

代理协议支持

v2rayN 通过不同的核心实现支持多种代理协议:

协议核心类型配置类型
VMessXray, v2flyEConfigType.VMess
VLESSXrayEConfigType.VLESS
ShadowsocksXray, sing-boxEConfigType.Shadowsocks
TrojanXray, sing-boxEConfigType.Trojan
SOCKSXray, sing-boxEConfigType.SOCKS
HTTPXray, sing-boxEConfigType.HTTP
Hysteria2sing-boxEConfigType.Hysteria2
TUICsing-boxEConfigType.TUIC
WireGuardsing-boxEConfigType.WireGuard

来源: v2rayN/ServiceLib/Global.cs163-186

跨平台支持

该应用程序支持多种操作系统:

  • Windows:通过 v2rayN 项目提供主要支持
  • Linux/macOS:通过 v2rayN.Desktop 项目支持

特定于平台的代码处理不同的要求:

  • 系统代理配置因平台而异
  • 文件权限管理(尤其是在 Linux 上)
  • 进程管理(在 Linux 上需要时使用 sudo)

来源: v2rayN/ServiceLib/Common/Utils.cs797-863 v2rayN/ServiceLib/Handler/CoreHandler.cs326-406

配置和存储

v2rayN 管理几种类型的配置文件和存储位置:

应用程序还使用 SQLite 来存储:

  • 服务器配置文件 (ProfileItem)
  • 订阅信息 (SubItem)
  • 服务器统计信息 (ServerStatItem)
  • 路由规则 (RoutingItem)
  • DNS 设置 (DNSItem)

来源: v2rayN/ServiceLib/Common/Utils.cs600-794 v2rayN/ServiceLib/Handler/AppHandler.cs126-214

更新机制

v2rayN 包括更新功能,用于:

  • 应用程序本身
  • 核心代理实现(Xray、sing-box 等)
  • GeoIP 和 GeoSite 数据文件

更新从 Global.cs 文件中定义的 GitHub 存储库获取。

来源: v2rayN/ServiceLib/Global.cs498-513 v2rayN/ServiceLib/Global.cs10-13

系统要求

  • Windows 10(版本 10.0.17763 或更高版本)用于 v2rayN
  • .NET 8.0 用于 Windows
  • Linux 或 macOS 用于 v2rayN.Desktop
  • 互联网连接,用于代理功能和更新

来源: v2rayN/v2rayN/v2rayN.csproj1-11

总结

v2rayN 提供了一个用户友好的界面,通过不同的核心实现来管理各种代理协议。它遵循 MVVM 架构模式,并提供全面的代理配置、管理和系统集成功能。模块化设计允许跨平台支持,并可以通过不同的代理协议和核心进行扩展。