Repository navigation
这一版解决什么
别的用户装完用不了。 宿主端插件以前只在两个位置找登录工具 DSH-GitHub-Login.exe:
<DSH_HOME>/dsh-github-login/dist/DSH-GitHub-Login.exe
D:/dsh/dsh-github-login/dist/DSH-GitHub-Login.exe ← 作者本机路径
第二行在任何别的机器、任何别的平台上都永远命中不了,而 npm 包里不带 exe ——
于是新用户点"登录 GitHub"只会拿到一句提示,既没有工具,也没有"去哪拿"的说明。
改了什么
- 删掉作者本机路径。候选位置现在全部由规则推导:环境变量 /
<DSH_HOME>/ 插件自身安装目录,一条字面量都没有。 - 首次使用自动获取:没有工具时,插件自己从本仓库 Release 下载 exe,边下边算 SHA-256,
与发布方的.sha256不符就拒绝启用,可疑文件立即删除,绝不启动。
并发唤起只下载一次;网络抖动最多重试 3 次,校验和/格式这类"重试也没用"的失败立即停。 - 失败不再静默:拿不到工具时回一条能照着做的指引(下载地址、校验和地址、落盘路径、
两个覆盖用环境变量),并原样带上失败原因(下载 404 / 校验和不符 / 网络不可达)。 - 新增
GET /github-auth/tool:在不在、装在哪、候选列表、是否正在下载,给面板和排障用。 - README 补上"新用户怎么拿到并使用登录工具"的完整路径 + 帮助区的对应条目。
别人怎么拿到 exe(本版的重点)
通常不用管 —— 第一次点登录时插件会自动下载并校验,落盘到:
<DSH_HOME>/dsh-github-login/DSH-GitHub-Login.exe # DSH_HOME 缺省 ~/.dsh
下载地址:https://github.com/Noob-stupid/dsh-github-login/releases/latest/download/DSH-GitHub-Login.exe
自动下载不可用(网络受限 / 需要镜像源)时,按提示手动装:
- 从本页下载
DSH-GitHub-Login.exe(和它的.sha256) - 放到
<DSH_HOME>/dsh-github-login/DSH-GitHub-Login.exe - 或者用环境变量指路:
DSH_GITHUB_LOGIN_EXE=<exe 绝对路径>;
想换分发源用DSH_GITHUB_LOGIN_RELEASE_BASE_URL=<.../latest/download 基址>
怎么校验
sha256sum DSH-GitHub-Login.exe
# bdd670c7c6add6a502fcb9ce4abe22a0dc5330b7e6508f4c6d1c8eb73dbb7206 DSH-GitHub-Login.exe本版 exe 与 v1.0.1 的那份是同一份字节(本体没有改动,只是获取链路变了),因此校验和与 v1.0.1 相同;
上方的 DSH-GitHub-Login.exe.sha256 就是它的官方校验和(88 字节,<哈希><两空格><文件名> 格式)。
插件自动下载时用的就是同一个值,不匹配会拒绝启用。
测试
npm test → 23 项全绿(含新增的可移植性断言):
- 入库源码/文档/测试文件里不得出现机器专用绝对路径(白名单逐条登记,无整文件豁免);
- 候选列表每一项都能由规则推导(不含盘符字面量,且返回值都落在可推导根下);
- 自动下载的 sha256 不匹配必须拒用,且不留下任何产物(用本地 HTTP 服务器构造坏哈希走失败分支);
- 上面三条都做过变异验证:把缺陷写回去必红、还原必绿,且逐字节还原。
平台说明
登录窗口目前仍只有 Windows 的便携 exe;Linux/macOS 上插件会给出"暂无可用登录工具"的明确指引,
而不是静默失败。令牌文件(<DSH_HOME>/github-auth.json)与设备码流程本身与平台无关,
GET /github-auth/status 在任意平台都可用。