ftown-bridge 0.19.19 → 0.19.21
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/index.js +228 -3
- package/dist/index.js.map +1 -1
- package/dist/solo/contract.d.ts +104 -0
- package/dist/solo/contract.js +248 -0
- package/dist/solo/contract.js.map +1 -0
- package/dist/solo/hub-manager.d.ts +85 -0
- package/dist/solo/hub-manager.js +381 -0
- package/dist/solo/hub-manager.js.map +1 -0
- package/dist/solo/panel-manager.d.ts +129 -0
- package/dist/solo/panel-manager.js +715 -0
- package/dist/solo/panel-manager.js.map +1 -0
- package/dist/solo/solo-auth.d.ts +25 -0
- package/dist/solo/solo-auth.js +83 -0
- package/dist/solo/solo-auth.js.map +1 -0
- package/dist/solo/solo-server.d.ts +105 -0
- package/dist/solo/solo-server.js +399 -0
- package/dist/solo/solo-server.js.map +1 -0
- package/dist/solo/ws-proxy.d.ts +55 -0
- package/dist/solo/ws-proxy.js +228 -0
- package/dist/solo/ws-proxy.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel-manager.js","sourceRoot":"","sources":["../../src/solo/panel-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface GeneratedAccessKey {
|
|
2
|
+
/** Raw hex access key — returned ONCE, never persisted (S1). */
|
|
3
|
+
raw: string;
|
|
4
|
+
/** sha256 hex of the raw key — the only persisted form. */
|
|
5
|
+
hash: string;
|
|
6
|
+
}
|
|
7
|
+
export interface MintHubJwtOptions {
|
|
8
|
+
secret: string;
|
|
9
|
+
ttlSeconds?: number;
|
|
10
|
+
nowMs?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface VerifyHubJwtOptions {
|
|
13
|
+
secret: string;
|
|
14
|
+
nowMs?: number;
|
|
15
|
+
}
|
|
16
|
+
export type HubJwtFailureReason = 'malformed' | 'bad-signature' | 'expired' | 'bad-algorithm' | 'bad-audience' | 'wrong-subject';
|
|
17
|
+
export interface HubJwtVerification {
|
|
18
|
+
valid: boolean;
|
|
19
|
+
reason?: HubJwtFailureReason;
|
|
20
|
+
}
|
|
21
|
+
export declare function generateAccessKey(): GeneratedAccessKey;
|
|
22
|
+
export declare function sha256Hex(input: string): string;
|
|
23
|
+
export declare function verifyAccessKey(presented: string, expectedHash: string): boolean;
|
|
24
|
+
export declare function mintHubJwt(options: MintHubJwtOptions): string;
|
|
25
|
+
export declare function verifyHubJwt(token: string, options: VerifyHubJwtOptions): HubJwtVerification;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { createHash, createHmac, randomBytes, timingSafeEqual } from 'node:crypto';
|
|
2
|
+
import { ACCESS_KEY_BYTES, HUB_JWT_AUDIENCE, HUB_JWT_TTL_SECONDS, SOLO_USER_ID, } from './contract.js';
|
|
3
|
+
const SHA256_HEX_LENGTH = 64;
|
|
4
|
+
export function generateAccessKey() {
|
|
5
|
+
const raw = randomBytes(ACCESS_KEY_BYTES).toString('hex');
|
|
6
|
+
return { raw, hash: sha256Hex(raw) };
|
|
7
|
+
}
|
|
8
|
+
export function sha256Hex(input) {
|
|
9
|
+
return createHash('sha256').update(input, 'utf8').digest('hex');
|
|
10
|
+
}
|
|
11
|
+
export function verifyAccessKey(presented, expectedHash) {
|
|
12
|
+
const presentedDigest = Buffer.from(sha256Hex(presented), 'utf8');
|
|
13
|
+
const expected = Buffer.alloc(SHA256_HEX_LENGTH);
|
|
14
|
+
Buffer.from(expectedHash, 'utf8').subarray(0, SHA256_HEX_LENGTH).copy(expected);
|
|
15
|
+
return timingSafeEqual(presentedDigest, expected);
|
|
16
|
+
}
|
|
17
|
+
function base64UrlEncode(value) {
|
|
18
|
+
return Buffer.from(value, 'utf8').toString('base64url');
|
|
19
|
+
}
|
|
20
|
+
function base64UrlDecode(value) {
|
|
21
|
+
return Buffer.from(value, 'base64url');
|
|
22
|
+
}
|
|
23
|
+
function hmacSha256(secret, signingInput) {
|
|
24
|
+
return createHmac('sha256', secret).update(signingInput, 'utf8').digest();
|
|
25
|
+
}
|
|
26
|
+
function failure(reason) {
|
|
27
|
+
return { valid: false, reason };
|
|
28
|
+
}
|
|
29
|
+
function isRecord(value) {
|
|
30
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
31
|
+
}
|
|
32
|
+
export function mintHubJwt(options) {
|
|
33
|
+
const iat = Math.floor((options.nowMs ?? Date.now()) / 1000);
|
|
34
|
+
const header = { alg: 'HS256', typ: 'JWT' };
|
|
35
|
+
const payload = {
|
|
36
|
+
sub: SOLO_USER_ID,
|
|
37
|
+
aud: HUB_JWT_AUDIENCE,
|
|
38
|
+
iat,
|
|
39
|
+
exp: iat + (options.ttlSeconds ?? HUB_JWT_TTL_SECONDS),
|
|
40
|
+
};
|
|
41
|
+
const signingInput = `${base64UrlEncode(JSON.stringify(header))}.${base64UrlEncode(JSON.stringify(payload))}`;
|
|
42
|
+
return `${signingInput}.${hmacSha256(options.secret, signingInput).toString('base64url')}`;
|
|
43
|
+
}
|
|
44
|
+
export function verifyHubJwt(token, options) {
|
|
45
|
+
const segments = token.split('.');
|
|
46
|
+
if (segments.length !== 3)
|
|
47
|
+
return failure('malformed');
|
|
48
|
+
let header;
|
|
49
|
+
try {
|
|
50
|
+
header = JSON.parse(base64UrlDecode(segments[0]).toString('utf8'));
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return failure('malformed');
|
|
54
|
+
}
|
|
55
|
+
if (!isRecord(header) || header['alg'] !== 'HS256')
|
|
56
|
+
return failure('bad-algorithm');
|
|
57
|
+
const expectedSignature = hmacSha256(options.secret, `${segments[0]}.${segments[1]}`);
|
|
58
|
+
const provided = Buffer.alloc(expectedSignature.length);
|
|
59
|
+
base64UrlDecode(segments[2]).subarray(0, expectedSignature.length).copy(provided);
|
|
60
|
+
if (!timingSafeEqual(provided, expectedSignature))
|
|
61
|
+
return failure('bad-signature');
|
|
62
|
+
let payload;
|
|
63
|
+
try {
|
|
64
|
+
payload = JSON.parse(base64UrlDecode(segments[1]).toString('utf8'));
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return failure('malformed');
|
|
68
|
+
}
|
|
69
|
+
if (!isRecord(payload))
|
|
70
|
+
return failure('malformed');
|
|
71
|
+
const exp = payload['exp'];
|
|
72
|
+
if (typeof exp !== 'number' || !Number.isFinite(exp))
|
|
73
|
+
return failure('malformed');
|
|
74
|
+
const nowSeconds = Math.floor((options.nowMs ?? Date.now()) / 1000);
|
|
75
|
+
if (exp <= nowSeconds)
|
|
76
|
+
return failure('expired');
|
|
77
|
+
if (payload['sub'] !== SOLO_USER_ID)
|
|
78
|
+
return failure('wrong-subject');
|
|
79
|
+
if (payload['aud'] !== HUB_JWT_AUDIENCE)
|
|
80
|
+
return failure('bad-audience');
|
|
81
|
+
return { valid: true };
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=solo-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solo-auth.js","sourceRoot":"","sources":["../../src/solo/solo-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ftown Solo — solo-server: the single public front server.
|
|
3
|
+
*
|
|
4
|
+
* Composes the routing table from contract.ts (ROUTING PRECEDENCE):
|
|
5
|
+
* 1. exact /api/solo/bootstrap | /api/solo/token | /healthz
|
|
6
|
+
* 2. /hub/* → WS upgrade proxy only (P1), everything else 404
|
|
7
|
+
* 3. other /api/* AND unknown /api/solo/* → existing local API child,
|
|
8
|
+
* with the S18 mechanism applied before forwarding (Host is rewritten
|
|
9
|
+
* by ws-proxy; Origin is replaced here) so the hosted loopback-Host and
|
|
10
|
+
* Origin guards pass byte-for-byte with ZERO edits to hosted files
|
|
11
|
+
* 4. everything else → panel child, or the byte-static placeholder page
|
|
12
|
+
* on GET / while the panel is not yet healthy (S12)
|
|
13
|
+
*
|
|
14
|
+
* Security invariants implemented here: S2 (auth gate before handlers),
|
|
15
|
+
* S3 (rate limiting), S12 (placeholder while children start), S13 (no
|
|
16
|
+
* X-Forwarded-* relay — enforced inside ws-proxy), S14 (no-store everywhere
|
|
17
|
+
* incl. placeholder plus a passthrough guard for proxied responses arriving
|
|
18
|
+
* without cache headers), S18 mechanism, S19 (host validation + absolute-form
|
|
19
|
+
* rejection).
|
|
20
|
+
*/
|
|
21
|
+
import type { IncomingMessage } from 'node:http';
|
|
22
|
+
import { type SoloConfig } from './contract.js';
|
|
23
|
+
/** Managers expose isHealthy(); the front polls them synchronously per request. */
|
|
24
|
+
export interface HubHealthSource {
|
|
25
|
+
isHealthy(): boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface PanelHealthSource {
|
|
28
|
+
isHealthy(): boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface RateLimitDecision {
|
|
31
|
+
limited: boolean;
|
|
32
|
+
/** Jittered seconds for the Retry-After header (meaningful only when limited). */
|
|
33
|
+
retryAfterSeconds: number;
|
|
34
|
+
}
|
|
35
|
+
export interface RateLimiterOptions {
|
|
36
|
+
/** Key-failure threshold within the window (>= triggers). Contract default 10. */
|
|
37
|
+
keyFailureThreshold?: number;
|
|
38
|
+
/** Per-peer request backstop threshold (> triggers). Contract default 240. */
|
|
39
|
+
backstopThreshold?: number;
|
|
40
|
+
/** Sliding-window size in ms for both counters. Default 60_000. */
|
|
41
|
+
windowMs?: number;
|
|
42
|
+
/** Base Retry-After seconds when limited. Default 60. */
|
|
43
|
+
retryAfterBaseSeconds?: number;
|
|
44
|
+
/** ± jitter applied to the Retry-After value. Default 5. */
|
|
45
|
+
retryAfterJitterSeconds?: number;
|
|
46
|
+
/** Injectable clock (tests). Defaults to Date.now. */
|
|
47
|
+
now?: () => number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Sliding-window limiter owned by the front server:
|
|
51
|
+
* - key failures: >=10 failures/60s per peer → limited
|
|
52
|
+
* - backstop: >240 /api/solo/* requests/min per peer → limited
|
|
53
|
+
* A successful auth resets that peer's failure count. NO XFF parsing in v1 —
|
|
54
|
+
* peers come exclusively from the injected peerAddress seam (S3).
|
|
55
|
+
*/
|
|
56
|
+
export declare class RateLimiter {
|
|
57
|
+
private readonly options;
|
|
58
|
+
private readonly keyFailures;
|
|
59
|
+
private readonly backstopHits;
|
|
60
|
+
constructor(options?: RateLimiterOptions);
|
|
61
|
+
private get windowMs();
|
|
62
|
+
/** Record one /api/solo/* request for `peer` and evaluate the backstop (>240/min). */
|
|
63
|
+
hitBackstop(peer: string): RateLimitDecision;
|
|
64
|
+
/** Record one failed auth for `peer` and evaluate the failure window (>=10/min). */
|
|
65
|
+
recordKeyFailure(peer: string): RateLimitDecision;
|
|
66
|
+
/** Successful auth: the peer's failure count resets. Backstop is unaffected. */
|
|
67
|
+
resetKeyFailures(peer: string): void;
|
|
68
|
+
private slide;
|
|
69
|
+
private decision;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Byte-static pre-panel page. ZERO request-derived bytes (S14); the only HTML
|
|
73
|
+
* the front ever generates. Auto-refreshes so the browser lands on the real
|
|
74
|
+
* panel as soon as it becomes healthy behind '/'.
|
|
75
|
+
*/
|
|
76
|
+
export declare const PLACEHOLDER_HTML: string;
|
|
77
|
+
export interface SoloServerOptions {
|
|
78
|
+
config: SoloConfig;
|
|
79
|
+
/** Port of the EXISTING local API server (bridge API) on loopback. */
|
|
80
|
+
localApiPort: number;
|
|
81
|
+
hub: HubHealthSource;
|
|
82
|
+
panel: PanelHealthSource;
|
|
83
|
+
/** TTL override passed through to mintHubJwt. Defaults to HUB_JWT_TTL_SECONDS. */
|
|
84
|
+
mintTtlSeconds?: number;
|
|
85
|
+
/** Injectable limiter (tests). A fresh RateLimiter is created when omitted. */
|
|
86
|
+
rateLimiter?: RateLimiter;
|
|
87
|
+
/**
|
|
88
|
+
* Source-IP seam (S3). Default: req.socket.remoteAddress. Tests inject this
|
|
89
|
+
* to simulate distinct peers without sockets.
|
|
90
|
+
*/
|
|
91
|
+
peerAddress?: (req: IncomingMessage) => string;
|
|
92
|
+
/**
|
|
93
|
+
* Acceptable Host headers for centrifugoUrl derivation (S19 tunnel seam).
|
|
94
|
+
* When provided (non-empty), bootstrap host validation checks membership
|
|
95
|
+
* here INSTEAD of the socket-local-address comparison.
|
|
96
|
+
*/
|
|
97
|
+
allowedHosts?: readonly string[];
|
|
98
|
+
/** Bind address override (tests bind 127.0.0.1 for strict S19 semantics). */
|
|
99
|
+
host?: string;
|
|
100
|
+
}
|
|
101
|
+
export interface SoloServerHandle {
|
|
102
|
+
port: number;
|
|
103
|
+
close(): Promise<void>;
|
|
104
|
+
}
|
|
105
|
+
export declare function createSoloServer(options: SoloServerOptions): Promise<SoloServerHandle>;
|