fileport-gateway 0.1.2 → 0.1.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/README.md +9 -2
- package/dist/cli.js +256 -47
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +19 -1
- package/dist/config.js +57 -18
- package/dist/config.js.map +1 -1
- package/dist/gateway.d.ts +7 -1
- package/dist/gateway.js +99 -21
- package/dist/gateway.js.map +1 -1
- package/dist/markdown.d.ts +1 -0
- package/dist/markdown.js +39 -0
- package/dist/markdown.js.map +1 -0
- package/dist/network.d.ts +64 -0
- package/dist/network.js +190 -0
- package/dist/network.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/ui.js +3 -4
- package/dist/ui.js.map +1 -1
- package/docs/NETWORK_AND_CLI.md +38 -0
- package/package.json +6 -1
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ Implemented:
|
|
|
16
16
|
- CLI and browser preview shell;
|
|
17
17
|
- explicit RO/RW shares, expiry and strict existing-file-only atomic saves.
|
|
18
18
|
|
|
19
|
-
See [current architecture](docs/CURRENT_ARCHITECTURE
|
|
19
|
+
See [current architecture](docs/CURRENT_ARCHITECTURE,md), [Dufs compatibility](docs/DUFS_COMPATIBILITY,md), and [migration plan](docs/MIGRATION_PLAN,md), and [network/CLI contract](docs/NETWORK_AND_CLI.md).
|
|
20
20
|
|
|
21
21
|
## Install
|
|
22
22
|
|
|
@@ -42,7 +42,14 @@ fileport ls
|
|
|
42
42
|
fileport revoke <share-id>
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
Fileport provides HTTP only
|
|
45
|
+
Fileport provides HTTP only. The listener defaults to `0.0.0.0:7892`; generated URLs default to the default-route LAN IPv4, not `127.0.0.1`. A configured hostname must resolve entirely to local, listener-covered addresses.
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
fileport doctor --json
|
|
49
|
+
fileport config set --public-url http://files.example.com:7892
|
|
50
|
+
fileport --help
|
|
51
|
+
fileport share --help
|
|
52
|
+
``` Agent control is available only through `$FILEPORT_STATE_DIR/control.sock` (0600).
|
|
46
53
|
|
|
47
54
|
## Verify
|
|
48
55
|
|
package/dist/cli.js
CHANGED
|
@@ -4,84 +4,293 @@ import fs from "node:fs/promises";
|
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
import { controlRequest } from "./client.js";
|
|
7
|
-
import { loadConfig } from "./config.js";
|
|
7
|
+
import { configPath, loadConfig, readConfigFile, writeConfigFile } from "./config.js";
|
|
8
8
|
import { Gateway } from "./gateway.js";
|
|
9
|
+
import { PublicAddressResolver } from "./network.js";
|
|
9
10
|
import { parseDuration } from "./duration.js";
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
const ROOT_HELP = `Fileport Gateway — securely share local developer artifacts over HTTP
|
|
12
|
+
|
|
13
|
+
Usage:
|
|
14
|
+
fileport <command> [options]
|
|
15
|
+
fileport --help
|
|
16
|
+
fileport --version
|
|
17
|
+
|
|
18
|
+
Commands:
|
|
19
|
+
serve Start the user-scoped Gateway
|
|
20
|
+
share Create a capability URL for a file or directory
|
|
21
|
+
ls List active shares
|
|
22
|
+
revoke Revoke a share capability
|
|
23
|
+
status Show daemon status and advertised address
|
|
24
|
+
stop Stop the running daemon
|
|
25
|
+
doctor Diagnose bind, LAN address, public URL, and DNS
|
|
26
|
+
config Show or update persistent configuration
|
|
27
|
+
|
|
28
|
+
Safety defaults:
|
|
29
|
+
Shares are read-only unless --rw is explicit. Fileport is HTTP-only.
|
|
30
|
+
Without public.url, Fileport advertises the default-route LAN IPv4.
|
|
31
|
+
Configured hostnames are issued only when every A/AAAA address is local
|
|
32
|
+
and covered by the listener. Capability URLs are secrets; do not publish them.
|
|
33
|
+
|
|
34
|
+
Agent output:
|
|
35
|
+
--json writes one JSON object to stdout; diagnostics go to stderr.
|
|
36
|
+
share without --json writes only the URL.
|
|
37
|
+
|
|
38
|
+
Exit codes:
|
|
39
|
+
0 success; 2 usage; 3 invalid config; 4 public address/DNS validation;
|
|
40
|
+
5 daemon/bind/runtime unavailable; 6 share not found.
|
|
41
|
+
|
|
42
|
+
Examples:
|
|
43
|
+
fileport share ./report.md --readonly
|
|
44
|
+
fileport share ./report.md --rw --expire 2h --json
|
|
45
|
+
fileport doctor --json
|
|
46
|
+
fileport config set --public-url http://files.example.com:7892
|
|
47
|
+
|
|
48
|
+
Environment:
|
|
49
|
+
FILEPORT_HOST, FILEPORT_PORT, FILEPORT_PUBLIC_BASE_URL,
|
|
50
|
+
FILEPORT_STATE_DIR, FILEPORT_CONFIG_FILE, FILEPORT_DUFS_BIN
|
|
51
|
+
|
|
52
|
+
Run 'fileport <command> --help' for command details.`;
|
|
53
|
+
const HELP = {
|
|
54
|
+
serve: `Usage: fileport serve [--host HOST] [--port PORT] [--public-url URL] [--json]\n\nStart the Gateway. --host controls listening; --public-url only controls advertised URLs.\nDefault bind: 0.0.0.0:7892. A configured hostname is DNS-validated as all-local.\n--json emits one readiness object; long-running diagnostics use stderr.`,
|
|
55
|
+
share: `Usage: fileport share <path> [--readonly|--rw] [--expire 2h] [--json]\n\nCreate an opaque capability URL. Default: --readonly. --rw permits strict,\nversioned, existing-file-only text saves. Expiry units: m, h, d, w.\nThe capability URL is a secret. Default stdout is only the URL.`,
|
|
56
|
+
ls: `Usage: fileport ls [--json]\n\nList non-expired shares. Human mode prints a compact table; JSON mode emits {shares:[...]}.`,
|
|
57
|
+
revoke: `Usage: fileport revoke <share-id> [--json]\n\nImmediately revoke a capability. JSON mode emits {ok,id}. Exit 6 if absent.`,
|
|
58
|
+
status: `Usage: fileport status [--json]\n\nShow daemon PID, bind address, advertised address, and active share count.`,
|
|
59
|
+
stop: `Usage: fileport stop [--json]\n\nGracefully stop the user-scoped Gateway and its Dufs workers.`,
|
|
60
|
+
doctor: `Usage: fileport doctor [--json]\n\nShow a runtime snapshot of interfaces, selected LAN IPv4, public URL, DNS/CNAME\nresolution, local matches, and warnings. Does not create a share.`,
|
|
61
|
+
config: `Usage:\n fileport config show [--json]\n fileport config set [--host H] [--port N] [--public-url URL]\n fileport config unset --public-url\n\nPersistent file: ~/.config/fileport/config.json (0700 directory, 0600 file).\nPriority: command flags > environment > config file > defaults. Restart after changes.`
|
|
62
|
+
};
|
|
63
|
+
class CliError extends Error {
|
|
64
|
+
exitCode;
|
|
65
|
+
constructor(message, exitCode) {
|
|
66
|
+
super(message);
|
|
67
|
+
this.exitCode = exitCode;
|
|
16
68
|
}
|
|
17
|
-
|
|
18
|
-
|
|
69
|
+
}
|
|
70
|
+
function hasHelp(args) { return args.includes("--help") || args.includes("-h"); }
|
|
71
|
+
function jsonFlag(args) { return args.includes("--json"); }
|
|
72
|
+
function output(value, json, human) { if (json)
|
|
73
|
+
process.stdout.write(`${JSON.stringify(value)}\n`);
|
|
74
|
+
else if (human !== undefined)
|
|
75
|
+
process.stdout.write(`${human}\n`); }
|
|
76
|
+
function assertOnlyFlags(args, allowed, valueFlags = new Set()) { for (let i = 0; i < args.length; i++) {
|
|
77
|
+
const arg = args[i];
|
|
78
|
+
if (!arg.startsWith("-"))
|
|
79
|
+
continue;
|
|
80
|
+
if (!allowed.has(arg))
|
|
81
|
+
throw new CliError(`unknown option: ${arg}`, 2);
|
|
82
|
+
if (valueFlags.has(arg)) {
|
|
83
|
+
if (!args[i + 1] || args[i + 1].startsWith("-"))
|
|
84
|
+
throw new CliError(`${arg} requires a value`, 2);
|
|
85
|
+
i++;
|
|
19
86
|
}
|
|
20
|
-
}
|
|
21
|
-
|
|
87
|
+
} }
|
|
88
|
+
function option(args, name) { const i = args.indexOf(name); if (i < 0)
|
|
89
|
+
return; const v = args[i + 1]; if (!v || v.startsWith("-"))
|
|
90
|
+
throw new CliError(`${name} requires a value`, 2); return v; }
|
|
91
|
+
async function packageVersion() { const raw = await fs.readFile(fileURLToPath(new URL("../package.json", import.meta.url)), "utf8"); return JSON.parse(raw).version; }
|
|
92
|
+
async function waitForControl(socket) { const deadline = Date.now() + 5000; while (Date.now() < deadline) {
|
|
22
93
|
try {
|
|
23
|
-
await controlRequest(
|
|
94
|
+
await controlRequest(socket, "GET", "/status");
|
|
24
95
|
return;
|
|
25
96
|
}
|
|
26
|
-
catch {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
await
|
|
97
|
+
catch {
|
|
98
|
+
await new Promise(r => setTimeout(r, 50));
|
|
99
|
+
}
|
|
100
|
+
} throw new CliError("gateway did not become ready", 5); }
|
|
101
|
+
async function ensureServer(config = loadConfig()) { const socket = path.join(config.stateDir, "control.sock"); try {
|
|
102
|
+
const status = await controlRequest(socket, "GET", "/status");
|
|
103
|
+
if (status.protocolVersion !== 1)
|
|
104
|
+
throw new CliError("running Fileport daemon is from an older version; run 'fileport stop' and retry", 5);
|
|
105
|
+
return { config, socket };
|
|
32
106
|
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
if (error instanceof CliError)
|
|
109
|
+
throw error;
|
|
110
|
+
} await fs.mkdir(config.stateDir, { recursive: true, mode: 0o700 }); const executable = fileURLToPath(import.meta.url), child = spawn(process.execPath, [executable, "serve"], { detached: true, stdio: "ignore", env: process.env }); child.unref(); await waitForControl(socket); return { config, socket }; }
|
|
111
|
+
function overrides(args) { return { host: option(args, "--host"), port: option(args, "--port") ? Number(option(args, "--port")) : undefined, publicBaseUrl: option(args, "--public-url") }; }
|
|
112
|
+
let jsonRequested = false;
|
|
33
113
|
async function main() {
|
|
34
|
-
const
|
|
114
|
+
const argv = process.argv.slice(2), command = argv[0];
|
|
115
|
+
jsonRequested = argv.includes("--json");
|
|
116
|
+
if (!command || command === "help" || hasHelp(argv.slice(0, 1))) {
|
|
117
|
+
output({}, false, ROOT_HELP);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
if (command === "--version" || command === "-V") {
|
|
121
|
+
output({}, false, await packageVersion());
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const args = argv.slice(1);
|
|
125
|
+
if (hasHelp(args)) {
|
|
126
|
+
if (!HELP[command])
|
|
127
|
+
throw new CliError(`unknown command: ${command}`, 2);
|
|
128
|
+
output({}, false, HELP[command]);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const asJson = jsonFlag(args);
|
|
35
132
|
if (command === "serve") {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
133
|
+
assertOnlyFlags(args, new Set(["--json", "--host", "--port", "--public-url"]), new Set(["--host", "--port", "--public-url"]));
|
|
134
|
+
const config = loadConfig(process.env, overrides(args)), gateway = new Gateway(config);
|
|
135
|
+
try {
|
|
136
|
+
await gateway.start();
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
const code = error.code;
|
|
140
|
+
throw new CliError(code === "EADDRINUSE" ? `port ${config.port} is already in use` : code === "EADDRNOTAVAIL" ? `cannot bind ${config.host}; it is not assigned to this machine` : error instanceof Error ? error.message : String(error), code?.startsWith("EADDR") ? 5 : 4);
|
|
141
|
+
}
|
|
142
|
+
const ready = await controlRequest(path.join(config.stateDir, "control.sock"), "GET", "/status");
|
|
143
|
+
output(ready, asJson, `fileport listening on ${config.host}:${config.port}`);
|
|
39
144
|
const stop = async () => { await gateway.close(); process.exit(0); };
|
|
40
145
|
process.on("SIGINT", stop);
|
|
41
146
|
process.on("SIGTERM", stop);
|
|
42
147
|
return;
|
|
43
148
|
}
|
|
44
149
|
if (command === "share") {
|
|
45
|
-
|
|
46
|
-
|
|
150
|
+
if (args.includes("--rw") && (args.includes("--readonly") || args.includes("--ro")))
|
|
151
|
+
throw new CliError("--rw conflicts with --readonly", 2);
|
|
152
|
+
let permission = "ro", expire;
|
|
47
153
|
const positional = [];
|
|
48
|
-
for (let
|
|
49
|
-
const
|
|
50
|
-
if (
|
|
154
|
+
for (let i = 0; i < args.length; i++) {
|
|
155
|
+
const a = args[i];
|
|
156
|
+
if (a === "--json")
|
|
157
|
+
continue;
|
|
158
|
+
if (a === "--rw")
|
|
51
159
|
permission = "rw";
|
|
52
|
-
else if (
|
|
160
|
+
else if (a === "--readonly" || a === "--ro")
|
|
53
161
|
permission = "ro";
|
|
54
|
-
else if (
|
|
55
|
-
expire = args[++
|
|
162
|
+
else if (a === "--expire") {
|
|
163
|
+
expire = args[++i];
|
|
56
164
|
if (!expire)
|
|
57
|
-
throw new
|
|
165
|
+
throw new CliError("--expire requires a duration", 2);
|
|
58
166
|
}
|
|
59
|
-
else if (
|
|
60
|
-
throw new
|
|
167
|
+
else if (a.startsWith("-"))
|
|
168
|
+
throw new CliError(`unknown option: ${a}`, 2);
|
|
61
169
|
else
|
|
62
|
-
positional.push(
|
|
170
|
+
positional.push(a);
|
|
63
171
|
}
|
|
64
172
|
if (positional.length !== 1)
|
|
65
|
-
throw new
|
|
66
|
-
await ensureServer();
|
|
67
|
-
const result = await controlRequest(
|
|
68
|
-
|
|
173
|
+
throw new CliError("share requires exactly one path", 2);
|
|
174
|
+
const { socket } = await ensureServer();
|
|
175
|
+
const result = await controlRequest(socket, "POST", "/shares", { path: positional[0], permission, expiresAt: expire ? parseDuration(expire) : undefined });
|
|
176
|
+
output(result, asJson, result.url);
|
|
69
177
|
return;
|
|
70
178
|
}
|
|
71
179
|
if (command === "ls") {
|
|
72
|
-
|
|
73
|
-
|
|
180
|
+
assertOnlyFlags(args, new Set(["--json"]));
|
|
181
|
+
if (args.some(a => !a.startsWith("-")))
|
|
182
|
+
throw new CliError("ls accepts no positional arguments", 2);
|
|
183
|
+
const { socket } = await ensureServer();
|
|
184
|
+
const result = await controlRequest(socket, "GET", "/shares");
|
|
185
|
+
if (asJson)
|
|
186
|
+
output(result, true);
|
|
187
|
+
else {
|
|
188
|
+
const lines = ["ID\tPERM\tEXPIRES\tTARGET", ...result.shares.map((s) => `${s.id}\t${s.permission}\t${s.expiresAt ?? "-"}\t${s.target}`)];
|
|
189
|
+
output({}, false, lines.join("\n"));
|
|
190
|
+
}
|
|
74
191
|
return;
|
|
75
192
|
}
|
|
76
193
|
if (command === "revoke") {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
194
|
+
assertOnlyFlags(args, new Set(["--json"]));
|
|
195
|
+
const ids = args.filter(a => !a.startsWith("-"));
|
|
196
|
+
if (ids.length > 1)
|
|
197
|
+
throw new CliError("revoke accepts exactly one share id", 2);
|
|
198
|
+
const id = ids[0];
|
|
199
|
+
if (!id)
|
|
200
|
+
throw new CliError("revoke requires a share id", 2);
|
|
201
|
+
const { socket } = await ensureServer();
|
|
202
|
+
try {
|
|
203
|
+
await controlRequest(socket, "DELETE", `/shares/${encodeURIComponent(id)}`);
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
throw new CliError(`share not found: ${id}`, 6);
|
|
207
|
+
}
|
|
208
|
+
output({ ok: true, id }, asJson, `revoked ${id}`);
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
if (command === "status" || command === "doctor") {
|
|
212
|
+
assertOnlyFlags(args, new Set(["--json"]));
|
|
213
|
+
if (args.some(a => !a.startsWith("-")))
|
|
214
|
+
throw new CliError(`${command} accepts no positional arguments`, 2);
|
|
215
|
+
const config = loadConfig();
|
|
216
|
+
const socket = path.join(config.stateDir, "control.sock");
|
|
217
|
+
try {
|
|
218
|
+
const result = await controlRequest(socket, "GET", `/${command}`);
|
|
219
|
+
if (command === "doctor" && result.status === "error")
|
|
220
|
+
throw new CliError(result.error?.message ?? "public address validation failed", 4);
|
|
221
|
+
output(result, asJson, JSON.stringify(result, null, 2));
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
if (error instanceof CliError)
|
|
225
|
+
throw error;
|
|
226
|
+
if (command === "status")
|
|
227
|
+
throw new CliError("gateway is not running", 5);
|
|
228
|
+
const gateway = new Gateway(config);
|
|
229
|
+
try {
|
|
230
|
+
const result = await gateway.addressResolver.inspect({ host: config.host, port: config.port, publicBaseUrl: config.publicBaseUrl }, true).then(s => ({ bind: { host: config.host, port: config.port }, ...s }));
|
|
231
|
+
output(result, asJson, JSON.stringify(result, null, 2));
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
throw new CliError(error instanceof Error ? error.message : String(error), 4);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
if (command === "stop") {
|
|
240
|
+
assertOnlyFlags(args, new Set(["--json"]));
|
|
241
|
+
if (args.some(a => !a.startsWith("-")))
|
|
242
|
+
throw new CliError("stop accepts no positional arguments", 2);
|
|
243
|
+
const config = loadConfig(), socket = path.join(config.stateDir, "control.sock");
|
|
244
|
+
try {
|
|
245
|
+
const result = await controlRequest(socket, "POST", "/shutdown");
|
|
246
|
+
output(result, asJson, `stopped ${result.pid}`);
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
throw new CliError("gateway is not running", 5);
|
|
250
|
+
}
|
|
81
251
|
return;
|
|
82
252
|
}
|
|
83
|
-
|
|
84
|
-
|
|
253
|
+
if (command === "config") {
|
|
254
|
+
const action = args[0] ?? "show", file = configPath(), value = readConfigFile(file);
|
|
255
|
+
if (action === "show") {
|
|
256
|
+
output({ file, config: value }, asJson, JSON.stringify({ file, config: value }, null, 2));
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
if (action === "set") {
|
|
260
|
+
const host = option(args, "--host"), port = option(args, "--port"), publicUrl = option(args, "--public-url");
|
|
261
|
+
if (!host && !port && !publicUrl)
|
|
262
|
+
throw new CliError("config set requires --host, --port, or --public-url", 2);
|
|
263
|
+
const next = { ...value, bind: { ...value.bind }, public: { ...value.public, dnsPolicy: "all-local" } };
|
|
264
|
+
if (host)
|
|
265
|
+
next.bind.host = host;
|
|
266
|
+
if (port)
|
|
267
|
+
next.bind.port = Number(port);
|
|
268
|
+
if (publicUrl)
|
|
269
|
+
next.public.url = publicUrl;
|
|
270
|
+
const checked = loadConfig({ ...process.env, FILEPORT_CONFIG_FILE: "/nonexistent" }, { host: next.bind?.host, port: next.bind?.port, publicBaseUrl: next.public?.url ?? undefined });
|
|
271
|
+
await new PublicAddressResolver().inspect({ host: checked.host, port: checked.port, publicBaseUrl: checked.publicBaseUrl }, true);
|
|
272
|
+
writeConfigFile(next, file);
|
|
273
|
+
output({ ok: true, file, config: next }, asJson, `updated ${file}; restart Fileport to apply`);
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
if (action === "unset" && args.includes("--public-url")) {
|
|
277
|
+
const next = { ...value, public: { ...value.public, url: null, dnsPolicy: "all-local" } };
|
|
278
|
+
writeConfigFile(next, file);
|
|
279
|
+
output({ ok: true, file, config: next }, asJson, `removed public.url from ${file}; restart Fileport to apply`);
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
throw new CliError("invalid config command", 2);
|
|
283
|
+
}
|
|
284
|
+
throw new CliError(`unknown command: ${command}`, 2);
|
|
285
|
+
}
|
|
286
|
+
main().catch(error => { const e = error; let code = e instanceof CliError ? e.exitCode : 3; let message = e instanceof Error ? e.message : String(e); let detail; try {
|
|
287
|
+
detail = JSON.parse(message);
|
|
288
|
+
if (detail?.error)
|
|
289
|
+
message = detail.message ?? detail.error;
|
|
85
290
|
}
|
|
86
|
-
|
|
291
|
+
catch { } if (/DNS_|public host|LAN IPv4|public IP|public URL|NO_LAN/i.test(message + (detail?.error ?? "")))
|
|
292
|
+
code = 4; if (jsonRequested)
|
|
293
|
+
process.stdout.write(`${JSON.stringify({ ok: false, error: { code: detail?.error ?? "CLI_ERROR", message }, exitCode: code })}\n`);
|
|
294
|
+
else
|
|
295
|
+
process.stderr.write(`${message}\n`); process.exitCode = code; });
|
|
87
296
|
//# sourceMappingURL=cli.js.map
|
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/config.d.ts
CHANGED
|
@@ -1,2 +1,20 @@
|
|
|
1
1
|
import type { FileportConfig } from "./types.js";
|
|
2
|
-
export
|
|
2
|
+
export interface FileportConfigFile {
|
|
3
|
+
bind?: {
|
|
4
|
+
host?: string;
|
|
5
|
+
port?: number;
|
|
6
|
+
};
|
|
7
|
+
public?: {
|
|
8
|
+
url?: string | null;
|
|
9
|
+
dnsPolicy?: "all-local";
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export interface ConfigOverrides {
|
|
13
|
+
host?: string;
|
|
14
|
+
port?: number;
|
|
15
|
+
publicBaseUrl?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function configPath(env?: NodeJS.ProcessEnv): string;
|
|
18
|
+
export declare function readConfigFile(file?: string): FileportConfigFile;
|
|
19
|
+
export declare function writeConfigFile(value: FileportConfigFile, file?: string): void;
|
|
20
|
+
export declare function loadConfig(env?: NodeJS.ProcessEnv, overrides?: ConfigOverrides): FileportConfig;
|
package/dist/config.js
CHANGED
|
@@ -1,30 +1,69 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
1
2
|
import os from "node:os";
|
|
2
3
|
import path from "node:path";
|
|
3
4
|
import { fileURLToPath } from "node:url";
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
import { normalizePublicUrl } from "./network.js";
|
|
6
|
+
function validPort(value, fallback) {
|
|
7
|
+
if (value === undefined || value === null || value === "")
|
|
6
8
|
return fallback;
|
|
7
9
|
const result = Number(value);
|
|
8
10
|
if (!Number.isInteger(result) || result < 1 || result > 65535)
|
|
9
|
-
throw new Error(`invalid port: ${value}`);
|
|
11
|
+
throw new Error(`invalid port: ${String(value)}`);
|
|
10
12
|
return result;
|
|
11
13
|
}
|
|
12
|
-
export function
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
publicBaseUrl = publicBaseUrl.replace(/\/$/, "");
|
|
14
|
+
export function configPath(env = process.env) { const home = env.XDG_CONFIG_HOME || path.join(os.homedir(), ".config"); return path.resolve(env.FILEPORT_CONFIG_FILE || path.join(home, "fileport", "config.json")); }
|
|
15
|
+
export function readConfigFile(file = configPath()) {
|
|
16
|
+
try {
|
|
17
|
+
const value = JSON.parse(fs.readFileSync(file, "utf8"));
|
|
18
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
19
|
+
throw new Error("must be an object");
|
|
20
|
+
return value;
|
|
20
21
|
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
if (error.code === "ENOENT")
|
|
24
|
+
return {};
|
|
25
|
+
throw new Error(`invalid Fileport config ${file}: ${error instanceof Error ? error.message : String(error)}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export function writeConfigFile(value, file = configPath()) {
|
|
29
|
+
const dir = path.dirname(file);
|
|
30
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
31
|
+
fs.chmodSync(dir, 0o700);
|
|
32
|
+
const temp = `${file}.${process.pid}.tmp`;
|
|
33
|
+
let fd;
|
|
34
|
+
try {
|
|
35
|
+
fd = fs.openSync(temp, "wx", 0o600);
|
|
36
|
+
fs.writeFileSync(fd, `${JSON.stringify(value, null, 2)}\n`);
|
|
37
|
+
fs.fsyncSync(fd);
|
|
38
|
+
fs.closeSync(fd);
|
|
39
|
+
fd = undefined;
|
|
40
|
+
fs.renameSync(temp, file);
|
|
41
|
+
fs.chmodSync(file, 0o600);
|
|
42
|
+
const directory = fs.openSync(dir, "r");
|
|
43
|
+
try {
|
|
44
|
+
fs.fsyncSync(directory);
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
fs.closeSync(directory);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
if (fd !== undefined)
|
|
52
|
+
try {
|
|
53
|
+
fs.closeSync(fd);
|
|
54
|
+
}
|
|
55
|
+
catch { }
|
|
56
|
+
try {
|
|
57
|
+
fs.unlinkSync(temp);
|
|
58
|
+
}
|
|
59
|
+
catch { }
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export function loadConfig(env = process.env, overrides = {}) {
|
|
63
|
+
const stateHome = env.XDG_STATE_HOME || path.join(os.homedir(), ".local", "state"), file = readConfigFile(configPath(env));
|
|
64
|
+
const publicRaw = overrides.publicBaseUrl ?? env.FILEPORT_PUBLIC_BASE_URL ?? file.public?.url ?? undefined;
|
|
65
|
+
const publicBaseUrl = publicRaw ? normalizePublicUrl(publicRaw).toString().replace(/\/$/, "") : undefined;
|
|
21
66
|
const packagedDufs = fileURLToPath(new URL("../vendor/dufs", import.meta.url));
|
|
22
|
-
return {
|
|
23
|
-
stateDir: path.resolve(env.FILEPORT_STATE_DIR || path.join(stateHome, "fileport")),
|
|
24
|
-
host: env.FILEPORT_HOST || "0.0.0.0",
|
|
25
|
-
port: integer(env.FILEPORT_PORT, 7892),
|
|
26
|
-
dufsBin: path.resolve(env.FILEPORT_DUFS_BIN || packagedDufs),
|
|
27
|
-
publicBaseUrl,
|
|
28
|
-
};
|
|
67
|
+
return { stateDir: path.resolve(env.FILEPORT_STATE_DIR || path.join(stateHome, "fileport")), host: overrides.host ?? env.FILEPORT_HOST ?? file.bind?.host ?? "0.0.0.0", port: validPort(overrides.port ?? env.FILEPORT_PORT ?? file.bind?.port, 7892), dufsBin: path.resolve(env.FILEPORT_DUFS_BIN || packagedDufs), publicBaseUrl, configFile: configPath(env) };
|
|
29
68
|
}
|
|
30
69
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/gateway.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { PublicAddressResolver } from "./network.js";
|
|
1
2
|
import { ShareRegistry } from "./registry.js";
|
|
2
3
|
import { SaveManager } from "./save.js";
|
|
3
4
|
import type { FileportConfig } from "./types.js";
|
|
4
5
|
import { DufsWorkerManager } from "./workers.js";
|
|
5
6
|
export declare class Gateway {
|
|
6
7
|
readonly config: FileportConfig;
|
|
8
|
+
readonly addressResolver: PublicAddressResolver;
|
|
7
9
|
readonly registry: ShareRegistry;
|
|
8
10
|
readonly workers: DufsWorkerManager;
|
|
9
11
|
readonly saves: SaveManager;
|
|
@@ -12,8 +14,12 @@ export declare class Gateway {
|
|
|
12
14
|
readonly controlSocket: string;
|
|
13
15
|
private lockFile?;
|
|
14
16
|
private readonly lockPath;
|
|
15
|
-
|
|
17
|
+
private publicSnapshot?;
|
|
18
|
+
constructor(config: FileportConfig, addressResolver?: PublicAddressResolver);
|
|
16
19
|
start(): Promise<void>;
|
|
20
|
+
private cleanupFailedStart;
|
|
21
|
+
private probeListener;
|
|
22
|
+
private probeHost;
|
|
17
23
|
private handleControl;
|
|
18
24
|
private handlePublic;
|
|
19
25
|
close(): Promise<void>;
|