Shadowsocks Windows 中的服务器管理系统负责处理代理服务器在运行期间的配置、存储和选择。本页面介绍管理服务器配置的组件、服务器选择算法,以及如何导入和导出服务器。
有关处理这些服务器实际连接的代理服务的信息,请参阅代理服务。有关插件系统与服务器集成的详细信息,请参阅SIP003 插件。
服务器管理系统允许用户添加、编辑、删除和优先设置 Shadowsocks 服务器。每个服务器都需要配置详细信息,例如服务器地址、端口、密码和加密方法。该系统支持以标准 Shadowsocks URL 格式导入/导出服务器,并通过各种策略(负载均衡或高可用性)选择服务器。
来源:shadowsocks-csharp/Model/Server.cs15-50 shadowsocks-csharp/View/ConfigForm.cs shadowsocks-csharp/Controller/Strategy/IStrategy.cs
服务器数据模型在 Server 类中定义,该类封装了连接 Shadowsocks 服务器所需的所有配置参数。
| 属性 | 类型 | 描述 | 默认 |
|---|---|---|---|
| 服务器 | 字符串 | 服务器主机名或 IP 地址 | "" |
| server_port | int | 服务器端口号 | 8388 |
| password | 字符串 | 用于 ACL 身份验证的密码 | "" |
| method | 字符串 | 加密算法 | "chacha20-ietf-poly1305" |
| plugin | 字符串 | SIP003 插件名称 | "" |
| plugin_opts | 字符串 | 插件选项 | "" |
| plugin_args | 字符串 | 插件参数 | "" |
| remarks | 字符串 | 服务器的易读名称 | "" |
| group | 字符串 | 用于排序/筛选的分组标识符 | "" |
| timeout | int | 连接超时(秒) | 5 |
来源:shadowsocks-csharp/Model/Server.cs15-50
服务器可以以标准 Shadowsocks URL 格式表示,其中包含所有必要的连接信息,便于携带。 Server 类提供了生成和解析这些 URL 的方法
系统支持两种 URL 格式
来源:shadowsocks-csharp/Model/Server.cs75-119 shadowsocks-csharp/Model/Server.cs150-250
服务器配置用户界面在 ConfigForm 中实现,它提供了一个全面的界面来管理服务器配置。
用户界面允许用户
来源:shadowsocks-csharp/View/ConfigForm.cs410-415 shadowsocks-csharp/View/ConfigForm.cs496-577
在保存或切换服务器时,用户界面会验证服务器配置
系统为无效配置提供适当的错误消息,并阻止保存,直到问题解决。
来源:shadowsocks-csharp/View/ConfigForm.cs138-368
Shadowsocks Windows 实现了不同的算法(策略)来选择用于连接的服务器。这些策略对于优化性能和可靠性至关重要。
负载均衡策略(BalancingStrategy)在所有已配置的服务器之间分配连接
当所有服务器具有相似的性能和可靠性时,此策略简单但有效。
来源:shadowsocks-csharp/Controller/Strategy/BalancingStrategy.cs10-49
高可用性策略(HighAvailabilityStrategy)使用性能指标选择最佳服务器
这种智能选择有助于即使在某些服务器缓慢或不可靠时也能保持最佳性能。
来源:shadowsocks-csharp/Controller/Strategy/HighAvailabilityStrategy.cs10-187
系统支持从 URL 或在线 JSON 配置导入服务器配置。
OnlineConfigResolver 类负责从 URL 检索和解析服务器配置。
解析器支持多种 JSON 格式
每个检索到的服务器都会被分配到与其来源 URL 匹配的组中,以便于组织管理。
来源:shadowsocks-csharp/Controller/Service/OnlineConfigResolver.cs12-68
服务器可以从标准 Shadowsocks URL (ss://) 导入
ss://base64(method:password)@hostname:port/?plugin=name;opts#remarks
Server.ParseURL 方法负责将这些 URL 转换为服务器对象。可以通过空格或换行符分割输入来处理多个 URL。
来源:shadowsocks-csharp/Model/Server.cs183-249 shadowsocks-csharp/Model/Server.cs252-259
服务器配置是主应用程序配置的一部分,以 JSON 格式存储。系统支持便携模式(配置保存在应用程序目录中)和标准模式(配置保存在用户配置文件中)。
当通过用户界面对服务器配置进行更改时,它们会经过验证,然后由 ShadowsocksController 保存到磁盘。
来源:shadowsocks-csharp/View/ConfigForm.cs439-458
服务器管理系统与 Shadowsocks Windows 客户端中的其他几个组件集成
集成主要通过 ShadowsocksController 类协调,该类维护当前配置并通知其他组件更改。