Skip to content

fix(discovery): 移除本机临时端口区间扫描 - #17

Merged
graydovee merged 3 commits into
mainfrom
fix/extension-drop-ephemeral-sweep-to-main
Oct 21, 2026
Merged

graydovee merged 3 commits into
mainfrom
fix/extension-drop-ephemeral-sweep-to-main

Conversation

@graydovee

Copy link
Copy Markdown
Owner

概述 / Summary

自动发现不再扫描本机临时端口区间:面板只探「上次成功的地址 → dsh web 默认端口 → 插件的固定信标端口(43189–43198)」,未命中即报「未找到服务」。

Auto-detect no longer sweeps the platform's ephemeral port range; discovery only probes the remembered URL, the dsh web defaults, and the plugin's fixed beacon ports (43189–43198).

动机 / Motivation

原来的自动探测在信标端口全部落空后,还会把平台临时端口区间整个扫一遍(Windows/macOS 16384 个端口、Linux 28232 个),用来兜底「扩展已升级、桥插件仍是旧版本(没有发现信标)」的混搭环境。这条兜底路径的代价是:面板打开却没有任何服务时要做上万次本地 TCP 探测(上限 20 s),在企业环境里也容易被安全软件当成端口扫描。

现在插件与扩展由同一个安装脚本一起安装,桥插件默认发布固定端口信标,混搭场景已经很窄,因此移除该兜底,让探测路径变成一次有界探测(14 个端口以内)。

改动内容 / Changes

  • 删除 extensions/dsh-browser/src/background/port-scan.ts(区间定义、并发/超时/扫描上限常量、端口展开);
  • background/discovery.ts 只保留固定端口组,去掉 sweep 计划与扫描实现;进度改为「首探前 + 每组完成后」上报;
  • background/index.ts 去掉 port-scan 引用、platformOs/ensurePlatformOs 与两处 sweepPorts;
  • 面板文案从「扫描」改为「探测」(detectScanning → detectProgress),实例来源类型去掉 scan;
  • 用例:删除 tests/port-scan.spec.ts;tests/background-discovery.spec.ts 改用例为固定端口组语义(首组命中即停、跨组枚举合并来源、按组进度、按组取消、全静默空结果);
  • README 中英同步去掉「扫描系统临时端口区间」的描述。

测试 / Testing

CI=true pnpm run typecheck     ✓ 桥插件 + 扩展 tsc
CI=true pnpm run test          ✓ 桥插件 19 文件 / 220 用例(218 passed, 2 e2e skipped)
                                 扩展 68 文件 / 594 用例
CI=true pnpm run build         ✓ 桥插件 + Chrome 扩展产物

真机手测(macOS 26 / Chrome 153,扩展以「已解压扩展」加载):

  • 产物同步到 ~/.dsh/browser-extension 后在 chrome://extensions 重新加载;
  • 侧栏正常「已连接」,设置 → 自动检测立即返回结果,列出本机实例(ws://127.0.0.1:<随机端口>/ext/bridge),来源标签仅「固定端口 / 信标」,不再出现「扫描」。

影响范围 / Impact

  • Chrome / Edge / Firefox 扩展的自动发现路径;桥插件与 wire 协议无改动。
  • 行为变化:宿主为旧版本(不发布发现信标)且端口不是 3080 / 3081 / 3090 / 14389 时,自动探测不再能命中,需要在设置里手动填写地址。
  • 多实例发现不受影响:每个实例仍会占用 43189–43198 中的一个空闲端口发布信标,「自动检测」照常列出全部实例。

changelog

  • CHANGELOG.md:* 2026-10-21 [Refactor] Auto-detect no longer sweeps the local ephemeral port range.
  • CHANGELOG.zh-CN.md:* 2026-10-21 [Refactor] 侧栏自动发现不再扫描本机临时端口区间。

Checklist

  • 已在相关平台实测通过 / Tested on the relevant platforms
  • 已通过 pnpm run build / bash -n scripts/install.sh 等基础检查 / Passed basic checks
  • 文档已同步更新(如需要)/ Docs updated if needed
  • 不包含无关改动 / No unrelated changes included

自动发现原本在信标全部落空后还会扫一遍平台临时端口区间(Windows/macOS
16384 个、Linux 28232 个端口),用来兼容没有发现信标的旧宿主。现在插件与
扩展一体安装、旧宿主的混搭场景很窄,这条兜底路径代价明显更大,因此移除:

- 删除 port-scan.ts(区间、并发、超时与扫描上限常量)及其用例;
- discovery.ts 只保留固定端口组(上次地址 → 常用端口 → 信标端口),
  进度改为按组上报;
- 面板文案从「扫描」改为「探测」,实例来源去掉 scan;
- README 中英同步去掉临时端口区间扫描的描述。
@graydovee
graydovee merged commit 2765d4c into main Oct 21, 2026
1 check passed
@graydovee
graydovee deleted the fix/extension-drop-ephemeral-sweep-to-main branch October 21, 2026 03:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant