dsh-pocket 1.7.0 → 1.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/client.js +1 -7
- package/client/index.jsx +1 -5
- package/lib/tunnel.mjs +15 -6
- package/package.json +1 -1
package/client/client.js
CHANGED
|
@@ -1517,7 +1517,6 @@ function PocketSettingsTab({ rpcCall }) {
|
|
|
1517
1517
|
(0, import_react2.createElement)("img", { src: status.tunnelQr, alt: "Tunnel QR", style: styles.qr }),
|
|
1518
1518
|
(0, import_react2.createElement)("div", { style: styles.code }, tunnelUrl),
|
|
1519
1519
|
(0, import_react2.createElement)("div", { style: styles.muted }, "\u4EFB\u4F55\u7F51\u7EDC\u626B\u7801\u5373\u7528\uFF08URL \u6BCF\u6B21\u91CD\u542F\u81EA\u52A8\u6362\u65B0\uFF09"),
|
|
1520
|
-
(0, import_react2.createElement)("div", { style: styles.warn, marginTop: 4 }, "\u{1F511} \u94FE\u63A5\u5DF2\u6CC4\u9732\uFF1F\u91CD\u542F dsh web\u2014\u2014URL \u7ACB\u5373\u6362\u65B0\uFF0C\u65E7\u94FE\u63A5\u4F5C\u5E9F\uFF0C\u65E0\u5B89\u5168\u98CE\u9669 | URL leaked? Restart dsh web \u2014 the URL rotates and the old one dies"),
|
|
1521
1520
|
status.accessToken ? (0, import_react2.createElement)(
|
|
1522
1521
|
"div",
|
|
1523
1522
|
{ style: { marginTop: 6, fontSize: 12, color: "var(--dsw-alias-label-secondary,#6b7280)", lineHeight: 1.5 } },
|
|
@@ -1536,12 +1535,7 @@ function PocketSettingsTab({ rpcCall }) {
|
|
|
1536
1535
|
"div",
|
|
1537
1536
|
{ style: { marginTop: 4, fontSize: 12, color: "var(--dsw-alias-state-error-primary,#dc2626)" } },
|
|
1538
1537
|
`\u274C \u5F00\u542F\u5931\u8D25\uFF1A${tunnelStateDetail || "\u672A\u77E5\u9519\u8BEF | failed"}\uFF08\u53EF\u91CD\u8BD5\uFF1B\u82E5\u662F\u4EE3\u7406/VPN \u95EE\u9898\u89C1 README \u6392\u969C\uFF09`
|
|
1539
|
-
) :
|
|
1540
|
-
"div",
|
|
1541
|
-
null,
|
|
1542
|
-
(0, import_react2.createElement)("div", { style: styles.warn, marginTop: 4 }, "\u26A0\uFE0F DSH \u80FD\u6267\u884C\u7535\u8111\u4EE3\u7801\uFF1A\u4E8C\u7EF4\u7801/URL \u5C31\u662F\u94A5\u5319\uFF0C\u8BF7\u52FF\u53D1\u7ED9\u522B\u4EBA | the QR/URL is the key \u2014 never share it"),
|
|
1543
|
-
(0, import_react2.createElement)("div", { style: styles.muted, marginTop: 4 }, "\u4E0D\u614E\u6CC4\u9732\u4E86\uFF1F\u91CD\u542F dsh web\uFF0CURL \u81EA\u52A8\u6362\u65B0\u3001\u65E7\u94FE\u63A5\u7ACB\u5373\u5931\u6548 | Leaked it? Restart dsh web \u2014 the URL rotates and the old one dies instantly")
|
|
1544
|
-
)
|
|
1538
|
+
) : null
|
|
1545
1539
|
)
|
|
1546
1540
|
),
|
|
1547
1541
|
error ? (0, import_react2.createElement)("div", { style: { color: "var(--dsw-alias-state-error-primary,#dc2626)", fontSize: 12, marginTop: 8 } }, `\u274C ${error}`) : null,
|
package/client/index.jsx
CHANGED
|
@@ -247,7 +247,6 @@ function PocketSettingsTab({ rpcCall }) {
|
|
|
247
247
|
h('img', { src: status.tunnelQr, alt: 'Tunnel QR', style: styles.qr }),
|
|
248
248
|
h('div', { style: styles.code }, tunnelUrl),
|
|
249
249
|
h('div', { style: styles.muted }, '任何网络扫码即用(URL 每次重启自动换新)'),
|
|
250
|
-
h('div', { style: styles.warn, marginTop: 4 }, '🔑 链接已泄露?重启 dsh web——URL 立即换新,旧链接作废,无安全风险 | URL leaked? Restart dsh web — the URL rotates and the old one dies'),
|
|
251
250
|
status.accessToken
|
|
252
251
|
? h('div', { style: { marginTop: 6, fontSize: 12, color: 'var(--dsw-alias-label-secondary,#6b7280)', lineHeight: 1.5 } },
|
|
253
252
|
`🔐 访问密码:${status.accessToken}(每次开启公网变新;手机打开链接需输入此密码)| PIN: ${status.accessToken} — required on the phone`)
|
|
@@ -264,10 +263,7 @@ function PocketSettingsTab({ rpcCall }) {
|
|
|
264
263
|
: tunnelPhase === 'error'
|
|
265
264
|
? h('div', { style: { marginTop: 4, fontSize: 12, color: 'var(--dsw-alias-state-error-primary,#dc2626)' } },
|
|
266
265
|
`❌ 开启失败:${tunnelStateDetail || '未知错误 | failed'}(可重试;若是代理/VPN 问题见 README 排障)`)
|
|
267
|
-
:
|
|
268
|
-
h('div', { style: styles.warn, marginTop: 4 }, '⚠️ DSH 能执行电脑代码:二维码/URL 就是钥匙,请勿发给别人 | the QR/URL is the key — never share it'),
|
|
269
|
-
h('div', { style: styles.muted, marginTop: 4 }, '不慎泄露了?重启 dsh web,URL 自动换新、旧链接立即失效 | Leaked it? Restart dsh web — the URL rotates and the old one dies instantly'),
|
|
270
|
-
),
|
|
266
|
+
: null,
|
|
271
267
|
),
|
|
272
268
|
),
|
|
273
269
|
|
package/lib/tunnel.mjs
CHANGED
|
@@ -292,15 +292,24 @@ export async function resolveCloudflared({ home, onPhase = () => {}, signal } =
|
|
|
292
292
|
if (cloudflaredOnPath()) return 'cloudflared';
|
|
293
293
|
const dshHome = home ?? process.env.DSH_HOME ?? join(homedir(), '.dsh');
|
|
294
294
|
const cacheDir = join(dshHome, 'dsh-pocket', 'bin');
|
|
295
|
-
const
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
295
|
+
const { os, a, ext } = platformBinary();
|
|
296
|
+
// 缓存命中,兼容两种文件名(issue #15):
|
|
297
|
+
// 1) 本插件下载时写入的 bin 名:cloudflared.exe
|
|
298
|
+
// 2) 手动放置的**发布资产名**:cloudflared-windows-amd64.exe(与下载失败的错误提示一致)
|
|
299
|
+
const candidates = [
|
|
300
|
+
join(cacheDir, `cloudflared${ext}`),
|
|
301
|
+
join(cacheDir, `cloudflared-${os}-${a}${ext}`),
|
|
302
|
+
];
|
|
303
|
+
for (const bin of candidates) {
|
|
304
|
+
try {
|
|
305
|
+
await access(bin);
|
|
306
|
+
return bin; // 缓存命中,秒开
|
|
307
|
+
} catch { /* 继续找下一个 */ }
|
|
308
|
+
}
|
|
300
309
|
onPhase('downloading');
|
|
301
310
|
await mkdir(cacheDir, { recursive: true });
|
|
302
311
|
if (!downloading) {
|
|
303
|
-
downloading = downloadCloudflared(
|
|
312
|
+
downloading = downloadCloudflared(join(cacheDir, `cloudflared${ext}`), signal).finally(() => { downloading = null; });
|
|
304
313
|
}
|
|
305
314
|
return downloading;
|
|
306
315
|
}
|
package/package.json
CHANGED