Overview
@local/dsh-network-proxy
README / EN
Package documentation
Registry summary
dsh.pub verifies the pinned bundle contract, runtime facts, and distribution semantics. The complete README remains in the source repository.
Read the full README on GitHubLIMITATIONS
Known limitations
- 只接受 `http://` / `https://` 代理;SOCKS 会被识别并在界面上提示“暂不支持”。用户名/密码里含非法百分号转义(如 `%zz`)的地址会被拒绝,因为 undici 在请求时解码会抛 `URIError`。 - PAC 求值器覆盖常见的 `shExpMatch` / `dnsDomainIs` / `isInNet` / `isPlainHostName` 等辅助函数;`dnsResolve` 返回空串(避免在同步求值里做 DNS),复杂 PAC 可能退化。单次求值有 100ms 超时,超时或抛错会回退到静态代理(有的话)或直连,并显示 `pac-failed`。 - PAC 脚本缓存 60 秒;点“重新检测”会强制重新读取系统设置并重新下载。求值器运行在无宿主对象的 Node `vm` 上下文里(禁用字符串代码生成),但 Node 明确说明 `vm` 不是安全边界,仍不应把不可信 PAC 当作可信输入。 - PAC 按 origin(scheme + host + port)求值,undici 的 dispatcher 工厂拿不到请求路径,所以依赖路径的 PAC 规则不会生效;目前只采用第一个 `PROXY`/`HTTPS` 项,不做多代理故障转移。 - WPAD 自动检测(`AutoDetect=1` 且没有 PAC URL)暂不支持,会在界面上显示提示,而不是静默直连。 - 自定义模式必须写端口;系统 `ProxyServer` 里形如 `http://user:pass@host:port` 的凭据会被保留,界面与日志只显示去掉凭据的地址。 - 旁路列表支持 IPv4/IPv6 CIDR、`<local>`、`*.example.com`、`127.*` 与端口;子进程的 `NO_PROXY` 只能表达主机/域名,无法表达整个 `127.0.0.0/8`。如果系统旁路列表是 `*`,所有请求直连,状态会显示 `bypass-all` 而不是“代理已生效”。 - 设置写入失败时仍会生效,但状态会显示 `persist-failed`(重启后会丢失);配置文件是明文 JSON(权限 0600)。 - 客户端调用 Host 有 15 秒超时与“重试”按钮;自定义输入框在输入法组合状态下按 Enter 不会误保存。 - 修改系统代理本身(例如在代理软件里开关“系统代理”)不会被实时感知,点“重新检测”或重新打开设置即可刷新。
