菜单

二维码和服务器分享

相关源文件

本页面介绍了 Shadowsocks Windows 中的二维码和服务器共享功能,该功能允许用户将服务器配置导出为二维码或 URL,以便与其他 Shadowsocks 客户端共享。有关管理服务器配置的信息,请参阅服务器管理

概述

服务器共享系统提供了一种便捷的方式,可以在设备或用户之间传输服务器配置,而无需手动输入连接详细信息。它能从任何已配置的服务器生成二维码图像和 URL 字符串,这些二维码或 URL 可被其他 Shadowsocks 客户端扫描或导入。

来源:shadowsocks-csharp/ViewModels/ServerSharingViewModel.cs15-47 shadowsocks-csharp/Views/ServerSharingView.xaml1-53

组件

视图模型

ServerSharingViewModel 类负责服务器共享功能的业务逻辑

  • 获取当前服务器配置
  • 管理服务器选择
  • 根据所选服务器生成服务器 URL
  • 从 URL 创建二维码图像
  • 提供将 URL 复制到剪贴板的命令

视图

ServerSharingView 用户控件为该功能提供用户界面

  • 二维码图像显示
  • 服务器选择列表
  • 服务器 URL 显示
  • 复制 URL 按钮

来源:shadowsocks-csharp/ViewModels/ServerSharingViewModel.cs15-47 shadowsocks-csharp/Views/ServerSharingView.xaml16-52

URL 格式和二维码生成

URL 生成

当选择一个服务器时,视图模型会生成该服务器配置的 URL 表示。该 URL 包含另一个 Shadowsocks 客户端连接到服务器所需的所有信息。

  1. 服务器使用 Server 对象上的 GetURL 方法生成 URL
  2. URL 格式取决于配置中是否启用了旧版模式

生成的 URL 可以有两种格式

  • 旧版 URL:ss://[base64-encoded-server-info]@[server]:[port]#[tag]
  • SIP002 URL:ss://[method]:[password]@[server]:[port]/?plugin=[plugin-info]#[tag]

二维码生成

二维码在服务器被选择后通过以下过程生成

来源:shadowsocks-csharp/ViewModels/ServerSharingViewModel.cs52-94

实现细节

URL 生成

URL 生成发生在服务器被选择时,触发 UpdateUrlAndImage 方法

  1. SelectedServerUrl 通过调用 SelectedServer.GetURL() 方法并传入配置中的旧版 URL 标志来设置
  2. 这会根据 Shadowsocks URI 方案创建格式正确的 URL 字符串

二维码生成过程

二维码生成在 UpdateUrlAndImage 方法中进行

  1. URL 使用 ZXing 的 QR 编码器以纠错级别 L 进行编码
  2. 根据 QR 矩阵的尺寸创建位图
  3. 使用黑白颜色在位图上绘制二维码图案
  4. 该位图被转换为 WPF BitmapImage 以在用户界面中显示

分步实现

  1. 使用 ZXing 库生成二维码矩阵
  2. 计算二维码的合适块大小
  3. 创建具有计算尺寸的位图
  4. 使用 GDI+ 图形在位图上绘制二维码图案
  5. 将位图转换为 WPF 兼容的 BitmapImage

来源:shadowsocks-csharp/ViewModels/ServerSharingViewModel.cs52-94

用户界面

服务器共享用户界面包含以下元素

UI 元素目的
二维码图像显示所选服务器的二维码
服务器列表允许用户选择要共享的服务器
URL 文本框显示所选服务器的文本 URL
复制按钮将 URL 复制到剪贴板

该界面设计得直观简洁

  1. 用户从列表中选择一个服务器
  2. 二维码和 URL 会立即更新
  3. 然后可以
    • 向想要导入您服务器配置的用户显示二维码
    • 使用复制按钮复制 URL

响应式 UI 绑定

服务器共享功能使用 ReactiveUI 在视图模型和视图之间进行数据绑定

来源:shadowsocks-csharp/Views/ServerSharingView.xaml.cs17-40

使用流程

服务器共享功能的典型用法

  1. 打开服务器共享视图
  2. 从列表中选择要共享的服务器
  3. 然后可以
    • 向想要导入您服务器配置的用户显示二维码
    • 点击“复制”按钮复制 URL
    • 双击 URL 文本以选中所有文本

其他 Shadowsocks 客户端可以通过以下方式导入服务器

  • 使用设备的摄像头扫描二维码
  • 将 URL 粘贴到其客户端的服务器导入功能中

与 Shadowsocks 配置的集成

服务器共享系统与 Shadowsocks 配置系统交互以访问服务器详细信息

来源:shadowsocks-csharp/ViewModels/ServerSharingViewModel.cs20-24

总结

二维码和服务器共享功能为用户共享 Shadowsocks 服务器配置提供了便捷的方式。它能自动从服务器详细信息生成二维码和 URL,从而方便地将配置传输到其他设备或用户。该系统采用 MVVM 模式构建,并使用 ReactiveUI 实现关注点的清晰分离和响应式数据绑定。