dsh-sakurafrp: 通过 SakuraFrp 管理手机与桌面互联的插件

前言

dsh-sakurafrp 是一个为 dsh-mobile 插件设计的卫星插件,用于从 DSH UI 界面直接管理手机与桌面之间的连接(SakuraFrp TCP 隧道 + dsh-mobile 网关)。该插件通过图形化操作替代了原先需要编写脚本、修改 YAML 文件或手动维护 systemd 的流程。

根据 GitHub 仓库说明,该插件属于“Vibe coding”产物,代码由作者与 AI 对话生成并经多轮迭代而来,未经过人工逐行审计。它按 MIT 协议“按原样(AS IS)”提供,不附带任何担保,风险自负。

核心功能

该插件提供了以下核心管理能力:

  • 链路状态一屏可见:在面板上直接显示网关运行状态、延迟、已配对设备数以及守护状态。
  • 一键开关手机访问:通过 UI 直接控制 dsh-mobile 的移动网关(等价于 API 调用)。关闭操作会留下抑制标记,防止自愈机制自动拉回。
  • 配对二维码:生成一次性配对窗口的二维码与链接,支持手机端扫码配对。
  • 设备管理:支持逐台撤销设备或一键清空设备列表。
  • 网关自愈:内置自愈机制,每 15 秒检查一次网关状态,发现异常自动拉起。
  • 公网可达性探测:每 60 秒探测主入口及运营商前缀节点,面板直接显示连通性。
  • 外部守护开关:控制 dsh-mobile-lan-watchdog.service 的启停(该服务为冗余层,插件自带自愈已可独立兜底)。

安装与启用

安装过程需要执行克隆、进入目录及运行安装脚本。

git clone https://github.com/ankhishtar2-lang/dsh-sakurafrp.git
cd dsh-sakurafrp
bash scripts/install.sh

安装脚本会执行以下操作:
1. 将插件文件拷贝至 $DSH_HOME/profiles/web/node_modules/。
2. 将 dsh-sakurafrp 追加进 dsh.profile.bundles。
3. 进行静态自检(检查 apply 导出是否存在)。

安装完成后,需重启对应的 DSH Web Profile 服务以生效。

典型用法

  1. UI 操作:在 DSH 会话头部工具区点击手机图标按钮(order: -15),该按钮位于“重启”与“打开文件管理器”之间。在此面板中可查看状态、开关网关、查看二维码及管理设备。
  2. 配置文件:在 $DSH_HOME/profiles/web/cordis.patch.yml 中配置 dsh-mobile 的移动网关参数(如端口、CA 指纹等)。
  3. 环境变量:通过设置 DSH_SAKURA_ORIGIN 等环境变量来覆盖默认行为或配置公网入口。

依赖与要求

该插件有明确的运行期硬依赖和平台限制:

  • 运行期硬依赖:
    • dsh-mobile 插件:提供本机管理接口。
    • SakuraFrp 启动器(frpc):提供公网 TCP 隧道。
  • 平台与版本:
    • 操作系统:仅支持 Linux / WSL2。
    • Node.js:需要 >= 20。
    • DSH 核心:需在 0.1.5-rc.1 系列的 web profile 上验证。
  • 运行期软依赖:
    • dsh-mobile-lan-watchdog.service:外部自愈服务(可选)。

注意事项

  • Vibe Coding 警告:代码由 AI 生成,未经人工审计,不建议直接用于生产环境或处理安全敏感的数据。
  • 平台限制:目前仅支持 Linux 和 WSL2,代码中使用了 systemctl --user 等 POSIX 特性。
  • 许可证:遵循 MIT 协议,按原样提供。
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜