dsh-trusted-page:DSH Web 远程受信访问插件

DSH Web 客户端默认根据 hostname 是否为回环(localhost / 127.x)来决定是否启用 Host 设置持久化。当使用远程域名访问时,设置镜像会降级为 memory,导致 Models 页面在联表提供方目录时报错。该插件在设置面板提供可视化配置入口,通过配置受信域名,联动 API 放行与页面受信判定,修复此问题。

是什么

这是一个 DSH Web 远程受信访问插件,由 liujuntao123 维护。它解决了经反向隧道或自定义域名远程访问 DSH Web 时,Models / 设置页报 settings are unavailable in this browser 的问题。

核心功能

  • 设置面板可视化配置:在设置面板 → 通用 → “远程受信域名”中,以标签列表形式增删受信域名(支持 host 或 host:port)。每个域名标签会显示当前页面的受信状态(已受信 / 未受信)。
  • 一处配置,两处联动:配置写入后即时生效,无需重启。
    1. API 放行:域名列表并入 connection.trustedHosts,用于 /api 的 Host/Origin fence 校验。
    2. 页面判定:每次渲染 index 时注入一段内联脚本,检查 location 命中列表后,声明 window.__DSH_TRANSPORT__ = { ownsHost: true },从而允许该页面的设置持久化。
  • 匹配语义与服务端一致:无端口条目匹配任意端口,带端口条目要求端口精确匹配。支持 IPv6 字面量(如 [::1]:8080)。
  • 输入容错:自动剥离 https:// 前缀、路径及查询参数,统一转为小写。拒绝非法字符、userinfo(如 user@host)及非数字端口。

安装

使用官方命令安装:

dsh plugin --profile web add git+https://github.com/liujuntao123/dsh-trusted-page.git

使用步骤

  1. 在本机打开 DSH Web(http://127.0.0.1:<port>)。
  2. 进入 设置 → 通用 → “远程受信域名”,输入你的远程域名(如 dsh.example.com),回车或点击“添加”。
  3. 用该域名打开 DSH Web(需确保该域名已路由到你的 DSH 服务),执行页面强刷(Ctrl+F5)。
  4. 进入 设置 → 模型,提供方目录应正常加载,不再报错。

此时,远程页面上也能看到对应的设置行(显示状态取决于当前页面是否受信)。

注意事项

  • 权限与路由:本插件只放宽“已认证的设置面板中声明的域名”的访问权限,该域名必须已经路由到 DSH 服务(如 Cloudflare Tunnel、nginx 反代、LAN 直连),插件不负责路由配置。
  • 安全模型:
    • 受信域名之外的 /api 请求仍会被 Host/Origin fence 拦截(403)。
    • 页面本身仍需浏览器会话 Cookie 或启动 token 交换,未授权来源的 index 请求会被拦截(401)。
  • 依赖版本:在 @deepseek-ai/dsh 0.1.5-rc.1 上开发验证。插件依赖 webserver/index-inject 注入事件与 __DSH_TRANSPORT__.ownsHost 读取约定,若上游语义改变,插件会安全退化。

相关链接

羽毛球分组比赛记分
小程序二维码

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

小夜