@iicp/client 0.7.71 → 0.7.73
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/README.md +5 -4
- package/dist/tunnel.d.ts +3 -0
- package/dist/tunnel.d.ts.map +1 -1
- package/dist/tunnel.js +106 -6
- package/dist/tunnel.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -23,11 +23,12 @@ npm install @iicp/client@latest
|
|
|
23
23
|
# pnpm add @iicp/client@latest
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
> **Upgrade note (0.7.
|
|
27
|
-
> recover
|
|
26
|
+
> **Upgrade note (0.7.73)** — upgrade provider nodes so Quick Tunnel endpoints
|
|
27
|
+
> recover safely after sleep, idle, Cloudflare edge drops, and local DNS
|
|
28
|
+
> propagation lag on freshly-created `trycloudflare.com` URLs. Tunnel
|
|
28
29
|
> twilight/recovery still heartbeats as unavailable and only re-registers once
|
|
29
30
|
> public `/iicp/health` verifies; supervised services and Docker containers now
|
|
30
|
-
> fail visibly so launchd/systemd/Docker can restart instead of staying stuck.
|
|
31
|
+
> fail visibly so launchd/systemd/Docker can restart instead of staying stuck. This release also pauses accountless Cloudflare Quick Tunnel creation after `429` / `1015` rate limits; persistent relays should use a named tunnel or `IICP_PUBLIC_ENDPOINT`.
|
|
31
32
|
|
|
32
33
|
### Keeping provider nodes current
|
|
33
34
|
|
|
@@ -41,7 +42,7 @@ If a node is older than 0.7.67, perform one manual upgrade/restart first,
|
|
|
41
42
|
especially for Dockerized Python or TypeScript providers: early updater wiring
|
|
42
43
|
did not reliably cover every normal `serve` path. For Docker, use a Compose
|
|
43
44
|
`restart: unless-stopped` policy (or `docker run --restart unless-stopped`) so
|
|
44
|
-
0.7.
|
|
45
|
+
0.7.73 can intentionally exit from a confirmed tunnel-dead state and let Docker
|
|
45
46
|
bring it back cleanly.
|
|
46
47
|
|
|
47
48
|
> **Upgrade note (0.5.3)** — if you operate a node and use the native IICP
|
package/dist/tunnel.d.ts
CHANGED
|
@@ -32,6 +32,8 @@ export declare const MAX_RESPAWNS = 3;
|
|
|
32
32
|
export declare const TUNNEL_HEALTH_INTERVAL_MS = 30000;
|
|
33
33
|
export declare const TUNNEL_HEALTH_MAX_FAILS = 2;
|
|
34
34
|
export declare const TUNNEL_VERIFY_TIMEOUT_MS = 30000;
|
|
35
|
+
export declare const TUNNEL_DOH_TIMEOUT_MS = 5000;
|
|
36
|
+
export declare const TUNNEL_RATE_LIMIT_COOLDOWN_MS: number;
|
|
35
37
|
export declare const TUNNEL_DEAD_RETRY_INITIAL_MS = 30000;
|
|
36
38
|
export declare const TUNNEL_DEAD_RETRY_MAX_MS = 300000;
|
|
37
39
|
export type TunnelState = "ready" | "twilight" | "recovering" | "dead";
|
|
@@ -45,6 +47,7 @@ export interface TunnelWatchOptions {
|
|
|
45
47
|
verifyTimeoutMs?: number;
|
|
46
48
|
deadRetryDelayMs?: (attempt: number) => number;
|
|
47
49
|
}
|
|
50
|
+
export declare function __resetQuickTunnelRateLimitForTests(): void;
|
|
48
51
|
export declare const INSTALL_HINT: string;
|
|
49
52
|
/** Locate the cloudflared binary on PATH, or null (we never auto-install it). */
|
|
50
53
|
export declare function cloudflaredPath(): string | null;
|
package/dist/tunnel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../src/tunnel.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAM9D,mFAAmF;AACnF,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C;;;;GAIG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAChD,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C,eAAO,MAAM,4BAA4B,QAAS,CAAC;AACnD,eAAO,MAAM,wBAAwB,SAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../src/tunnel.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAM9D,mFAAmF;AACnF,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C;;;;GAIG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAChD,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAC3C,eAAO,MAAM,6BAA6B,QAAc,CAAC;AACzD,eAAO,MAAM,4BAA4B,QAAS,CAAC;AACnD,eAAO,MAAM,wBAAwB,SAAU,CAAC;AAIhD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC;AACvE,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,gBAAgB,GAAG,IAAI,CAAC;IAC7C,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;CAChD;AAoDD,wBAAgB,mCAAmC,IAAI,IAAI,CAE1D;AAuED,eAAO,MAAM,YAAY,QAI0B,CAAC;AAEpD,iFAAiF;AACjF,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAe/C;AAED,6EAA6E;AAC7E,qBAAa,WAAW;IACtB,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAC,CAAiC;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;gBAE3B,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAS9E,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,OAAO,GAAE,kBAAuB,GAAG,IAAI;IA2HlG,yEAAyE;IACzE,KAAK,IAAI,IAAI;CASd;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,MAAgC,EAC3C,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,CAAC,CAkEtB"}
|
package/dist/tunnel.js
CHANGED
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
* hook so a normal exit never orphans the child).
|
|
17
17
|
*/
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.QuickTunnel = exports.INSTALL_HINT = exports.TUNNEL_DEAD_RETRY_MAX_MS = exports.TUNNEL_DEAD_RETRY_INITIAL_MS = exports.TUNNEL_VERIFY_TIMEOUT_MS = exports.TUNNEL_HEALTH_MAX_FAILS = exports.TUNNEL_HEALTH_INTERVAL_MS = exports.MAX_RESPAWNS = exports.TUNNEL_START_TIMEOUT_MS = void 0;
|
|
19
|
+
exports.QuickTunnel = exports.INSTALL_HINT = exports.TUNNEL_DEAD_RETRY_MAX_MS = exports.TUNNEL_DEAD_RETRY_INITIAL_MS = exports.TUNNEL_RATE_LIMIT_COOLDOWN_MS = exports.TUNNEL_DOH_TIMEOUT_MS = exports.TUNNEL_VERIFY_TIMEOUT_MS = exports.TUNNEL_HEALTH_MAX_FAILS = exports.TUNNEL_HEALTH_INTERVAL_MS = exports.MAX_RESPAWNS = exports.TUNNEL_START_TIMEOUT_MS = void 0;
|
|
20
|
+
exports.__resetQuickTunnelRateLimitForTests = __resetQuickTunnelRateLimitForTests;
|
|
20
21
|
exports.cloudflaredPath = cloudflaredPath;
|
|
21
22
|
exports.openQuickTunnel = openQuickTunnel;
|
|
22
23
|
const node_child_process_1 = require("node:child_process");
|
|
@@ -41,12 +42,87 @@ exports.MAX_RESPAWNS = 3;
|
|
|
41
42
|
exports.TUNNEL_HEALTH_INTERVAL_MS = 30_000;
|
|
42
43
|
exports.TUNNEL_HEALTH_MAX_FAILS = 2;
|
|
43
44
|
exports.TUNNEL_VERIFY_TIMEOUT_MS = 30_000;
|
|
45
|
+
exports.TUNNEL_DOH_TIMEOUT_MS = 5_000;
|
|
46
|
+
exports.TUNNEL_RATE_LIMIT_COOLDOWN_MS = 15 * 60_000;
|
|
44
47
|
exports.TUNNEL_DEAD_RETRY_INITIAL_MS = 30_000;
|
|
45
48
|
exports.TUNNEL_DEAD_RETRY_MAX_MS = 300_000;
|
|
49
|
+
let quickTunnelRateLimitUntil = 0;
|
|
50
|
+
function trycloudflareHost(url) {
|
|
51
|
+
if (!url.trim().startsWith("https://"))
|
|
52
|
+
return null;
|
|
53
|
+
const host = url.trim().slice("https://".length).split("/")[0];
|
|
54
|
+
if (!host.endsWith(".trycloudflare.com"))
|
|
55
|
+
return null;
|
|
56
|
+
if (!/^[a-z0-9.-]+$/.test(host))
|
|
57
|
+
return null;
|
|
58
|
+
return host;
|
|
59
|
+
}
|
|
60
|
+
function isLikelyDnsError(exc) {
|
|
61
|
+
const anyExc = exc;
|
|
62
|
+
const code = anyExc?.cause?.code;
|
|
63
|
+
if (code === "ENOTFOUND" || code === "EAI_AGAIN")
|
|
64
|
+
return true;
|
|
65
|
+
const msg = `${anyExc?.message ?? String(exc)} ${anyExc?.cause?.message ?? ""}`.toLowerCase();
|
|
66
|
+
return (msg.includes("dns") ||
|
|
67
|
+
msg.includes("failed to lookup address") ||
|
|
68
|
+
msg.includes("nodename nor servname") ||
|
|
69
|
+
msg.includes("name or service not known") ||
|
|
70
|
+
msg.includes("temporary failure in name resolution") ||
|
|
71
|
+
msg.includes("enotfound") ||
|
|
72
|
+
msg.includes("eai_again"));
|
|
73
|
+
}
|
|
74
|
+
function rateLimitCooldownMs() {
|
|
75
|
+
const raw = process.env.IICP_TUNNEL_RATE_LIMIT_COOLDOWN_S;
|
|
76
|
+
const seconds = raw ? Number.parseInt(raw, 10) : Number.NaN;
|
|
77
|
+
return Number.isFinite(seconds) && seconds > 0 ? seconds * 1000 : exports.TUNNEL_RATE_LIMIT_COOLDOWN_MS;
|
|
78
|
+
}
|
|
79
|
+
function quickTunnelRateLimitRemainingMs() {
|
|
80
|
+
return Math.max(0, quickTunnelRateLimitUntil - Date.now());
|
|
81
|
+
}
|
|
82
|
+
function markQuickTunnelRateLimited() {
|
|
83
|
+
const cooldown = rateLimitCooldownMs();
|
|
84
|
+
quickTunnelRateLimitUntil = Date.now() + cooldown;
|
|
85
|
+
return cooldown;
|
|
86
|
+
}
|
|
87
|
+
function cloudflaredOutputIsRateLimited(lines) {
|
|
88
|
+
const joined = lines.join(" ").toLowerCase();
|
|
89
|
+
return (joined.includes("429") ||
|
|
90
|
+
joined.includes("too many requests") ||
|
|
91
|
+
joined.includes("error code: 1015") ||
|
|
92
|
+
joined.includes("rate limit"));
|
|
93
|
+
}
|
|
94
|
+
function __resetQuickTunnelRateLimitForTests() {
|
|
95
|
+
quickTunnelRateLimitUntil = 0;
|
|
96
|
+
}
|
|
97
|
+
async function dohHasAnswer(host, recordType) {
|
|
98
|
+
const ctrl = new AbortController();
|
|
99
|
+
const timer = setTimeout(() => ctrl.abort(), exports.TUNNEL_DOH_TIMEOUT_MS);
|
|
100
|
+
try {
|
|
101
|
+
const resp = await fetch(`https://cloudflare-dns.com/dns-query?name=${host}&type=${recordType}`, { headers: { accept: "application/dns-json" }, signal: ctrl.signal });
|
|
102
|
+
if (!resp.ok)
|
|
103
|
+
return false;
|
|
104
|
+
const body = (await resp.json());
|
|
105
|
+
return body.Status === 0 && Array.isArray(body.Answer) && body.Answer.length > 0;
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
clearTimeout(timer);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
async function trycloudflarePublishedViaDoh(url) {
|
|
115
|
+
const host = trycloudflareHost(url);
|
|
116
|
+
if (!host)
|
|
117
|
+
return false;
|
|
118
|
+
return (await dohHasAnswer(host, "A")) || (await dohHasAnswer(host, "AAAA"));
|
|
119
|
+
}
|
|
46
120
|
/**
|
|
47
121
|
* GET `<url>/iicp/health` through the Cloudflare edge back to the local node — the same
|
|
48
122
|
* path a browser consumer takes — so it detects an edge-drop, not just a local-process
|
|
49
|
-
* death.
|
|
123
|
+
* death. Local resolvers can lag freshly-created accountless `trycloudflare.com`
|
|
124
|
+
* records; if local DNS fails but Cloudflare DoH already publishes the hostname, keep
|
|
125
|
+
* the tunnel alive so we do not create→verify→kill-loop fresh public URLs.
|
|
50
126
|
*/
|
|
51
127
|
async function tunnelUrlReachable(url) {
|
|
52
128
|
const ctrl = new AbortController();
|
|
@@ -55,7 +131,12 @@ async function tunnelUrlReachable(url) {
|
|
|
55
131
|
const resp = await fetch(`${url.replace(/\/$/, "")}/iicp/health`, { signal: ctrl.signal });
|
|
56
132
|
return resp.ok;
|
|
57
133
|
}
|
|
58
|
-
catch {
|
|
134
|
+
catch (exc) {
|
|
135
|
+
if (isLikelyDnsError(exc) && (await trycloudflarePublishedViaDoh(url))) {
|
|
136
|
+
console.warn(`[quick-tunnel] local DNS has not resolved ${url} yet, but Cloudflare DoH ` +
|
|
137
|
+
"already publishes it — keeping tunnel alive.");
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
59
140
|
return false;
|
|
60
141
|
}
|
|
61
142
|
finally {
|
|
@@ -270,6 +351,12 @@ exports.QuickTunnel = QuickTunnel;
|
|
|
270
351
|
*/
|
|
271
352
|
function openQuickTunnel(localPort, timeoutMs = exports.TUNNEL_START_TIMEOUT_MS, binary) {
|
|
272
353
|
return new Promise((resolve, reject) => {
|
|
354
|
+
const remainingMs = quickTunnelRateLimitRemainingMs();
|
|
355
|
+
if (remainingMs > 0) {
|
|
356
|
+
reject(new Error(`accountless Quick Tunnel creation paused for ${Math.ceil(remainingMs / 1000)}s after Cloudflare rate limiting; ` +
|
|
357
|
+
"retry later or configure a named tunnel / IICP_PUBLIC_ENDPOINT"));
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
273
360
|
const resolved = binary ?? cloudflaredPath();
|
|
274
361
|
if (!resolved) {
|
|
275
362
|
reject(new Error(exports.INSTALL_HINT));
|
|
@@ -279,17 +366,30 @@ function openQuickTunnel(localPort, timeoutMs = exports.TUNNEL_START_TIMEOUT_MS,
|
|
|
279
366
|
stdio: ["ignore", "pipe", "pipe"],
|
|
280
367
|
});
|
|
281
368
|
let settled = false;
|
|
369
|
+
const lastLines = [];
|
|
370
|
+
const errorWithOutput = (reason) => {
|
|
371
|
+
let out = lastLines.length ? `${reason}; last cloudflared output: ${lastLines.join(" | ")}` : reason;
|
|
372
|
+
if (cloudflaredOutputIsRateLimited(lastLines)) {
|
|
373
|
+
const cooldown = markQuickTunnelRateLimited();
|
|
374
|
+
out += `; accountless Quick Tunnel rate limit detected — pausing tunnel creation for ${Math.ceil(cooldown / 1000)}s`;
|
|
375
|
+
}
|
|
376
|
+
return out;
|
|
377
|
+
};
|
|
282
378
|
const timer = setTimeout(() => {
|
|
283
379
|
if (settled)
|
|
284
380
|
return;
|
|
285
381
|
settled = true;
|
|
286
382
|
proc.kill("SIGTERM");
|
|
287
|
-
reject(new Error(`cloudflared produced no tunnel URL within ${timeoutMs / 1000}s`));
|
|
383
|
+
reject(new Error(errorWithOutput(`cloudflared produced no tunnel URL within ${timeoutMs / 1000}s`)));
|
|
288
384
|
}, timeoutMs);
|
|
289
385
|
const onChunk = (chunk) => {
|
|
290
386
|
if (settled)
|
|
291
387
|
return; // keep draining (streams stay flowing) but ignore
|
|
292
|
-
const
|
|
388
|
+
const text = chunk.toString();
|
|
389
|
+
lastLines.push(...text.split(/\r?\n/).map((l) => l.trim()).filter(Boolean));
|
|
390
|
+
while (lastLines.length > 6)
|
|
391
|
+
lastLines.shift();
|
|
392
|
+
const m = URL_RE.exec(text);
|
|
293
393
|
if (m) {
|
|
294
394
|
settled = true;
|
|
295
395
|
clearTimeout(timer);
|
|
@@ -306,7 +406,7 @@ function openQuickTunnel(localPort, timeoutMs = exports.TUNNEL_START_TIMEOUT_MS,
|
|
|
306
406
|
return;
|
|
307
407
|
settled = true;
|
|
308
408
|
clearTimeout(timer);
|
|
309
|
-
reject(new Error(`cloudflared exited (code=${code}) before printing a tunnel URL`));
|
|
409
|
+
reject(new Error(errorWithOutput(`cloudflared exited (code=${code}) before printing a tunnel URL`)));
|
|
310
410
|
});
|
|
311
411
|
proc.once("error", (err) => {
|
|
312
412
|
if (settled)
|
package/dist/tunnel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../src/tunnel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../src/tunnel.ts"],"names":[],"mappings":"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"}
|