@jonathanyee/devtunnel-ctl 0.1.0 → 0.2.0
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 +53 -6
- package/dist/auth.d.ts +3 -2
- package/dist/auth.js +6 -5
- package/dist/auth.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +41 -1
- package/dist/cli.js.map +1 -1
- package/dist/core.d.ts +1 -1
- package/dist/core.js +2 -0
- package/dist/core.js.map +1 -1
- package/dist/host-process.d.ts +4 -0
- package/dist/host-process.js +110 -0
- package/dist/host-process.js.map +1 -0
- package/dist/host-sdk.d.ts +38 -0
- package/dist/host-sdk.js +327 -0
- package/dist/host-sdk.js.map +1 -0
- package/dist/host-service.d.ts +21 -0
- package/dist/host-service.js +193 -0
- package/dist/host-service.js.map +1 -0
- package/dist/host-worker.d.ts +1 -0
- package/dist/host-worker.js +80 -0
- package/dist/host-worker.js.map +1 -0
- package/dist/host.d.ts +43 -0
- package/dist/host.js +158 -0
- package/dist/host.js.map +1 -0
- package/dist/launchd.d.ts +5 -0
- package/dist/launchd.js +10 -6
- package/dist/launchd.js.map +1 -1
- package/dist/sdk-transport.d.ts +5 -1
- package/dist/sdk-transport.js +5 -5
- package/dist/sdk-transport.js.map +1 -1
- package/npm-shrinkwrap.json +7 -6
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# devtunnel-ctl
|
|
2
2
|
|
|
3
|
-
A per-user
|
|
3
|
+
A per-user service and CLI for resilient Microsoft Dev Tunnels hosting and **SSH-only client forwarding**. Both use the Microsoft TypeScript SDK. Client forwarding owns stable loopback ports, checks real SSH banners, and replaces stale SDK connections when bounded resumable recovery fails.
|
|
4
4
|
|
|
5
5
|
This is a first version, not a transparent SSH-session migration tool. A fresh SDK client can terminate existing SSH sessions. Use `tmux` on the remote machine when session continuity matters. No remote settings or SSH configuration are modified.
|
|
6
6
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
|
9
|
-
Requires Node.js 24 or later, npm,
|
|
9
|
+
Requires Node.js 24 or later, npm, and an installed Microsoft `devtunnel` CLI. Client forwarding supports macOS and Linux, including WSL. Foreground hosting also supports native Windows. The authentication helper is not bundled. On macOS/Homebrew its default path is `/opt/homebrew/bin/devtunnel`; on Linux pass its actual absolute path to `init --helper`. On Windows, pass an absolute `--helper` path to `devtunnel.exe` when hosting. The client daemon and its control commands remain unsupported on Windows.
|
|
10
10
|
|
|
11
11
|
### From npm
|
|
12
12
|
|
|
@@ -60,7 +60,52 @@ export PATH="$HOME/.local/bin:$PATH"
|
|
|
60
60
|
|
|
61
61
|
This local installation remains tied to the checkout. Otherwise use `node /absolute/path/to/devtunnel-ctl/dist/main.js` throughout.
|
|
62
62
|
|
|
63
|
-
##
|
|
63
|
+
## Host an existing tunnel
|
|
64
|
+
|
|
65
|
+
Replace an existing `devtunnel host host-name` invocation with:
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
devtunnel-ctl host host-name --probe-port 22
|
|
69
|
+
# Select the installed authentication helper explicitly if needed:
|
|
70
|
+
devtunnel-ctl host host-name --helper /absolute/path/devtunnel \
|
|
71
|
+
--probe-port 22 --probe-port 3000
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
On native Windows:
|
|
75
|
+
|
|
76
|
+
```powershell
|
|
77
|
+
devtunnel-ctl host host-name --helper 'C:\Tools\devtunnel.exe' --probe-port 22
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Hosting preserves **all ports already configured on the tunnel**, not just SSH or the selected probe ports. It does not create tunnels, change access policies, or enable anonymous access. Existing port changes are refreshed periodically; removing a port stops new forwarded connections on that port. Sign in explicitly with the selected helper's `user login` command before hosting.
|
|
81
|
+
|
|
82
|
+
**Starting a host may displace an existing host for that tunnel.** Stop or migrate the old host deliberately. A displaced supervised host reports `host-superseded` and stops rather than repeatedly taking the tunnel back. Recovery can disconnect active clients on every hosted port.
|
|
83
|
+
|
|
84
|
+
The foreground command owns a disposable SDK worker. It retries unexpected worker exit, lost heartbeats, relay failures and persistent forwarding failures with jittered backoff capped at 15 seconds. Relay WebSocket keepalives send a ping after 10 seconds without incoming traffic and allow 10 seconds for a response, even without probes. An established relay gets up to eight seconds for resumable reconnect before replacement. Service Retry-After delays take precedence. Operations and shutdown have deadlines; a replacement cannot overlap a worker whose exit is unconfirmed.
|
|
85
|
+
|
|
86
|
+
`--probe-port` is optional, repeatable, and limited to 16 distinct configured ports. Each check compares direct local TCP connectivity with an independent authenticated connection through the tunnel. Consecutive forwarding failures can replace the host after a 30-second startup cooldown. An unavailable local application does not trigger host-restart loops. Probes need connect permission in addition to the host permission required for hosting.
|
|
87
|
+
|
|
88
|
+
Output is sanitized JSON. The command reports relay connectivity before checking probe ports. `connected` means the relay is connected; `verified` means every selected TCP probe passed; `degraded` reports local-service or probe failures. `localUnavailable`, `verifiedPorts`, and `probeFault` distinguish those conditions. Without explicit probes, the command never reports `verified`. A TCP connection check does not establish application correctness.
|
|
89
|
+
|
|
90
|
+
Sign-in rejection, permission denial, invalid configuration, takeover by another host and failed owned-endpoint cleanup stop automatic hosting. Fix the reported condition, then explicitly restart. Terminal host faults appear as `fault` output and a successful supervisor exit, which prevents launchd from restarting them. A cleanup failure during explicit shutdown still emits `host-cleanup-failed`. Do not interpret exit code zero alone as proof of healthy hosting.
|
|
91
|
+
|
|
92
|
+
Restart a loaded macOS job with `host-service stop TUNNEL` followed by `host-service start TUNNEL`.
|
|
93
|
+
|
|
94
|
+
Foreground mode works on macOS, Linux/WSL and Windows. On macOS, install a separate per-tunnel login service:
|
|
95
|
+
|
|
96
|
+
```sh
|
|
97
|
+
devtunnel-ctl host-service install host-name --probe-port 22
|
|
98
|
+
devtunnel-ctl host-service start host-name
|
|
99
|
+
devtunnel-ctl host-service status host-name
|
|
100
|
+
devtunnel-ctl host-service stop host-name
|
|
101
|
+
devtunnel-ctl host-service uninstall host-name
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Install accepts `--helper`, `--cluster` and repeated `--probe-port` options, and **does not start hosting**. Use the same tunnel, cluster and global `--state-dir` when addressing the job. Installation pins absolute runtime, entrypoint and helper paths. Stop/uninstall/reinstall to change those paths or probe settings. Host jobs do not share the client daemon or its configuration.
|
|
105
|
+
|
|
106
|
+
On macOS and Linux, each tunnel keeps private bounded logs and status under `STATE/hosts/IDENTITY/`. `host-service status` distinguishes launchd registration from a fresh status snapshot belonging to its current PID. A stopped job's historical status is not a responsive host. Uninstall retains logs and status. Windows foreground mode writes no POSIX state and rejects `--state-dir`; Linux and Windows service installation are not supported.
|
|
107
|
+
|
|
108
|
+
## Client profiles and commands
|
|
64
109
|
|
|
65
110
|
Each profile maps one remote SSH port to one fixed local port. Both `127.0.0.1:PORT` and `[::1]:PORT` are bound exclusively; there is no LAN listener and no automatic port shifting. A conflict on either address fails that profile explicitly. An IPv6-disabled environment must enable IPv6 loopback before using this version.
|
|
66
111
|
|
|
@@ -88,7 +133,7 @@ Existing aliases remain unchanged when the same local port is assigned to a prof
|
|
|
88
133
|
|
|
89
134
|
## Authentication
|
|
90
135
|
|
|
91
|
-
The SDK performs connection and forwarding work. The Microsoft CLI is used **only** for explicit sign-in and acquiring short-lived
|
|
136
|
+
The SDK performs hosting, connection and forwarding work. The Microsoft CLI is used **only** for explicit sign-in and acquiring short-lived tunnel tokens. Client forwarding requests connect scope; hosting requests host scope and its optional independent probes request connect scope. Scope-specific caches and in-flight acquisitions stay separate:
|
|
92
137
|
|
|
93
138
|
```sh
|
|
94
139
|
devtunnel-ctl login
|
|
@@ -106,7 +151,7 @@ The parser accepts a JSON string containing a JWT or an object with a `token` JW
|
|
|
106
151
|
|
|
107
152
|
Specify the cluster explicitly (`ID.CLUSTER` or `--cluster`) for predictable routing. For an unqualified ID, the currently issued token's validated-format `clusterId` claim is used only as a routing hint, not as proof of authorization. If that hint is absent, status requests an explicit cluster rather than guessing. TLS and SDK host-key checks remain enabled; endpoint metadata without published host public keys is rejected, including during refresh. The SDK's default E2E encryption request is preserved.
|
|
108
153
|
|
|
109
|
-
##
|
|
154
|
+
## Client recovery policy
|
|
110
155
|
|
|
111
156
|
| Signal or condition | Behavior |
|
|
112
157
|
| --- | --- |
|
|
@@ -211,6 +256,8 @@ npm test
|
|
|
211
256
|
|
|
212
257
|
Tests use Node's built-in runner and type stripping. They cover private configuration and helper handling, actual dual-loopback binds/conflicts, forwarding backpressure and half-close, queued-write draining after remote EOF, abrupt remote closure, SSH banners, fake-clock recovery/deadlines/long gaps, stale async completions, authentication/endpoint refresh, redaction/rotation, malformed and oversized IPC, concurrent daemon locking, and real CLI/daemon subprocess restart flows. Large-response assertions compare byte counts and equality without rendering multi-megabyte buffer diffs. All verification daemons are isolated and shut down by their tests.
|
|
213
258
|
|
|
259
|
+
Host tests additionally exercise scope separation, worker crashes and forced shutdown, missing heartbeats, takeover stops, probe/local-service classification, owned-endpoint cleanup and macOS host-job generation. Windows CI runs the portable host tests separately from POSIX daemon tests. These checks do not establish live host recovery or install/start a real service.
|
|
260
|
+
|
|
214
261
|
## Package verification and publishing
|
|
215
262
|
|
|
216
263
|
The npm package is `@jonathanyee/devtunnel-ctl`; the installed command remains `devtunnel-ctl`. The project is MIT-licensed; see [LICENSE](LICENSE).
|
|
@@ -229,7 +276,7 @@ npm run package:check -- --verify-only --expected-version 0.1.0
|
|
|
229
276
|
|
|
230
277
|
- Allows only `dist`, package metadata, README, license and `npm-shrinkwrap.json`; it rejects source, tests, scripts, workflows and unexpected files.
|
|
231
278
|
- Installs the tarball into an isolated temporary global prefix, without development dependencies, credentials or installation scripts.
|
|
232
|
-
- Runs the installed command outside the checkout, verifies its runtime dependencies are inside that prefix,
|
|
279
|
+
- Runs the installed command outside the checkout, verifies its runtime dependencies are inside that prefix, exercises an isolated daemon/status/paused-profile flow, and checks host-worker dispatch with a deliberately missing helper. These checks do not connect to real tunnels.
|
|
233
280
|
- Stops that daemon and removes temporary installation/state directories.
|
|
234
281
|
- Writes the checked tarball and `result.json` under ignored `.artifacts/`. The result includes SHA-512 integrity; `--verify-only` rejects incomplete reports or modified artifacts.
|
|
235
282
|
|
package/dist/auth.d.ts
CHANGED
|
@@ -10,14 +10,15 @@ type Reference = {
|
|
|
10
10
|
tunnelId: string;
|
|
11
11
|
clusterId?: string;
|
|
12
12
|
};
|
|
13
|
+
export type TokenScope = 'connect' | 'host';
|
|
13
14
|
export declare class TokenProvider {
|
|
14
15
|
private readonly cache;
|
|
15
16
|
private readonly flights;
|
|
16
17
|
readonly path: string;
|
|
17
18
|
private readonly runner;
|
|
18
19
|
constructor(path: string, runner?: Runner);
|
|
19
|
-
get(ref: Reference, signal?: AbortSignal, refresh?: boolean): Promise<Token>;
|
|
20
|
+
get(ref: Reference, signal?: AbortSignal, refresh?: boolean, scope?: TokenScope): Promise<Token>;
|
|
20
21
|
clear(): void;
|
|
21
|
-
invalidate(ref: Reference): void;
|
|
22
|
+
invalidate(ref: Reference, scope?: TokenScope): void;
|
|
22
23
|
}
|
|
23
24
|
export {};
|
package/dist/auth.js
CHANGED
|
@@ -97,8 +97,9 @@ export class TokenProvider {
|
|
|
97
97
|
path;
|
|
98
98
|
runner;
|
|
99
99
|
constructor(path, runner = runHelper) { this.path = path; this.runner = runner; }
|
|
100
|
-
async get(ref, signal, refresh = false) {
|
|
101
|
-
const
|
|
100
|
+
async get(ref, signal, refresh = false, scope = 'connect') {
|
|
101
|
+
const tunnel = ref.tunnelId + (ref.clusterId ? `.${ref.clusterId}` : '');
|
|
102
|
+
const key = `${scope}:${tunnel}`;
|
|
102
103
|
if (signal?.aborted)
|
|
103
104
|
throw new Fault('aborted');
|
|
104
105
|
if (refresh)
|
|
@@ -113,7 +114,7 @@ export class TokenProvider {
|
|
|
113
114
|
}
|
|
114
115
|
if (!flight) {
|
|
115
116
|
const controller = new AbortController();
|
|
116
|
-
const promise = this.runner(this.path, ['token',
|
|
117
|
+
const promise = this.runner(this.path, ['token', tunnel, '--scopes', scope, '--json'], controller.signal)
|
|
117
118
|
.then(output => {
|
|
118
119
|
if (controller.signal.aborted)
|
|
119
120
|
throw new Fault('aborted');
|
|
@@ -142,8 +143,8 @@ export class TokenProvider {
|
|
|
142
143
|
flight.controller.abort();
|
|
143
144
|
this.flights.clear();
|
|
144
145
|
}
|
|
145
|
-
invalidate(ref) {
|
|
146
|
-
const key = ref.tunnelId
|
|
146
|
+
invalidate(ref, scope = 'connect') {
|
|
147
|
+
const key = `${scope}:${ref.tunnelId}${ref.clusterId ? `.${ref.clusterId}` : ''}`;
|
|
147
148
|
this.cache.delete(key);
|
|
148
149
|
}
|
|
149
150
|
}
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const help = "devtunnel-ctl - resilient
|
|
1
|
+
export declare const help = "devtunnel-ctl - resilient Dev Tunnels hosting and SSH forwarding\n\n init [--helper /absolute/path/devtunnel]\n host TUNNEL[.CLUSTER] [--helper /absolute/path/devtunnel] [--cluster ID] [--probe-port PORT ...]\n host-service install|start|stop|uninstall|status TUNNEL [--cluster ID]\n install also accepts --helper and repeatable --probe-port (macOS only)\n daemon Foreground service; Ctrl-C stops it\n profile add NAME --tunnel ID[.CLUSTER] --local PORT [--remote 22] [--cluster ID] [--paused]\n profile list | status [NAME] [--json]\n pause NAME|all | resume NAME|all | reconnect NAME|all\n logs [--follow] Recent sanitized logs from the running daemon\n login [--device-code] [--github] Explicit devtunnel sign-in only\n service install|start|stop|uninstall|status\n\nGlobal: --state-dir /absolute/private/directory, --help\nState defaults to ~/.devtunnel-ctl. Start a daemon before modifying profiles.\nReconnect never unpauses. Stable ports never shift. Fresh clients may break SSH sessions.\nHost preserves all configured ports. Probes check only explicitly selected ports.\nStarting a host may displace another host. Replacement disconnects active clients.\nWindows supports foreground host only; pass --helper with an absolute devtunnel.exe path.\n";
|
|
2
2
|
export declare function cli(args: string[], entry: string): Promise<void>;
|
|
3
3
|
export declare function report(error: unknown): void;
|
package/dist/cli.js
CHANGED
|
@@ -8,9 +8,15 @@ import { request } from "./rpc.js";
|
|
|
8
8
|
import { Daemon } from "./daemon.js";
|
|
9
9
|
import { DaemonLock } from "./lock.js";
|
|
10
10
|
import { service } from "./launchd.js";
|
|
11
|
-
|
|
11
|
+
import { validateHost } from "./host.js";
|
|
12
|
+
import { runHost } from "./host-process.js";
|
|
13
|
+
import { hostService, serveHost } from "./host-service.js";
|
|
14
|
+
export const help = `devtunnel-ctl - resilient Dev Tunnels hosting and SSH forwarding
|
|
12
15
|
|
|
13
16
|
init [--helper /absolute/path/devtunnel]
|
|
17
|
+
host TUNNEL[.CLUSTER] [--helper /absolute/path/devtunnel] [--cluster ID] [--probe-port PORT ...]
|
|
18
|
+
host-service install|start|stop|uninstall|status TUNNEL [--cluster ID]
|
|
19
|
+
install also accepts --helper and repeatable --probe-port (macOS only)
|
|
14
20
|
daemon Foreground service; Ctrl-C stops it
|
|
15
21
|
profile add NAME --tunnel ID[.CLUSTER] --local PORT [--remote 22] [--cluster ID] [--paused]
|
|
16
22
|
profile list | status [NAME] [--json]
|
|
@@ -22,12 +28,16 @@ export const help = `devtunnel-ctl - resilient SSH-only Dev Tunnels forwarding
|
|
|
22
28
|
Global: --state-dir /absolute/private/directory, --help
|
|
23
29
|
State defaults to ~/.devtunnel-ctl. Start a daemon before modifying profiles.
|
|
24
30
|
Reconnect never unpauses. Stable ports never shift. Fresh clients may break SSH sessions.
|
|
31
|
+
Host preserves all configured ports. Probes check only explicitly selected ports.
|
|
32
|
+
Starting a host may displace another host. Replacement disconnects active clients.
|
|
33
|
+
Windows supports foreground host only; pass --helper with an absolute devtunnel.exe path.
|
|
25
34
|
`;
|
|
26
35
|
function argumentsFor(args) {
|
|
27
36
|
try {
|
|
28
37
|
return parseArgs({ args, allowPositionals: true, strict: true, options: {
|
|
29
38
|
'state-dir': { type: 'string' }, helper: { type: 'string' }, tunnel: { type: 'string' },
|
|
30
39
|
local: { type: 'string' }, remote: { type: 'string' }, cluster: { type: 'string' },
|
|
40
|
+
'probe-port': { type: 'string', multiple: true },
|
|
31
41
|
paused: { type: 'boolean' }, json: { type: 'boolean' }, follow: { type: 'boolean' },
|
|
32
42
|
'device-code': { type: 'boolean' }, github: { type: 'boolean' }, help: { type: 'boolean', short: 'h' },
|
|
33
43
|
} });
|
|
@@ -47,10 +57,40 @@ export async function cli(args, entry) {
|
|
|
47
57
|
const allowed = {
|
|
48
58
|
init: ['helper'], daemon: [], profile: sub === 'add' ? ['tunnel', 'local', 'remote', 'cluster', 'paused'] : ['json'],
|
|
49
59
|
status: ['json'], pause: [], resume: [], reconnect: [], logs: ['follow'], login: ['device-code', 'github'], service: [],
|
|
60
|
+
host: ['helper', 'cluster', 'probe-port'],
|
|
61
|
+
'host-service': sub === 'install' ? ['helper', 'cluster', 'probe-port'] : ['cluster'],
|
|
50
62
|
};
|
|
51
63
|
if (!command || !(command in allowed) || Object.keys(flags).some(k => k !== 'state-dir' && !allowed[command].includes(k))) {
|
|
52
64
|
throw new Fault('invalid-config', 'Unknown command or misplaced option. Run devtunnel-ctl --help.');
|
|
53
65
|
}
|
|
66
|
+
if (command === 'host' || command === 'host-service') {
|
|
67
|
+
const actions = ['install', 'start', 'stop', 'uninstall', 'status'];
|
|
68
|
+
const tunnelId = command === 'host' ? sub : name;
|
|
69
|
+
if (!tunnelId || words.length !== (command === 'host' ? 2 : 3) ||
|
|
70
|
+
(command === 'host-service' && !actions.includes(sub ?? '')))
|
|
71
|
+
throw new Fault('invalid-config', 'Use host TUNNEL or host-service ACTION TUNNEL.');
|
|
72
|
+
if (process.platform === 'win32' && (command !== 'host' || flags['state-dir'])) {
|
|
73
|
+
throw new Fault('invalid-config', 'Windows supports foreground host only, without --state-dir. Pass an absolute --helper path.');
|
|
74
|
+
}
|
|
75
|
+
const store = new Store(stateDir(flags['state-dir']));
|
|
76
|
+
const helperPath = flags.helper ?? (process.platform === 'win32' ? undefined : (await store.load()).helperPath);
|
|
77
|
+
if (!helperPath)
|
|
78
|
+
throw new Fault('invalid-config', 'Specify --helper with the absolute path to devtunnel.exe.');
|
|
79
|
+
const options = validateHost({ tunnelId, clusterId: flags.cluster, helperPath,
|
|
80
|
+
probePorts: (flags['probe-port'] ?? []).map(Number) });
|
|
81
|
+
if (command === 'host-service') {
|
|
82
|
+
console.log(JSON.stringify(await hostService(sub, options, store.dir, entry)));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
console.error('Hosting may displace another host. Recovery replacements can disconnect existing clients.');
|
|
86
|
+
if (process.platform === 'win32')
|
|
87
|
+
await runHost(options, message => console.log(JSON.stringify(message)));
|
|
88
|
+
else
|
|
89
|
+
await serveHost(options, store.dir);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (process.platform === 'win32')
|
|
93
|
+
throw new Fault('invalid-config', 'Windows supports foreground host only. Client daemon and service commands require macOS or Linux.');
|
|
54
94
|
const store = new Store(stateDir(flags['state-dir']));
|
|
55
95
|
await store.init();
|
|
56
96
|
const socket = join(store.dir, 'control.sock');
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/core.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type FaultCode = 'login-required' | 'access-denied' | 'port-conflict' | 'remote-unavailable' | 'retrying' | 'throttled' | 'timeout' | 'aborted' | 'invalid-config' | 'protocol' | 'daemon-unavailable' | 'internal';
|
|
1
|
+
export type FaultCode = 'login-required' | 'access-denied' | 'port-conflict' | 'remote-unavailable' | 'retrying' | 'throttled' | 'timeout' | 'aborted' | 'invalid-config' | 'protocol' | 'daemon-unavailable' | 'internal' | 'host-superseded' | 'host-cleanup-failed';
|
|
2
2
|
export declare class Fault extends Error {
|
|
3
3
|
readonly code: FaultCode;
|
|
4
4
|
readonly retryAfterMs: number;
|
package/dist/core.js
CHANGED
|
@@ -11,6 +11,8 @@ const messages = {
|
|
|
11
11
|
protocol: 'Invalid or oversized control message.',
|
|
12
12
|
'daemon-unavailable': 'Daemon unavailable. Run devtunnel-ctl daemon or start the installed service.',
|
|
13
13
|
internal: 'Operation failed. Check configuration and sanitized service logs.',
|
|
14
|
+
'host-superseded': 'Another host took over this tunnel. Automatic hosting stopped to avoid reconnect contention.',
|
|
15
|
+
'host-cleanup-failed': 'Owned host endpoint cleanup failed. Automatic hosting stopped; inspect this tunnel before starting another host.',
|
|
14
16
|
};
|
|
15
17
|
export class Fault extends Error {
|
|
16
18
|
code;
|
package/dist/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAIA,MAAM,QAAQ,GAA8B;IAC1C,gBAAgB,EAAE,4DAA4D;IAC9E,eAAe,EAAE,iEAAiE;IAClF,eAAe,EAAE,sFAAsF;IACvG,oBAAoB,EAAE,gFAAgF;IACtG,QAAQ,EAAE,8CAA8C;IACxD,SAAS,EAAE,2DAA2D;IACtE,OAAO,EAAE,kCAAkC;IAC3C,OAAO,EAAE,sBAAsB;IAC/B,gBAAgB,EAAE,wBAAwB;IAC1C,QAAQ,EAAE,uCAAuC;IACjD,oBAAoB,EAAE,8EAA8E;IACpG,QAAQ,EAAE,mEAAmE;
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { HostMessage, HostOptions } from './host.ts';
|
|
2
|
+
import { retireHostEndpoint } from './host-sdk.ts';
|
|
3
|
+
export declare function runHostWorker(options: HostOptions, emit: (message: HostMessage) => void, signal: AbortSignal, entry?: URL, retire?: typeof retireHostEndpoint): Promise<void>;
|
|
4
|
+
export declare function runHost(options: HostOptions, report: (message: HostMessage) => void, parent?: AbortSignal): Promise<void>;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { fork } from 'node:child_process';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
import { Fault, safeFault } from "./core.js";
|
|
4
|
+
import { parseHostMessage, superviseHost } from "./host.js";
|
|
5
|
+
import { retireHostEndpoint } from "./host-sdk.js";
|
|
6
|
+
export async function runHostWorker(options, emit, signal, entry = new URL(import.meta.url.endsWith('.ts') ? './host-worker.ts' : './host-worker.js', import.meta.url), retire = retireHostEndpoint) {
|
|
7
|
+
if (signal.aborted)
|
|
8
|
+
return;
|
|
9
|
+
let endpoint;
|
|
10
|
+
let failure;
|
|
11
|
+
await new Promise((resolve, reject) => {
|
|
12
|
+
const child = fork(fileURLToPath(entry), [], {
|
|
13
|
+
execArgv: [], stdio: ['ignore', 'ignore', 'ignore', 'ipc'],
|
|
14
|
+
env: { ...process.env, NODE_OPTIONS: '', NODE_PATH: '' },
|
|
15
|
+
});
|
|
16
|
+
let stopping = false, exited = false;
|
|
17
|
+
let terminate;
|
|
18
|
+
let kill;
|
|
19
|
+
const stop = () => {
|
|
20
|
+
if (stopping || exited)
|
|
21
|
+
return;
|
|
22
|
+
stopping = true;
|
|
23
|
+
if (child.connected)
|
|
24
|
+
child.send({ kind: 'stop' }, error => { if (error && !exited)
|
|
25
|
+
child.kill('SIGTERM'); });
|
|
26
|
+
terminate = setTimeout(() => { if (!exited)
|
|
27
|
+
child.kill('SIGTERM'); }, 2500);
|
|
28
|
+
kill = setTimeout(() => { if (!exited)
|
|
29
|
+
child.kill('SIGKILL'); }, 3000);
|
|
30
|
+
};
|
|
31
|
+
signal.addEventListener('abort', stop, { once: true });
|
|
32
|
+
child.once('spawn', () => {
|
|
33
|
+
if (signal.aborted) {
|
|
34
|
+
stop();
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
child.send({ kind: 'start', options }, error => {
|
|
38
|
+
if (error) {
|
|
39
|
+
failure ??= new Fault('protocol');
|
|
40
|
+
stop();
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
child.on('message', value => {
|
|
45
|
+
if (stopping)
|
|
46
|
+
return;
|
|
47
|
+
const message = parseHostMessage(value);
|
|
48
|
+
if (!message) {
|
|
49
|
+
failure ??= new Fault('protocol');
|
|
50
|
+
stop();
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (message.kind === 'endpoint') {
|
|
54
|
+
if (endpoint && (endpoint.id !== message.id || endpoint.clusterId !== message.clusterId)) {
|
|
55
|
+
failure ??= new Fault('protocol');
|
|
56
|
+
stop();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
endpoint = message;
|
|
60
|
+
child.send({ kind: 'endpoint-recorded', id: message.id }, error => {
|
|
61
|
+
if (error && !exited) {
|
|
62
|
+
failure ??= new Fault('protocol');
|
|
63
|
+
stop();
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
if (message.kind === 'fault')
|
|
69
|
+
failure ??= new Fault(message.code, undefined, message.retryAfterMs);
|
|
70
|
+
emit(message);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
child.once('error', () => { failure ??= new Fault('invalid-config', 'Cannot start the host worker. Check the Node runtime and installed package.'); });
|
|
74
|
+
child.once('close', () => {
|
|
75
|
+
exited = true;
|
|
76
|
+
clearTimeout(terminate);
|
|
77
|
+
clearTimeout(kill);
|
|
78
|
+
signal.removeEventListener('abort', stop);
|
|
79
|
+
if (!signal.aborted)
|
|
80
|
+
reject(failure ?? new Fault('retrying'));
|
|
81
|
+
else
|
|
82
|
+
resolve();
|
|
83
|
+
});
|
|
84
|
+
if (signal.aborted)
|
|
85
|
+
stop();
|
|
86
|
+
}).catch(error => { failure ??= safeFault(error); });
|
|
87
|
+
if (endpoint)
|
|
88
|
+
await retire(options, endpoint);
|
|
89
|
+
if (failure && !signal.aborted)
|
|
90
|
+
throw failure;
|
|
91
|
+
}
|
|
92
|
+
export async function runHost(options, report, parent) {
|
|
93
|
+
const stop = new AbortController();
|
|
94
|
+
const abort = () => stop.abort();
|
|
95
|
+
parent?.addEventListener('abort', abort, { once: true });
|
|
96
|
+
if (parent?.aborted)
|
|
97
|
+
stop.abort();
|
|
98
|
+
const signals = process.platform === 'win32' ? ['SIGINT', 'SIGTERM', 'SIGBREAK'] : ['SIGINT', 'SIGTERM'];
|
|
99
|
+
for (const signal of signals)
|
|
100
|
+
process.once(signal, abort);
|
|
101
|
+
try {
|
|
102
|
+
await superviseHost(options, { worker: runHostWorker, report }, stop.signal);
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
parent?.removeEventListener('abort', abort);
|
|
106
|
+
for (const signal of signals)
|
|
107
|
+
process.off(signal, abort);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=host-process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-process.js","sourceRoot":"","sources":["../src/host-process.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Agent } from 'node:https';
|
|
2
|
+
import { TunnelRelayTunnelHost } from '@microsoft/dev-tunnels-connections';
|
|
3
|
+
import { TunnelManagementHttpClient } from '@microsoft/dev-tunnels-management';
|
|
4
|
+
import { TokenProvider } from './auth.ts';
|
|
5
|
+
import type { HostMessage, HostOptions, HostStatus } from './host.ts';
|
|
6
|
+
import { sleep } from './host.ts';
|
|
7
|
+
type HostManagement = TunnelManagementHttpClient & {
|
|
8
|
+
readonly httpsAgent: Agent;
|
|
9
|
+
};
|
|
10
|
+
export declare function hostManagement(agent: Agent): HostManagement;
|
|
11
|
+
export declare function localPort(port: number, signal: AbortSignal): Promise<void>;
|
|
12
|
+
interface ProbeDependencies {
|
|
13
|
+
local(port: number, signal: AbortSignal): Promise<void>;
|
|
14
|
+
remote(port: number, signal: AbortSignal): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
export declare class HostProbe {
|
|
17
|
+
private readonly ports;
|
|
18
|
+
private readonly deps;
|
|
19
|
+
private readonly failures;
|
|
20
|
+
private retryAt;
|
|
21
|
+
constructor(ports: number[], deps: ProbeDependencies);
|
|
22
|
+
check(ports: number[], signal: AbortSignal, age: number): Promise<{
|
|
23
|
+
status: HostStatus;
|
|
24
|
+
replace: boolean;
|
|
25
|
+
}>;
|
|
26
|
+
}
|
|
27
|
+
interface HostSdkDependencies {
|
|
28
|
+
tokens?: TokenProvider;
|
|
29
|
+
management?(agent: Agent): TunnelManagementHttpClient;
|
|
30
|
+
host?(management: HostManagement): TunnelRelayTunnelHost;
|
|
31
|
+
now?(): number;
|
|
32
|
+
wait?: typeof sleep;
|
|
33
|
+
}
|
|
34
|
+
export declare function runHostSdk(options: HostOptions, report: (message: HostMessage) => void | Promise<void>, parent: AbortSignal, deps?: HostSdkDependencies): Promise<void>;
|
|
35
|
+
export declare function retireHostEndpoint(options: HostOptions, endpoint: Extract<HostMessage, {
|
|
36
|
+
kind: 'endpoint';
|
|
37
|
+
}>, deps?: Pick<HostSdkDependencies, 'tokens' | 'management'>): Promise<void>;
|
|
38
|
+
export {};
|