@hydra-acp/browser 0.1.46 → 0.1.47
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 +130 -88
- package/dist/config.js +7 -2
- package/dist/config.js.map +1 -1
- package/dist/index.js +37 -5
- package/dist/index.js.map +1 -1
- package/dist/server/http.js +8 -1
- package/dist/server/http.js.map +1 -1
- package/dist/setup/tailscale-wizard.js +22 -11
- package/dist/setup/tailscale-wizard.js.map +1 -1
- package/dist/ui/index.html +54 -18
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -11,6 +11,128 @@ The hydra master token never leaves the machine; the browser authenticates
|
|
|
11
11
|
you with a password (set via `hydra-acp auth password`) and issues its own
|
|
12
12
|
session cookie.
|
|
13
13
|
|
|
14
|
+
## Install
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
npm install -g @hydra-acp/cli @hydra-acp/browser
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
This drops the `hydra-acp` (and `hydra`) CLI plus an `hydra-acp-browser`
|
|
21
|
+
binary on your PATH. The CLI dispatches `hydra-acp <name>` to any
|
|
22
|
+
`hydra-acp-<name>` binary on PATH, so the browser is also reachable as
|
|
23
|
+
`hydra-acp browser`.
|
|
24
|
+
|
|
25
|
+
Register it as a hydra extension:
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
hydra-acp extensions add hydra-acp-browser
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
`extensions add` is config-only — it doesn't spawn anything yet. Either
|
|
32
|
+
bounce the daemon, or, if the daemon is already running, kick the
|
|
33
|
+
extension into life:
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
hydra-acp extensions start hydra-acp-browser
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Set the sign-in password once, on the machine running the daemon:
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
hydra-acp auth password
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Open the printed URL and log in with the password you just set; a
|
|
46
|
+
successful login sets an `hb_session` cookie and subsequent requests are
|
|
47
|
+
authenticated by that cookie alone.
|
|
48
|
+
|
|
49
|
+
That's the whole setup for local (loopback) use. If you land on an empty
|
|
50
|
+
session list, that's likely because no agent is configured yet — the
|
|
51
|
+
browser is a client of hydra-acp, not a coding agent itself. Pick one
|
|
52
|
+
with `hydra-acp agent list` / `hydra-acp agent set <id>`; see
|
|
53
|
+
[hydra-acp's README](https://github.com/smagnuso/hydra-acp#choosing-an-agent)
|
|
54
|
+
for the full picture (auth, per-session/per-editor overrides, switching
|
|
55
|
+
mid-conversation).
|
|
56
|
+
|
|
57
|
+
Building from source instead, or want it reachable from your phone? Keep
|
|
58
|
+
reading.
|
|
59
|
+
|
|
60
|
+
## Access from your phone or over your LAN
|
|
61
|
+
|
|
62
|
+
Loopback-only access needs nothing extra. Reaching it from another
|
|
63
|
+
device means binding to a real interface, which requires HTTPS (the
|
|
64
|
+
server refuses a non-loopback bind otherwise — same rule as the hydra
|
|
65
|
+
daemon).
|
|
66
|
+
|
|
67
|
+
If you're on Tailscale, this is one command:
|
|
68
|
+
|
|
69
|
+
```sh
|
|
70
|
+
hydra-acp-browser tailscale setup
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
It mints a real Let's Encrypt cert via `tailscale cert`, binds to your
|
|
74
|
+
tailnet IP, and restarts the extension for you. It also sets
|
|
75
|
+
`BROWSER_PREFERRED_HOST` to your MagicDNS name, so the server shows and
|
|
76
|
+
QR-encodes the friendly `mybox.tailxxxx.ts.net` hostname instead of the
|
|
77
|
+
raw tailnet IP. See [HTTPS](#https) below for the self-signed alternative
|
|
78
|
+
if you're not on Tailscale, plus cert-trust steps for iOS/macOS/Linux.
|
|
79
|
+
|
|
80
|
+
Grab the URL (and a scannable QR code for your phone) any time, without
|
|
81
|
+
starting anything, with:
|
|
82
|
+
|
|
83
|
+
```sh
|
|
84
|
+
hydra-acp-browser url
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Building from source
|
|
88
|
+
|
|
89
|
+
```sh
|
|
90
|
+
git clone https://github.com/smagnuso/hydra-acp-browser.git ~/dev/hydra-acp-browser
|
|
91
|
+
cd ~/dev/hydra-acp-browser
|
|
92
|
+
npm install
|
|
93
|
+
npm run build
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Point the extension at the build instead of the npm binary:
|
|
97
|
+
|
|
98
|
+
```sh
|
|
99
|
+
hydra-acp extensions add hydra-acp-browser \
|
|
100
|
+
--command node \
|
|
101
|
+
--args ~/dev/hydra-acp-browser/dist/index.js
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
That writes the equivalent entry into `~/.hydra-acp/config.json`:
|
|
105
|
+
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"extensions": {
|
|
109
|
+
"hydra-acp-browser": {
|
|
110
|
+
"command": ["node"],
|
|
111
|
+
"args": ["/home/you/dev/hydra-acp-browser/dist/index.js"],
|
|
112
|
+
"enabled": true
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
After a rebuild, `restart` (not `start`) is the right call:
|
|
119
|
+
|
|
120
|
+
```sh
|
|
121
|
+
hydra-acp extensions restart hydra-acp-browser
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
On startup, hydra spawns hydra-acp-browser with these env vars set:
|
|
125
|
+
`HYDRA_ACP_DAEMON_URL`, `HYDRA_ACP_TOKEN`, `HYDRA_ACP_WS_URL`.
|
|
126
|
+
Stdout/stderr land in `~/.hydra-acp/extensions/hydra-acp-browser.log`.
|
|
127
|
+
|
|
128
|
+
**Running standalone**, without the hydra extension wrapper: set
|
|
129
|
+
`HYDRA_TOKEN` in `~/.hydra-acp/browser.conf` (or export
|
|
130
|
+
`HYDRA_ACP_TOKEN`), then:
|
|
131
|
+
|
|
132
|
+
```sh
|
|
133
|
+
npm start
|
|
134
|
+
```
|
|
135
|
+
|
|
14
136
|
## How it works
|
|
15
137
|
|
|
16
138
|
```
|
|
@@ -37,88 +159,6 @@ The extension exposes:
|
|
|
37
159
|
`session/set_model`, plus permission responses) so a tab can't issue
|
|
38
160
|
arbitrary admin calls.
|
|
39
161
|
|
|
40
|
-
## Setup
|
|
41
|
-
|
|
42
|
-
1. **Install or build.**
|
|
43
|
-
|
|
44
|
-
From npm (recommended once published):
|
|
45
|
-
|
|
46
|
-
```sh
|
|
47
|
-
npm install -g @hydra-acp/cli @hydra-acp/browser
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
This drops the `hydra-acp` (and `hydra`) CLI plus an `hydra-acp-browser` binary on your PATH. The CLI dispatches `hydra-acp <name>` to any `hydra-acp-<name>` binary on PATH, so the browser is also reachable as `hydra-acp browser`.
|
|
51
|
-
|
|
52
|
-
Or from source:
|
|
53
|
-
|
|
54
|
-
```sh
|
|
55
|
-
git clone https://github.com/smagnuso/hydra-acp-browser.git ~/dev/hydra-acp-browser
|
|
56
|
-
cd ~/dev/hydra-acp-browser
|
|
57
|
-
npm install
|
|
58
|
-
npm run build
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
2. **Run as a hydra extension (recommended).** Register the extension
|
|
62
|
-
with hydra. If installed via npm:
|
|
63
|
-
|
|
64
|
-
```sh
|
|
65
|
-
hydra-acp extensions add hydra-acp-browser --command hydra-acp-browser
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Or pointed at a local build:
|
|
69
|
-
|
|
70
|
-
```sh
|
|
71
|
-
hydra-acp extensions add hydra-acp-browser \
|
|
72
|
-
--command node \
|
|
73
|
-
--args ~/dev/hydra-acp-browser/dist/index.js
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
That writes the equivalent entry into `~/.hydra-acp/config.json`:
|
|
77
|
-
|
|
78
|
-
```json
|
|
79
|
-
{
|
|
80
|
-
"extensions": {
|
|
81
|
-
"hydra-acp-browser": {
|
|
82
|
-
"command": ["node"],
|
|
83
|
-
"args": ["/home/you/dev/hydra-acp-browser/dist/index.js"],
|
|
84
|
-
"enabled": true
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
`extensions add` is config-only — it doesn't spawn anything yet.
|
|
91
|
-
Either bounce the daemon, or, if the daemon is already running,
|
|
92
|
-
kick the extension into life:
|
|
93
|
-
|
|
94
|
-
```sh
|
|
95
|
-
hydra-acp extensions start hydra-acp-browser
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
On startup, hydra spawns hydra-acp-browser with these env vars set:
|
|
99
|
-
`HYDRA_ACP_DAEMON_URL`, `HYDRA_ACP_TOKEN`, `HYDRA_ACP_WS_URL`. It writes
|
|
100
|
-
the URL to open to `~/.hydra-acp/browser/link`. Set the sign-in password
|
|
101
|
-
once on the daemon host with `hydra-acp auth password`; the browser's
|
|
102
|
-
login page authenticates against that.
|
|
103
|
-
Stdout/stderr land in `~/.hydra-acp/extensions/hydra-acp-browser.log`.
|
|
104
|
-
Lifecycle is managed with
|
|
105
|
-
`hydra-acp extensions start|stop|restart hydra-acp-browser` —
|
|
106
|
-
`restart` is the right call after `npm run build`. Tail the log
|
|
107
|
-
with `hydra-acp extensions log hydra-acp-browser -f` (the open URL
|
|
108
|
-
shows up there on first launch).
|
|
109
|
-
|
|
110
|
-
3. **Run standalone (alternative).** Set `HYDRA_TOKEN` in
|
|
111
|
-
`~/.hydra-acp/browser.conf` (or export `HYDRA_ACP_TOKEN`), then:
|
|
112
|
-
|
|
113
|
-
```sh
|
|
114
|
-
npm start
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
4. **Open the browser** to the URL printed on stderr (also at
|
|
118
|
-
`~/.hydra-acp/browser/link`). Enter the password from step 2; a
|
|
119
|
-
successful login sets an `hb_session` cookie and subsequent requests
|
|
120
|
-
are authenticated by that cookie alone.
|
|
121
|
-
|
|
122
162
|
## HTTPS
|
|
123
163
|
|
|
124
164
|
Optional on `127.0.0.1`, **required** for any non-loopback bind (the server
|
|
@@ -132,10 +172,11 @@ hydra-acp-browser tailscale setup
|
|
|
132
172
|
|
|
133
173
|
Mints a real Let's Encrypt cert via `tailscale cert`, points
|
|
134
174
|
`BROWSER_TLS_CERT`/`BROWSER_TLS_KEY` at it, binds `BROWSER_HOST` to your
|
|
135
|
-
tailnet IP specifically (not `0.0.0.0` — your LAN never sees it),
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
175
|
+
tailnet IP specifically (not `0.0.0.0` — your LAN never sees it), sets
|
|
176
|
+
`BROWSER_PREFERRED_HOST` to your MagicDNS name (implicitly allowed for the
|
|
177
|
+
Host-header check, and used for display — see `hydra-acp-browser url`),
|
|
178
|
+
and offers to restart the extension. No trust prompts, no manual SAN
|
|
179
|
+
wrangling. Certs expire after ~90 days; re-run the same command to renew.
|
|
139
180
|
|
|
140
181
|
If `tailscale cert` needs root (no `operator` set — see `tailscale set
|
|
141
182
|
--operator=$(whoami)` to fix this permanently), the wizard offers to retry
|
|
@@ -222,6 +263,7 @@ HTTPS won't be sent over plain HTTP — clear cookies for the site (or hit
|
|
|
222
263
|
| `BROWSER_TLS_CERT` | (none) | If set with `BROWSER_TLS_KEY`, listen on HTTPS. |
|
|
223
264
|
| `BROWSER_TLS_KEY` | (none) | Path to TLS key. |
|
|
224
265
|
| `BROWSER_LINK_FILE` | `~/.hydra-acp/browser/link` | URL written for convenience. |
|
|
266
|
+
| `BROWSER_PREFERRED_HOST` | (none) | Hostname shown in the link file/logs and `hydra-acp-browser url` instead of `BROWSER_HOST` (set by `tailscale setup` to your MagicDNS name). Always implicitly allowed for the Host-header check — no need to also list it in `BROWSER_ALLOWED_HOSTS`. |
|
|
225
267
|
| `BROWSER_ALLOWED_HOSTS` | empty | Comma-sep extra Host values for DNS-rebind allowlist (e.g. Tailscale name). |
|
|
226
268
|
| `BROWSER_FILE_MAX_BYTES` | `262144` | Upper bound for `/api/files/read`. |
|
|
227
269
|
| `HYDRA_DAEMON_URL` | from env / `http://127.0.0.1:55514` | `HYDRA_ACP_DAEMON_URL` env wins. |
|
|
@@ -238,8 +280,8 @@ HTTPS won't be sent over plain HTTP — clear cookies for the site (or hit
|
|
|
238
280
|
unless `BROWSER_TLS_CERT` and `BROWSER_TLS_KEY` are configured —
|
|
239
281
|
mirrors hydra's daemon.
|
|
240
282
|
- **DNS-rebind protection.** The `Host` header must match
|
|
241
|
-
`127.0.0.1[:port]`, `localhost[:port]`, or an
|
|
242
|
-
`BROWSER_ALLOWED_HOSTS`.
|
|
283
|
+
`127.0.0.1[:port]`, `localhost[:port]`, `BROWSER_PREFERRED_HOST`, or an
|
|
284
|
+
entry in `BROWSER_ALLOWED_HOSTS`.
|
|
243
285
|
- **CSRF.** State-changing requests check `Origin` (against
|
|
244
286
|
`<scheme>://<allowed-host>:<port>`) and `Sec-Fetch-Site`
|
|
245
287
|
(`same-origin` / `none` only).
|
package/dist/config.js
CHANGED
|
@@ -58,7 +58,8 @@ function commaList(map, key) {
|
|
|
58
58
|
}
|
|
59
59
|
export const DEFAULT_DAEMON_PORT = 55514;
|
|
60
60
|
export const DEFAULT_BROWSER_PORT = 5514;
|
|
61
|
-
export function loadConfig(path = paths.configFile()) {
|
|
61
|
+
export function loadConfig(path = paths.configFile(), opts = {}) {
|
|
62
|
+
const { requireToken = true } = opts;
|
|
62
63
|
let text = "";
|
|
63
64
|
try {
|
|
64
65
|
text = readFileSync(path, "utf8");
|
|
@@ -71,7 +72,10 @@ export function loadConfig(path = paths.configFile()) {
|
|
|
71
72
|
map.get("HYDRA_DAEMON_URL") ??
|
|
72
73
|
`http://127.0.0.1:${DEFAULT_DAEMON_PORT}`;
|
|
73
74
|
const hydraToken = process.env.HYDRA_ACP_TOKEN ?? map.get("HYDRA_TOKEN") ?? "";
|
|
74
|
-
|
|
75
|
+
// Callers that only need the display/bind settings (e.g. the `url`
|
|
76
|
+
// subcommand — it never talks to the daemon) shouldn't have to have a
|
|
77
|
+
// token in scope just to read BROWSER_HOST out of a config file.
|
|
78
|
+
if (!hydraToken && requireToken) {
|
|
75
79
|
throw new Error("Missing HYDRA_ACP_TOKEN env var (or HYDRA_TOKEN config key). When run as a hydra extension, hydra injects this automatically; otherwise set it in ~/.hydra-acp/browser.conf.");
|
|
76
80
|
}
|
|
77
81
|
const hydraWsUrl = process.env.HYDRA_ACP_WS_URL ??
|
|
@@ -91,6 +95,7 @@ export function loadConfig(path = paths.configFile()) {
|
|
|
91
95
|
browserPort: intVal(map, "BROWSER_PORT", DEFAULT_BROWSER_PORT),
|
|
92
96
|
tls,
|
|
93
97
|
linkFile: expandHome(map.get("BROWSER_LINK_FILE") ?? paths.linkFile()),
|
|
98
|
+
preferredHost: map.get("BROWSER_PREFERRED_HOST") || undefined,
|
|
94
99
|
allowedHosts: commaList(map, "BROWSER_ALLOWED_HOSTS"),
|
|
95
100
|
fileMaxBytes: intVal(map, "BROWSER_FILE_MAX_BYTES", 256 * 1024),
|
|
96
101
|
hydraDaemonUrl,
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { writeFileSync, chmodSync, mkdirSync, readFileSync } from "node:fs";
|
|
3
|
+
import { hostname } from "node:os";
|
|
3
4
|
import { dirname, resolve } from "node:path";
|
|
4
5
|
import { fileURLToPath } from "node:url";
|
|
6
|
+
import qrcode from "qrcode-terminal";
|
|
5
7
|
import { loadConfig } from "./config.js";
|
|
6
8
|
import { buildContext, createServer } from "./server/http.js";
|
|
7
9
|
import { registerSessionRoutes } from "./server/routes-sessions.js";
|
|
@@ -38,6 +40,12 @@ async function main(argv) {
|
|
|
38
40
|
await runTailscaleSetup();
|
|
39
41
|
return;
|
|
40
42
|
}
|
|
43
|
+
if (argv[0] === "url") {
|
|
44
|
+
const url = computeDisplayUrl(loadConfig(undefined, { requireToken: false }));
|
|
45
|
+
process.stdout.write(`${url}\n`);
|
|
46
|
+
qrcode.generate(url, { small: true });
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
41
49
|
const config = loadConfig();
|
|
42
50
|
setDebug(config.debug);
|
|
43
51
|
ensureLoopbackOrTls(config.browserHost, !!config.tls);
|
|
@@ -57,7 +65,7 @@ async function main(argv) {
|
|
|
57
65
|
// a failure here is not fatal.
|
|
58
66
|
void registerVersion(config.hydraWsUrl, config.hydraToken);
|
|
59
67
|
const scheme = config.tls ? "https" : "http";
|
|
60
|
-
const url =
|
|
68
|
+
const url = computeDisplayUrl(config);
|
|
61
69
|
writeLinkFile(config.linkFile, url);
|
|
62
70
|
log.info(`hydra daemon: ${config.hydraDaemonUrl}`);
|
|
63
71
|
log.info(`listening on ${scheme}://${config.browserHost}:${config.browserPort}`);
|
|
@@ -100,11 +108,33 @@ async function registerVersion(wsUrl, token) {
|
|
|
100
108
|
conn.stop();
|
|
101
109
|
}
|
|
102
110
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
111
|
+
// preferredHost (set by `tailscale setup` to the tailnet MagicDNS name)
|
|
112
|
+
// wins outright — browserHost itself is bound to a raw IP in that case,
|
|
113
|
+
// not something worth showing anyone. Otherwise 0.0.0.0 is genuinely
|
|
114
|
+
// ambiguous (it's not a value you can put in a browser bar), so this
|
|
115
|
+
// substitutes the machine's own hostname for display purposes only;
|
|
116
|
+
// hostname() essentially never throws, but the fallback keeps a listen
|
|
117
|
+
// that came up fine from getting undone by a display-only lookup.
|
|
118
|
+
// Any other explicit bind host (a specific LAN/tailnet IP, say) is
|
|
119
|
+
// already the precise address to connect to, so it passes through
|
|
120
|
+
// unchanged rather than risking a hostname that resolves somewhere else.
|
|
121
|
+
function resolveDisplayHost(config) {
|
|
122
|
+
if (config.preferredHost) {
|
|
123
|
+
return config.preferredHost;
|
|
124
|
+
}
|
|
125
|
+
if (config.browserHost === "0.0.0.0") {
|
|
126
|
+
try {
|
|
127
|
+
return hostname() || "127.0.0.1";
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
return "127.0.0.1";
|
|
131
|
+
}
|
|
106
132
|
}
|
|
107
|
-
return
|
|
133
|
+
return config.browserHost;
|
|
134
|
+
}
|
|
135
|
+
function computeDisplayUrl(config) {
|
|
136
|
+
const scheme = config.tls ? "https" : "http";
|
|
137
|
+
return `${scheme}://${resolveDisplayHost(config)}:${config.browserPort}/`;
|
|
108
138
|
}
|
|
109
139
|
function writeLinkFile(path, url) {
|
|
110
140
|
try {
|
|
@@ -131,6 +161,8 @@ function printHelp() {
|
|
|
131
161
|
|
|
132
162
|
Usage:
|
|
133
163
|
hydra-acp-browser Start the server.
|
|
164
|
+
hydra-acp-browser url Print the URL to open (and a QR code
|
|
165
|
+
for it) without starting the server.
|
|
134
166
|
hydra-acp-browser tailscale setup Mint a Tailscale cert and configure
|
|
135
167
|
HTTPS + Tailscale-only access.
|
|
136
168
|
hydra-acp-browser --version Print version and exit.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/server/http.js
CHANGED
|
@@ -95,9 +95,16 @@ function authenticate(request, reply, ctx) {
|
|
|
95
95
|
}
|
|
96
96
|
export function buildContext(config) {
|
|
97
97
|
const scheme = config.tls ? "https" : "http";
|
|
98
|
+
// preferredHost is always implicitly allowed — it's the host the server
|
|
99
|
+
// itself will tell you to open (see index.ts's resolveDisplayHost), so
|
|
100
|
+
// requiring it to also be listed in BROWSER_ALLOWED_HOSTS would just be
|
|
101
|
+
// the same value written twice.
|
|
102
|
+
const extraHosts = config.preferredHost
|
|
103
|
+
? [...config.allowedHosts, config.preferredHost]
|
|
104
|
+
: config.allowedHosts;
|
|
98
105
|
return {
|
|
99
106
|
config,
|
|
100
|
-
security: buildSecurityContext(config.browserHost, config.browserPort, scheme,
|
|
107
|
+
security: buildSecurityContext(config.browserHost, config.browserPort, scheme, extraHosts),
|
|
101
108
|
rateLimiter: new AuthRateLimiter(),
|
|
102
109
|
scheme,
|
|
103
110
|
};
|
package/dist/server/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/server/http.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/server/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -176,23 +176,33 @@ async function step2MintCert(dnsName) {
|
|
|
176
176
|
function step3WriteConfig(args) {
|
|
177
177
|
header(3, TOTAL_STEPS, "Writing config");
|
|
178
178
|
const { map } = readExisting(CONF_PATH);
|
|
179
|
-
const existingHosts = (map.get("BROWSER_ALLOWED_HOSTS") ?? "")
|
|
180
|
-
.split(",")
|
|
181
|
-
.map((s) => s.trim())
|
|
182
|
-
.filter((s) => s.length > 0);
|
|
183
|
-
const hosts = new Set(existingHosts);
|
|
184
|
-
hosts.add(args.dnsName);
|
|
185
179
|
const port = Number.parseInt(map.get("BROWSER_PORT") ?? "", 10) || 5514;
|
|
180
|
+
// A pre-existing 0.0.0.0 is a deliberate choice, not just an unset
|
|
181
|
+
// default — someone bound to every interface because they also want
|
|
182
|
+
// plain-LAN clients (a machine that isn't on this tailnet) to reach
|
|
183
|
+
// it. 0.0.0.0 already covers the tailnet interface too, so narrowing
|
|
184
|
+
// it here would silently cut LAN clients off with no way back short
|
|
185
|
+
// of hand-editing the conf file. Leave it alone in that case; anyone
|
|
186
|
+
// who does want the narrower, tailnet-only bind can still set
|
|
187
|
+
// BROWSER_HOST manually.
|
|
188
|
+
const alreadyBoundEverywhere = map.get("BROWSER_HOST") === "0.0.0.0";
|
|
189
|
+
// BROWSER_PREFERRED_HOST alone covers both jobs the MagicDNS name used
|
|
190
|
+
// to need two keys for: buildContext (server/http.ts) always allows it
|
|
191
|
+
// for the Host header check, and it's what the server prints/writes to
|
|
192
|
+
// the link file and shows for `hydra-acp-browser url` — no separate
|
|
193
|
+
// BROWSER_ALLOWED_HOSTS entry needed for the same value.
|
|
186
194
|
writeConf(CONF_PATH, {
|
|
187
195
|
BROWSER_TLS_CERT: args.certPath,
|
|
188
196
|
BROWSER_TLS_KEY: args.keyPath,
|
|
189
|
-
BROWSER_HOST: args.tailscaleIp,
|
|
190
|
-
|
|
197
|
+
BROWSER_HOST: alreadyBoundEverywhere ? undefined : args.tailscaleIp,
|
|
198
|
+
BROWSER_PREFERRED_HOST: args.dnsName,
|
|
191
199
|
});
|
|
192
200
|
ok(`Wrote ${CONF_PATH} (chmod 600)`);
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
201
|
+
if (alreadyBoundEverywhere) {
|
|
202
|
+
info("BROWSER_HOST=0.0.0.0 left as-is — already reachable on the tailnet interface, and this keeps plain-LAN clients working too.");
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
info(`BROWSER_HOST=${args.tailscaleIp} — bound to the tailnet interface only, not your LAN.`);
|
|
196
206
|
}
|
|
197
207
|
return port;
|
|
198
208
|
}
|
|
@@ -225,5 +235,6 @@ export async function runTailscaleSetup() {
|
|
|
225
235
|
blank();
|
|
226
236
|
ok("Setup complete.");
|
|
227
237
|
info(`Open: https://${dnsName}:${port}/`);
|
|
238
|
+
info("Get that URL (and a QR code for your phone) any time with: hydra-acp-browser url");
|
|
228
239
|
}
|
|
229
240
|
//# sourceMappingURL=tailscale-wizard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailscale-wizard.js","sourceRoot":"","sources":["../../src/setup/tailscale-wizard.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tailscale-wizard.js","sourceRoot":"","sources":["../../src/setup/tailscale-wizard.ts"],"names":[],"mappings":"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"}
|