@fnndsc/porter 0.5.5 → 0.6.1
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/dist/app.d.ts +10 -1
- package/dist/app.js +211 -16
- package/dist/app.js.map +1 -1
- package/dist/config.d.ts +17 -0
- package/dist/config.js +23 -1
- package/dist/config.js.map +1 -1
- package/dist/greeter.d.ts +15 -1
- package/dist/greeter.js +41 -4
- package/dist/greeter.js.map +1 -1
- package/dist/notes.json +1 -1
- package/dist/porter.d.ts +10 -0
- package/dist/porter.js +110 -1
- package/dist/porter.js.map +1 -1
- package/dist/tokens.d.ts +171 -0
- package/dist/tokens.js +282 -0
- package/dist/tokens.js.map +1 -0
- package/package.json +2 -2
package/dist/app.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { type FastifyInstance } from 'fastify';
|
|
1
|
+
import { type FastifyInstance, type FastifyRequest } from 'fastify';
|
|
2
2
|
import type { PorterConfig } from './config.js';
|
|
3
3
|
import type { SessionHost, Berth } from './host/sessionHost.js';
|
|
4
4
|
import { SessionRegistry } from './registry.js';
|
|
5
5
|
import { type TokenMint } from './cube/auth.js';
|
|
6
|
+
import { DeviceCodes, TokenStore } from './tokens.js';
|
|
6
7
|
/** What the routes are built over. */
|
|
7
8
|
export interface PorterAppOptions {
|
|
8
9
|
/** What this porter ships (brasa, calypso, chell versions); a test names its own. */
|
|
@@ -17,14 +18,22 @@ export interface PorterAppOptions {
|
|
|
17
18
|
log?: (line: string) => void;
|
|
18
19
|
/** How often the idle sweep runs, in ms; a minute by default. */
|
|
19
20
|
sweepMs?: number;
|
|
21
|
+
/** The door's token store; built from the config's file when not given (a test gives its own). */
|
|
22
|
+
tokens?: TokenStore;
|
|
23
|
+
/** The device codes out; fresh when not given. */
|
|
24
|
+
codes?: DeviceCodes;
|
|
20
25
|
}
|
|
21
26
|
/** A porter application: the Fastify instance and the registry behind it. */
|
|
22
27
|
export interface PorterApp {
|
|
23
28
|
app: FastifyInstance;
|
|
24
29
|
registry: SessionRegistry;
|
|
30
|
+
/** The door's token store, for the porter's own CLI (`--tokens`, `--revoke`, `--mint`). */
|
|
31
|
+
tokens: TokenStore;
|
|
25
32
|
/** Adopts the sessions the state directory holds that still answer; called once the door is bound. */
|
|
26
33
|
adopt: () => Promise<void>;
|
|
27
34
|
}
|
|
35
|
+
/** The token a request presents as a bearer, or null. */
|
|
36
|
+
export declare function bearer_ofRequest(request: FastifyRequest): string | null;
|
|
28
37
|
/**
|
|
29
38
|
* The upstream base for a berth: its `ws://host:port` as `http://`.
|
|
30
39
|
*
|
package/dist/app.js
CHANGED
|
@@ -19,6 +19,17 @@
|
|
|
19
19
|
* told why and ended, a fresh one boots on the login it saved, and the
|
|
20
20
|
* browser follows the boot on the greeter (no password asked again).
|
|
21
21
|
* - `POST /logout` — the cookie is cleared; the session lives on.
|
|
22
|
+
* - Door tokens (`chell auth`): `POST /login` also takes `Authorization:
|
|
23
|
+
* Bearer <token>`, a token the door minted for a human login earlier,
|
|
24
|
+
* and lets its identity in the same way (a session not up boots on the
|
|
25
|
+
* login it saved); a JSON password login carrying `tokenName` is given
|
|
26
|
+
* a fresh token in its answer; a form login carrying a device `code`
|
|
27
|
+
* authorises the chell that asked for it.
|
|
28
|
+
* - `POST /auth/device` — chell asks for a one-time code to show its
|
|
29
|
+
* human; `GET /login?code=…` is the login page saying what it is for;
|
|
30
|
+
* `GET /auth/device/<code>` is chell's poll: pending, then the token
|
|
31
|
+
* once, then unknown. `GET /auth/tokens` lists the identity's tokens
|
|
32
|
+
* by one of them; `DELETE /auth/token` revokes the token in hand.
|
|
22
33
|
* - `GET /boot/<key>` — the session's boot as it happens, server-sent, one
|
|
23
34
|
* event per line the daemon wrote, ending with `ready` or `failed`.
|
|
24
35
|
* - `/s/<key>/…` — the session itself: the argus page and its assets, the
|
|
@@ -49,12 +60,27 @@ import { cubeToken_mint } from './cube/auth.js';
|
|
|
49
60
|
import { readFileSync } from 'node:fs';
|
|
50
61
|
import { fileURLToPath } from 'node:url';
|
|
51
62
|
import { DOOR_COOKIE, doorCookie_options } from './door.js';
|
|
52
|
-
import { loginPage_render, greetPage_render } from './greeter.js';
|
|
63
|
+
import { loginPage_render, greetPage_render, authorisedPage_render } from './greeter.js';
|
|
64
|
+
import { DeviceCodes, TokenStore, token_looksLike } from './tokens.js';
|
|
53
65
|
import { idleSweep_run } from './sweep.js';
|
|
54
66
|
const loginSchema = z.object({
|
|
55
67
|
username: z.string().min(1),
|
|
56
68
|
password: z.string().min(1),
|
|
69
|
+
/** A JSON caller asking for a door token with this name, beside its session. */
|
|
70
|
+
tokenName: z.string().min(1).max(80).optional(),
|
|
71
|
+
/** A device code the login authorises, carried by the page variant. */
|
|
72
|
+
code: z.string().min(1).max(20).optional(),
|
|
57
73
|
});
|
|
74
|
+
const deviceSchema = z.object({
|
|
75
|
+
/** Where the chell asking for the code runs, for the page and the token's name. */
|
|
76
|
+
host: z.string().min(1).max(120),
|
|
77
|
+
});
|
|
78
|
+
/** The token a request presents as a bearer, or null. */
|
|
79
|
+
export function bearer_ofRequest(request) {
|
|
80
|
+
const header = String(request.headers.authorization ?? '');
|
|
81
|
+
const match = /^Bearer\s+(\S+)$/i.exec(header);
|
|
82
|
+
return match === null ? null : match[1];
|
|
83
|
+
}
|
|
58
84
|
/**
|
|
59
85
|
* The upstream base for a berth: its `ws://host:port` as `http://`.
|
|
60
86
|
*
|
|
@@ -178,6 +204,9 @@ export async function porterApp_build(options) {
|
|
|
178
204
|
const installed = options.installed ?? installed_read();
|
|
179
205
|
const mint = options.mint ?? cubeToken_mint;
|
|
180
206
|
const registry = new SessionRegistry();
|
|
207
|
+
const tokens = options.tokens ?? new TokenStore(config.tokensFile, config.tokenDays);
|
|
208
|
+
tokens.load();
|
|
209
|
+
const codes = options.codes ?? new DeviceCodes();
|
|
181
210
|
const app = Fastify({ logger: options.logger ?? false, trustProxy: true });
|
|
182
211
|
// A porter restarted adopts the sessions its predecessor started: their
|
|
183
212
|
// berths are in the state directory, and a cookie that names one still
|
|
@@ -230,26 +259,183 @@ export async function porterApp_build(options) {
|
|
|
230
259
|
await reply.redirect(entry === null ? '/login' : `/s/${entry.key}/?door`, 302);
|
|
231
260
|
});
|
|
232
261
|
app.get('/login', async (request, reply) => {
|
|
262
|
+
const query = request.query;
|
|
263
|
+
const reason = typeof query.reason === 'string' && query.reason.length > 0 ? query.reason : null;
|
|
264
|
+
void reply.type('text/html; charset=utf-8');
|
|
265
|
+
if (typeof query.code === 'string' && query.code.length > 0) {
|
|
266
|
+
// The device-code variant: the same door, saying which chell it is for.
|
|
267
|
+
const host = codes.host_of(query.code);
|
|
268
|
+
if (host === null)
|
|
269
|
+
return loginPage_render(config.cubeUrl, `the code ${query.code} is not waiting (ten minutes, once); run chell auth login again`);
|
|
270
|
+
return loginPage_render(config.cubeUrl, reason, { code: query.code, host });
|
|
271
|
+
}
|
|
272
|
+
return loginPage_render(config.cubeUrl, reason);
|
|
273
|
+
});
|
|
274
|
+
// Where a human types the code chell showed: the login page with a code field.
|
|
275
|
+
app.get('/device', async (request, reply) => {
|
|
233
276
|
const reason = request.query.reason;
|
|
234
277
|
void reply.type('text/html; charset=utf-8');
|
|
235
|
-
return loginPage_render(config.cubeUrl, typeof reason === 'string' && reason.length > 0 ? reason : null);
|
|
278
|
+
return loginPage_render(config.cubeUrl, typeof reason === 'string' && reason.length > 0 ? reason : null, 'ask');
|
|
279
|
+
});
|
|
280
|
+
app.post('/auth/device', async (request, reply) => {
|
|
281
|
+
const parsed = deviceSchema.safeParse(request.body);
|
|
282
|
+
if (!parsed.success)
|
|
283
|
+
return reply.code(400).send({ error: 'the host chell runs on is required' });
|
|
284
|
+
const issued = codes.issue(parsed.data.host);
|
|
285
|
+
return { code: issued.code, expires: issued.expires, url: '/device' };
|
|
286
|
+
});
|
|
287
|
+
/** The token a self-service route is called with, checked; or the refusal sent. */
|
|
288
|
+
const bearer_check = async (request, reply) => {
|
|
289
|
+
const bearer = bearer_ofRequest(request);
|
|
290
|
+
if (bearer === null || !token_looksLike(bearer)) {
|
|
291
|
+
await reply.code(401).send({ error: 'a door token is required (Authorization: Bearer …)' });
|
|
292
|
+
return null;
|
|
293
|
+
}
|
|
294
|
+
const checked = tokens.check(bearer);
|
|
295
|
+
if (!checked.ok) {
|
|
296
|
+
await reply.code(401).send({ error: checked.why === 'expired' ? `the door token "${checked.record.name}" expired on ${checked.record.expires.slice(0, 10)}` : 'the door does not know that token' });
|
|
297
|
+
return null;
|
|
298
|
+
}
|
|
299
|
+
return checked.record;
|
|
300
|
+
};
|
|
301
|
+
// This identity's tokens, by a token of its own: `chell auth tokens`.
|
|
302
|
+
app.get('/auth/tokens', async (request, reply) => {
|
|
303
|
+
const holder = await bearer_check(request, reply);
|
|
304
|
+
if (holder === null)
|
|
305
|
+
return reply;
|
|
306
|
+
return {
|
|
307
|
+
user: holder.user,
|
|
308
|
+
tokens: tokens.list().filter((token) => token.identity === holder.identity).map((token) => ({ name: token.name, created: token.created, expires: token.expires, lastUsed: token.lastUsed })),
|
|
309
|
+
};
|
|
310
|
+
});
|
|
311
|
+
// The token in hand ends itself: `chell auth logout`.
|
|
312
|
+
app.delete('/auth/token', async (request, reply) => {
|
|
313
|
+
const holder = await bearer_check(request, reply);
|
|
314
|
+
if (holder === null)
|
|
315
|
+
return reply;
|
|
316
|
+
tokens.revoke(holder.user, holder.name);
|
|
317
|
+
options.log?.(`${holder.user} revoked their door token "${holder.name}"`);
|
|
318
|
+
return { revoked: true, name: holder.name };
|
|
319
|
+
});
|
|
320
|
+
app.get('/auth/device/:code', async (request, reply) => {
|
|
321
|
+
const code = request.params.code;
|
|
322
|
+
const taken = codes.take(code);
|
|
323
|
+
if (taken.state === 'unknown')
|
|
324
|
+
return reply.code(404).send({ state: 'unknown' });
|
|
325
|
+
if (taken.state === 'pending')
|
|
326
|
+
return { state: 'pending' };
|
|
327
|
+
return { state: 'authorised', ...taken.grant };
|
|
236
328
|
});
|
|
237
329
|
app.post('/login', async (request, reply) => {
|
|
238
330
|
const wantsJson = request_wantsJson(request);
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
331
|
+
// A form that carried a device code goes back to the page with the code
|
|
332
|
+
// field, so a mistyped password or code is tried again where it was typed.
|
|
333
|
+
const fromDevice = typeof request.body?.code === 'string';
|
|
334
|
+
const refuse = async (status, reason) => wantsJson ? reply.code(status).send({ error: reason }) : reply.redirect(`/${fromDevice ? 'device' : 'login'}?reason=${encodeURIComponent(reason)}`, 303);
|
|
335
|
+
// A script's way in: a door token minted for a human login earlier.
|
|
336
|
+
// Checked before any body, so a token never travels beside a password.
|
|
337
|
+
const bearer = bearer_ofRequest(request);
|
|
338
|
+
let username;
|
|
339
|
+
let cubeToken;
|
|
340
|
+
let byToken = null;
|
|
341
|
+
let wanted = {};
|
|
342
|
+
if (bearer !== null) {
|
|
343
|
+
if (!token_looksLike(bearer))
|
|
344
|
+
return refuse(401, 'that is not a door token');
|
|
345
|
+
const checked = tokens.check(bearer);
|
|
346
|
+
if (!checked.ok) {
|
|
347
|
+
if (checked.why === 'expired') {
|
|
348
|
+
options.log?.(`refused ${checked.record.user}'s door token "${checked.record.name}": it expired on ${checked.record.expires.slice(0, 10)}`);
|
|
349
|
+
return refuse(401, `the door token "${checked.record.name}" expired on ${checked.record.expires.slice(0, 10)}; run chell auth login`);
|
|
350
|
+
}
|
|
351
|
+
options.log?.('refused a door token nobody holds (revoked, or never minted here)');
|
|
352
|
+
return refuse(401, 'the door does not know that token (revoked, or minted elsewhere); run chell auth login');
|
|
353
|
+
}
|
|
354
|
+
byToken = checked.record;
|
|
355
|
+
tokens.touch(byToken);
|
|
356
|
+
username = byToken.user;
|
|
357
|
+
cubeToken = null;
|
|
243
358
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
359
|
+
else {
|
|
360
|
+
const parsed = loginSchema.safeParse(request.body);
|
|
361
|
+
if (!parsed.success) {
|
|
362
|
+
return refuse(400, 'a username and a password are required');
|
|
363
|
+
}
|
|
364
|
+
username = parsed.data.username;
|
|
365
|
+
wanted = { ...(parsed.data.tokenName === undefined ? {} : { tokenName: parsed.data.tokenName }), ...(parsed.data.code === undefined ? {} : { code: parsed.data.code }) };
|
|
366
|
+
const minted = await mint(config.cubeUrl, username, parsed.data.password);
|
|
367
|
+
if (minted.token === null) {
|
|
368
|
+
return refuse(401, minted.reason ?? 'refused');
|
|
369
|
+
}
|
|
370
|
+
cubeToken = minted.token;
|
|
248
371
|
}
|
|
249
372
|
const identity = identity_normalise(username, config.cubeUrl);
|
|
373
|
+
// A device code: the human came to authorise a chell, not to open a
|
|
374
|
+
// session here. The token is minted, handed to the waiting poll, and
|
|
375
|
+
// the browser is told it can go.
|
|
376
|
+
if (wanted.code !== undefined) {
|
|
377
|
+
const forHost = codes.host_of(wanted.code);
|
|
378
|
+
if (forHost === null)
|
|
379
|
+
return refuse(410, `the code ${wanted.code} is not waiting (ten minutes, once); run chell auth login again`);
|
|
380
|
+
const name = `${username}@${forHost}`;
|
|
381
|
+
const made = tokens.mint(identity, username, name);
|
|
382
|
+
const grant = { token: made.token, user: username, name, expires: made.record.expires };
|
|
383
|
+
codes.authorise(wanted.code, grant);
|
|
384
|
+
options.log?.(`minted a door token "${name}" for ${username} by device code (dies ${made.record.expires.slice(0, 10)})`);
|
|
385
|
+
// A token boots a session on the login the session saved. A human who
|
|
386
|
+
// never came through before has none, so this login, which holds a
|
|
387
|
+
// fresh CUBE token, starts the session now; chell's first call then
|
|
388
|
+
// finds it up or booting (found live: a first-ever device login left
|
|
389
|
+
// `chell -c` failing with "no token is saved for this identity").
|
|
390
|
+
if (cubeToken !== null && (await host.find(identity)) === null) {
|
|
391
|
+
const booting = host.boot_follow(identity, { line: () => undefined, done: () => undefined });
|
|
392
|
+
booting?.release();
|
|
393
|
+
if (booting === null || booting.report.state !== 'booting') {
|
|
394
|
+
registry.pending_note(identity, username);
|
|
395
|
+
host.spawn_begin(identity, username, config.cubeUrl, cubeToken);
|
|
396
|
+
options.log?.(`starting a session for ${username} beside the device login`);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
if (wantsJson)
|
|
400
|
+
return { authorised: true, name, expires: made.record.expires };
|
|
401
|
+
void reply.type('text/html; charset=utf-8');
|
|
402
|
+
return authorisedPage_render(config.cubeUrl, forHost, name, made.record.expires);
|
|
403
|
+
}
|
|
404
|
+
// A password login asking for a token beside its session.
|
|
405
|
+
let granted = null;
|
|
406
|
+
if (wanted.tokenName !== undefined) {
|
|
407
|
+
const made = tokens.mint(identity, username, wanted.tokenName);
|
|
408
|
+
granted = { token: made.token, name: wanted.tokenName, expires: made.record.expires };
|
|
409
|
+
options.log?.(`minted a door token "${wanted.tokenName}" for ${username} (dies ${made.record.expires.slice(0, 10)})`);
|
|
410
|
+
}
|
|
411
|
+
// The answer carries the grant a password login asked for, or, on a
|
|
412
|
+
// token login, whose token it was: a pasted token becomes a whole door file.
|
|
413
|
+
const answer = (body) => {
|
|
414
|
+
if (granted !== null)
|
|
415
|
+
return { ...body, token: granted };
|
|
416
|
+
if (byToken !== null)
|
|
417
|
+
return { ...body, user: byToken.user, tokenName: byToken.name, expires: byToken.expires };
|
|
418
|
+
return body;
|
|
419
|
+
};
|
|
250
420
|
const found = await host.find(identity);
|
|
251
421
|
const key = registry.key_of(identity);
|
|
252
422
|
void reply.setCookie(DOOR_COOKIE, key, doorCookie_options(config.cookieHours, request.protocol === 'https'));
|
|
423
|
+
if (byToken !== null)
|
|
424
|
+
options.log?.(`${username} came through by door token "${byToken.name}"`);
|
|
425
|
+
// A boot already under way is joined, never restarted: two scripts
|
|
426
|
+
// arriving together, or a browser and a script, would otherwise take
|
|
427
|
+
// turns killing each other's boot and nobody would ever get in.
|
|
428
|
+
if (found === null) {
|
|
429
|
+
const booting = host.boot_follow(identity, { line: () => undefined, done: () => undefined });
|
|
430
|
+
if (booting !== null) {
|
|
431
|
+
booting.release();
|
|
432
|
+
if (booting.report.state === 'booting') {
|
|
433
|
+
registry.pending_note(identity, username);
|
|
434
|
+
options.log?.(`${username} joins the boot already under way`);
|
|
435
|
+
return wantsJson ? answer({ key, mount: `/s/${key}/`, state: 'starting' }) : reply.redirect(`/greet/${key}`, 303);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
253
439
|
// A login never lands on a kernel older than the door's: a session whose
|
|
254
440
|
// daemon runs code this porter no longer ships is ended here and boots
|
|
255
441
|
// afresh on the way in, its saved state kept.
|
|
@@ -262,21 +448,30 @@ export async function porterApp_build(options) {
|
|
|
262
448
|
options.log?.(`restarting ${username}'s session for the new release (${behind.join(', ')})`);
|
|
263
449
|
registry.pending_note(identity, username);
|
|
264
450
|
host.restart_begin(identity, username, config.cubeUrl);
|
|
265
|
-
return wantsJson ? { key, mount: `/s/${key}/`, state: 'starting' } : reply.redirect(`/greet/${key}`, 303);
|
|
451
|
+
return wantsJson ? answer({ key, mount: `/s/${key}/`, state: 'starting' }) : reply.redirect(`/greet/${key}`, 303);
|
|
266
452
|
}
|
|
267
453
|
}
|
|
268
454
|
if (found !== null) {
|
|
269
455
|
registry.note(identity, username, found);
|
|
270
456
|
options.log?.(`attached ${username} to the session up at ${found.url}`);
|
|
271
|
-
return wantsJson ? { key, mount: `/s/${key}/`, state: 'attached' } : reply.redirect(`/s/${key}/?door`, 303);
|
|
457
|
+
return wantsJson ? answer({ key, mount: `/s/${key}/`, state: 'attached' }) : reply.redirect(`/s/${key}/?door`, 303);
|
|
272
458
|
}
|
|
273
459
|
// The boot is watched, not waited for: the door answers now, and the
|
|
274
460
|
// greet follows the rows until the berth answers. The berth reaches the
|
|
275
461
|
// registry when the boot ends, so the mount refuses until then.
|
|
276
462
|
registry.pending_note(identity, username);
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
463
|
+
if (cubeToken === null) {
|
|
464
|
+
// A door token carries no CUBE token: the session boots on the login
|
|
465
|
+
// it saved when a human last came through, as a restart does; a
|
|
466
|
+
// session that never saved one refuses, and says so on the boot.
|
|
467
|
+
host.restart_begin(identity, username, config.cubeUrl);
|
|
468
|
+
options.log?.(`starting a session for ${username} on its saved login`);
|
|
469
|
+
}
|
|
470
|
+
else {
|
|
471
|
+
host.spawn_begin(identity, username, config.cubeUrl, cubeToken);
|
|
472
|
+
options.log?.(`starting a session for ${username}`);
|
|
473
|
+
}
|
|
474
|
+
return wantsJson ? answer({ key, mount: `/s/${key}/`, state: 'starting' }) : reply.redirect(`/greet/${key}`, 303);
|
|
280
475
|
});
|
|
281
476
|
app.get('/greet/:key', async (request, reply) => {
|
|
282
477
|
const key = request.params.key;
|
|
@@ -464,6 +659,6 @@ export async function porterApp_build(options) {
|
|
|
464
659
|
sweep.unref();
|
|
465
660
|
app.addHook('onClose', async () => { clearInterval(sweep); });
|
|
466
661
|
});
|
|
467
|
-
return { app, registry, adopt };
|
|
662
|
+
return { app, registry, adopt, tokens };
|
|
468
663
|
}
|
|
469
664
|
//# sourceMappingURL=app.js.map
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -18,6 +18,10 @@ export interface PorterConfig {
|
|
|
18
18
|
cookieHours: number;
|
|
19
19
|
/** How long a session may stand with no surface on it before it is ended, in hours. */
|
|
20
20
|
idleHours: number;
|
|
21
|
+
/** How long a door token lives from its minting, in days; a fixed horizon, never slid. */
|
|
22
|
+
tokenDays: number;
|
|
23
|
+
/** The door's token store: hashes and names, mode 0600, in the porter's own state. */
|
|
24
|
+
tokensFile: string;
|
|
21
25
|
/**
|
|
22
26
|
* A folder of sounds served in place of the page's own (`sounds/<name>`),
|
|
23
27
|
* when the deployment has them: the original LCARS beeps, which may not
|
|
@@ -36,9 +40,20 @@ export interface PorterEnv {
|
|
|
36
40
|
PORTER_SECRET?: string;
|
|
37
41
|
PORTER_COOKIE_HOURS?: string;
|
|
38
42
|
PORTER_IDLE_HOURS?: string;
|
|
43
|
+
PORTER_TOKEN_DAYS?: string;
|
|
44
|
+
PORTER_TOKENS_FILE?: string;
|
|
39
45
|
PORTER_SOUNDS_DIR?: string;
|
|
40
46
|
XDG_STATE_HOME?: string;
|
|
41
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Where the door's token store is: `PORTER_TOKENS_FILE`, else beside the
|
|
50
|
+
* session directories (which the adopt scan skips as a file). The CLI's
|
|
51
|
+
* token verbs resolve it the same way the serving porter does.
|
|
52
|
+
*
|
|
53
|
+
* @param env - The environment.
|
|
54
|
+
* @returns The file's path.
|
|
55
|
+
*/
|
|
56
|
+
export declare function porterTokensFile_resolve(env: PorterEnv): string;
|
|
42
57
|
/** The port a porter takes when told none. */
|
|
43
58
|
export declare const PORTER_DEFAULT_PORT: number;
|
|
44
59
|
/**
|
|
@@ -54,6 +69,8 @@ export declare const PORTER_DEFAULT_COOKIE_HOURS: number;
|
|
|
54
69
|
* boots warm from it.
|
|
55
70
|
*/
|
|
56
71
|
export declare const PORTER_DEFAULT_IDLE_HOURS: number;
|
|
72
|
+
/** How long a door token lives when the operator set nothing: a month, then a human logs in again. */
|
|
73
|
+
export declare const PORTER_DEFAULT_TOKEN_DAYS: number;
|
|
57
74
|
/**
|
|
58
75
|
* Finds the chell this porter will start sessions with: the one installed
|
|
59
76
|
* beside it, by the package's own entry.
|
package/dist/config.js
CHANGED
|
@@ -13,6 +13,17 @@ import { createRequire } from 'node:module';
|
|
|
13
13
|
import { randomBytes } from 'node:crypto';
|
|
14
14
|
import { homedir } from 'node:os';
|
|
15
15
|
import { join } from 'node:path';
|
|
16
|
+
/**
|
|
17
|
+
* Where the door's token store is: `PORTER_TOKENS_FILE`, else beside the
|
|
18
|
+
* session directories (which the adopt scan skips as a file). The CLI's
|
|
19
|
+
* token verbs resolve it the same way the serving porter does.
|
|
20
|
+
*
|
|
21
|
+
* @param env - The environment.
|
|
22
|
+
* @returns The file's path.
|
|
23
|
+
*/
|
|
24
|
+
export function porterTokensFile_resolve(env) {
|
|
25
|
+
return env.PORTER_TOKENS_FILE !== undefined && env.PORTER_TOKENS_FILE.length > 0 ? env.PORTER_TOKENS_FILE : join(porterStateDir_resolve(env), 'tokens.json');
|
|
26
|
+
}
|
|
16
27
|
/** The port a porter takes when told none. */
|
|
17
28
|
export const PORTER_DEFAULT_PORT = 4180;
|
|
18
29
|
/**
|
|
@@ -28,6 +39,8 @@ export const PORTER_DEFAULT_COOKIE_HOURS = 24;
|
|
|
28
39
|
* boots warm from it.
|
|
29
40
|
*/
|
|
30
41
|
export const PORTER_DEFAULT_IDLE_HOURS = 24;
|
|
42
|
+
/** How long a door token lives when the operator set nothing: a month, then a human logs in again. */
|
|
43
|
+
export const PORTER_DEFAULT_TOKEN_DAYS = 30;
|
|
31
44
|
/**
|
|
32
45
|
* Finds the chell this porter will start sessions with: the one installed
|
|
33
46
|
* beside it, by the package's own entry.
|
|
@@ -87,6 +100,12 @@ export function porterConfig_resolve(env, locateChell = chellEntry_locate) {
|
|
|
87
100
|
if (!Number.isFinite(idleHours) || idleHours <= 0) {
|
|
88
101
|
throw new Error(`PORTER_IDLE_HOURS is not a span of hours: ${idleText}`);
|
|
89
102
|
}
|
|
103
|
+
const daysText = env.PORTER_TOKEN_DAYS ?? String(PORTER_DEFAULT_TOKEN_DAYS);
|
|
104
|
+
const tokenDays = Number(daysText);
|
|
105
|
+
if (!Number.isFinite(tokenDays) || tokenDays <= 0) {
|
|
106
|
+
throw new Error(`PORTER_TOKEN_DAYS is not a span of days: ${daysText}`);
|
|
107
|
+
}
|
|
108
|
+
const stateDir = porterStateDir_resolve(env);
|
|
90
109
|
// A secret nobody set is made up here: the door still works, but every
|
|
91
110
|
// browser is asked again when this porter restarts. Said out loud at start.
|
|
92
111
|
const secretGiven = env.PORTER_SECRET !== undefined && env.PORTER_SECRET.length >= 20;
|
|
@@ -95,7 +114,7 @@ export function porterConfig_resolve(env, locateChell = chellEntry_locate) {
|
|
|
95
114
|
}
|
|
96
115
|
return {
|
|
97
116
|
cubeUrl: cubeUrl.endsWith('/') ? cubeUrl : `${cubeUrl}/`,
|
|
98
|
-
stateDir
|
|
117
|
+
stateDir,
|
|
99
118
|
host: env.PORTER_HOST ?? '127.0.0.1',
|
|
100
119
|
port,
|
|
101
120
|
chellEntry: env.PORTER_CHELL ?? locateChell(),
|
|
@@ -103,6 +122,9 @@ export function porterConfig_resolve(env, locateChell = chellEntry_locate) {
|
|
|
103
122
|
secretGenerated: !secretGiven,
|
|
104
123
|
cookieHours,
|
|
105
124
|
idleHours,
|
|
125
|
+
tokenDays,
|
|
126
|
+
// Beside the session directories, which the adopt scan skips as a file.
|
|
127
|
+
tokensFile: porterTokensFile_resolve(env),
|
|
106
128
|
soundsDir: env.PORTER_SOUNDS_DIR !== undefined && env.PORTER_SOUNDS_DIR.length > 0 ? env.PORTER_SOUNDS_DIR : null,
|
|
107
129
|
};
|
|
108
130
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/greeter.d.ts
CHANGED
|
@@ -34,7 +34,21 @@ export declare function attribute_escape(text: string): string;
|
|
|
34
34
|
* @param reason - Why the last try was refused, when it was.
|
|
35
35
|
* @returns The page.
|
|
36
36
|
*/
|
|
37
|
-
export declare function loginPage_render(cubeUrl: string, reason: string | null
|
|
37
|
+
export declare function loginPage_render(cubeUrl: string, reason: string | null, authorise?: {
|
|
38
|
+
code: string;
|
|
39
|
+
host: string;
|
|
40
|
+
} | 'ask' | null): string;
|
|
41
|
+
/**
|
|
42
|
+
* The page after a device code was authorised: chell has its token, the
|
|
43
|
+
* browser was only here to say so.
|
|
44
|
+
*
|
|
45
|
+
* @param cubeUrl - The CUBE the door serves.
|
|
46
|
+
* @param host - Where chell runs.
|
|
47
|
+
* @param name - The token's name.
|
|
48
|
+
* @param expires - ISO time the token dies.
|
|
49
|
+
* @returns The page.
|
|
50
|
+
*/
|
|
51
|
+
export declare function authorisedPage_render(cubeUrl: string, host: string, name: string, expires: string): string;
|
|
38
52
|
/**
|
|
39
53
|
* The greet: the brain awake, the boot rows arriving, the hand-off.
|
|
40
54
|
*
|