@podway/relay 0.2.3 → 0.2.4
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/FAQ.md +2 -2
- package/LICENSE +1 -1
- package/README.md +5 -5
- package/dist/browser-fetcher.js +1 -1
- package/dist/dashboard.js +2 -2
- package/dist/disclosure.js +1 -1
- package/dist/main.js +2 -2
- package/dist/net-guard.d.ts +1 -1
- package/dist/net-guard.js +1 -1
- package/package.json +2 -2
package/FAQ.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Running
|
|
1
|
+
# Running Podway Relay on a headless host
|
|
2
2
|
|
|
3
3
|
The relay can run on any NAS, Raspberry Pi, or other always-on machine that
|
|
4
4
|
supports Node. This guide covers the common headless setup issues: finding
|
|
@@ -79,7 +79,7 @@ and open the printed `http://127.0.0.1:7373/...` URL on your computer.
|
|
|
79
79
|
|
|
80
80
|
If the tunnel immediately resets, check whether the SSH server disables
|
|
81
81
|
forwarding. Synology commonly sets `AllowTcpForwarding no`. Enabling it affects
|
|
82
|
-
every authorized SSH user, not only
|
|
82
|
+
every authorized SSH user, not only Podway, and requires administrator access:
|
|
83
83
|
|
|
84
84
|
```bash
|
|
85
85
|
sudo sed -i 's/^AllowTcpForwarding no/AllowTcpForwarding yes/' /etc/ssh/sshd_config
|
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Podway Relay
|
|
2
2
|
|
|
3
|
-
The
|
|
3
|
+
The Podway relay lets your pods reach websites through your network instead of
|
|
4
4
|
a datacenter. This helps with sites that block cloud IPs. For sites you choose,
|
|
5
5
|
the relay can also use a separate browser session that you sign into.
|
|
6
6
|
|
|
@@ -8,11 +8,11 @@ One relay handles two kinds of traffic:
|
|
|
8
8
|
|
|
9
9
|
| mode | what the pod gets | used by |
|
|
10
10
|
|---|---|---|
|
|
11
|
-
| **fetch** | a page loaded by this machine, optionally with a session you provided | the agent's `
|
|
11
|
+
| **fetch** | a page loaded by this machine, optionally with a session you provided | the agent's `podway fetch get` command |
|
|
12
12
|
| **tunnel** | a proxy connection through your IP, without your cookies | crawlers, scripts, Playwright, and other tools that load pages themselves |
|
|
13
13
|
|
|
14
14
|
The tunnel lets a pod run a real browser while the connection comes from your
|
|
15
|
-
network. Pods receive it through `$
|
|
15
|
+
network. Pods receive it through `$PODWAY_RELAY_PROXY`. It **fails closed**: if
|
|
16
16
|
the relay is not running, those connections are refused instead of quietly
|
|
17
17
|
leaving from the datacenter.
|
|
18
18
|
|
|
@@ -73,7 +73,7 @@ storage limit.
|
|
|
73
73
|
Before an event is written, URLs are stripped of usernames, passwords, query
|
|
74
74
|
strings, and fragments. Logs never include cookies, authorization headers,
|
|
75
75
|
browser storage, request or response bodies, or tunnel content. Detailed
|
|
76
|
-
history and exports stay on your machine;
|
|
76
|
+
history and exports stay on your machine; Podway receives only coarse,
|
|
77
77
|
domain-level telemetry. Clearing history does not clear pairing, sessions,
|
|
78
78
|
paused pods, or blocked sites.
|
|
79
79
|
|
package/dist/browser-fetcher.js
CHANGED
|
@@ -16,7 +16,7 @@ export class BrowserFetcher {
|
|
|
16
16
|
}
|
|
17
17
|
async pw() {
|
|
18
18
|
return (await import("playwright").catch(() => {
|
|
19
|
-
throw new Error("Playwright missing. The relay bundles it; reinstall: npx @
|
|
19
|
+
throw new Error("Playwright missing. The relay bundles it; reinstall: npx @podway/relay@latest");
|
|
20
20
|
}));
|
|
21
21
|
}
|
|
22
22
|
/**
|
package/dist/dashboard.js
CHANGED
|
@@ -26,7 +26,7 @@ function previewData(now = Date.now()) {
|
|
|
26
26
|
{ id: "ev-8", at: ago(3.4 * 60 * 60_000), podId: "docs-indexer-31bc", podName: "Docs Indexer", mode: "fetch", outcome: "ok", target: "https://developer.mozilla.org/en-US/docs/Web/API", host: "developer.mozilla.org", status: 200, ms: 724, session: false },
|
|
27
27
|
{ id: "ev-9", at: ago(4.1 * 60 * 60_000), podId: "research-otter-7f2a", podName: "Research Otter", mode: "fetch", outcome: "rate-limited", target: "https://www.reddit.com/r/MachineLearning", host: "reddit.com", status: 429, ms: 486, session: true, reason: "The site asked the relay to slow down" },
|
|
28
28
|
{ id: "ev-10", at: ago(5.7 * 60 * 60_000), podId: "market-scout-a912", podName: "Market Scout", mode: "tunnel", outcome: "ok", target: "www.g2.com:443", host: "g2.com", ms: 44_201, session: false, bytesUp: 219_405, bytesDown: 6_139_551 },
|
|
29
|
-
{ id: "ev-11", at: ago(9.5 * 60 * 60_000), mode: "tunnel", outcome: "ok", target: "relay.
|
|
29
|
+
{ id: "ev-11", at: ago(9.5 * 60 * 60_000), mode: "tunnel", outcome: "ok", target: "relay.podway.cloud:443", host: "relay.podway.cloud", ms: 312, session: false, bytesUp: 0, bytesDown: 0, reason: "Automatic relay health check" },
|
|
30
30
|
];
|
|
31
31
|
return {
|
|
32
32
|
preview: true,
|
|
@@ -313,7 +313,7 @@ export function serveDashboard(port = 7373, options = {}) {
|
|
|
313
313
|
...SECURITY_HEADERS,
|
|
314
314
|
"cache-control": "no-store",
|
|
315
315
|
"content-type": "application/json; charset=utf-8",
|
|
316
|
-
"content-disposition": `attachment; filename="
|
|
316
|
+
"content-disposition": `attachment; filename="podway-relay-events-${new Date().toISOString().slice(0, 10)}.json"`,
|
|
317
317
|
});
|
|
318
318
|
res.end(options.preview ? JSON.stringify(fixtureData(options.fixture ?? "active").events, null, 2) : store.exportJson());
|
|
319
319
|
return;
|
package/dist/disclosure.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* owner, and the account that gets banned is theirs.
|
|
7
7
|
*/
|
|
8
8
|
export const DISCLOSURE = `
|
|
9
|
-
relay lets a
|
|
9
|
+
relay lets a Podway pod fetch web pages THROUGH THIS MACHINE — from your network,
|
|
10
10
|
so a site sees your home address, not a datacenter.
|
|
11
11
|
|
|
12
12
|
What that means, plainly:
|
package/dist/main.js
CHANGED
|
@@ -272,7 +272,7 @@ async function runDaemon(a) {
|
|
|
272
272
|
}
|
|
273
273
|
async function cmdLogin(a) {
|
|
274
274
|
const domain = normalizeDomain(a[0] ?? die("usage: relay login <domain>"));
|
|
275
|
-
const pw = (await import("playwright").catch(() => die("Playwright missing — reinstall: npx @
|
|
275
|
+
const pw = (await import("playwright").catch(() => die("Playwright missing — reinstall: npx @podway/relay@latest")));
|
|
276
276
|
log(`opening a browser so you can sign in to ${domain}. This is the relay's OWN profile.`);
|
|
277
277
|
const ctx = await pw.chromium.launchPersistentContext(profileDir(), { headless: false, channel: "chrome" });
|
|
278
278
|
const first = await ctx.newPage();
|
|
@@ -452,7 +452,7 @@ async function dispatch(a) {
|
|
|
452
452
|
}
|
|
453
453
|
function usage() {
|
|
454
454
|
log("");
|
|
455
|
-
log(`${c.bold("relay")} ${c.dim("— fetch web pages through this machine for your
|
|
455
|
+
log(`${c.bold("relay")} ${c.dim("— fetch web pages through this machine for your Podway pods")}`);
|
|
456
456
|
log("");
|
|
457
457
|
// `start` carries flags, so it gets its own line rather than blowing out the column.
|
|
458
458
|
log(` ${c.cyan("start")} ${c.dim("run the relay in the background:")}`);
|
package/dist/net-guard.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* VENDORED from `@
|
|
2
|
+
* VENDORED from `@podway/shared/src/net-guard.ts` — keep the two IDENTICAL in behaviour.
|
|
3
3
|
*
|
|
4
4
|
* Why a copy: `pb` is published standalone to npm and builds with plain tsc, so it can
|
|
5
5
|
* carry no workspace dependency. Why it is safe: `test/net-guard-parity.test.ts` runs
|
package/dist/net-guard.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* VENDORED from `@
|
|
2
|
+
* VENDORED from `@podway/shared/src/net-guard.ts` — keep the two IDENTICAL in behaviour.
|
|
3
3
|
*
|
|
4
4
|
* Why a copy: `pb` is published standalone to npm and builds with plain tsc, so it can
|
|
5
5
|
* carry no workspace dependency. Why it is safe: `test/net-guard-parity.test.ts` runs
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@podway/relay",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.2.4",
|
|
4
|
+
"description": "Podway relay \u2014 runs a fetch relay on your machine so a pod can read pages from your network, using sessions you sign into. Install: npm i -g @podway/relay, then `relay start`.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"relay": "./dist/main.js"
|