@linkshell/gateway 0.5.2 → 0.6.0
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/Dockerfile +8 -22
- package/README.md +99 -44
- package/dist/gateway/src/accounts.js.map +1 -0
- package/dist/gateway/src/index.d.ts +4 -1
- package/dist/gateway/src/index.js +4 -863
- package/dist/gateway/src/index.js.map +1 -1
- package/dist/gateway/src/main.js +57 -0
- package/dist/gateway/src/main.js.map +1 -0
- package/dist/gateway/src/rate-limit.d.ts +22 -0
- package/dist/gateway/src/rate-limit.js +66 -0
- package/dist/gateway/src/rate-limit.js.map +1 -0
- package/dist/gateway/src/relay.d.ts +84 -5
- package/dist/gateway/src/relay.js +402 -529
- package/dist/gateway/src/relay.js.map +1 -1
- package/dist/gateway/src/serve.d.ts +34 -0
- package/dist/gateway/src/serve.js +102 -0
- package/dist/gateway/src/serve.js.map +1 -0
- package/dist/{gateway-v2 → gateway}/src/store.d.ts +5 -0
- package/dist/{gateway-v2 → gateway}/src/store.js +7 -0
- package/dist/gateway/src/store.js.map +1 -0
- package/dist/gateway/src/subscription.d.ts +18 -0
- package/dist/gateway/src/subscription.js +46 -0
- package/dist/gateway/src/subscription.js.map +1 -0
- package/dist/gateway/tsconfig.tsbuildinfo +1 -1
- package/dist/wire/src/direct.d.ts +22 -0
- package/dist/wire/src/direct.js +37 -0
- package/dist/wire/src/direct.js.map +1 -0
- package/dist/wire/src/index.d.ts +1 -0
- package/dist/wire/src/index.js +1 -0
- package/dist/wire/src/index.js.map +1 -1
- package/dist/wire/src/model.d.ts +387 -6
- package/dist/wire/src/model.js +74 -0
- package/dist/wire/src/model.js.map +1 -1
- package/dist/wire/src/relay.d.ts +8 -8
- package/dist/wire/src/rpc.d.ts +2524 -200
- package/dist/wire/src/rpc.js +77 -4
- package/dist/wire/src/rpc.js.map +1 -1
- package/dist/wire/src/updates.d.ts +390 -34
- package/dist/wire/src/updates.js +11 -1
- package/dist/wire/src/updates.js.map +1 -1
- package/package.json +12 -12
- package/src/accounts.ts +32 -0
- package/src/index.ts +4 -997
- package/src/main.ts +65 -0
- package/src/rate-limit.ts +72 -0
- package/src/relay.ts +435 -620
- package/src/serve.ts +130 -0
- package/src/store.ts +135 -0
- package/src/subscription.ts +51 -0
- package/dist/gateway/src/auth-middleware.d.ts +0 -44
- package/dist/gateway/src/auth-middleware.js +0 -204
- package/dist/gateway/src/auth-middleware.js.map +0 -1
- package/dist/gateway/src/cors.d.ts +0 -2
- package/dist/gateway/src/cors.js +0 -7
- package/dist/gateway/src/cors.js.map +0 -1
- package/dist/gateway/src/embedded.d.ts +0 -21
- package/dist/gateway/src/embedded.js +0 -438
- package/dist/gateway/src/embedded.js.map +0 -1
- package/dist/gateway/src/host-auth.d.ts +0 -32
- package/dist/gateway/src/host-auth.js +0 -78
- package/dist/gateway/src/host-auth.js.map +0 -1
- package/dist/gateway/src/pairings.d.ts +0 -38
- package/dist/gateway/src/pairings.js +0 -119
- package/dist/gateway/src/pairings.js.map +0 -1
- package/dist/gateway/src/presence.d.ts +0 -28
- package/dist/gateway/src/presence.js +0 -92
- package/dist/gateway/src/presence.js.map +0 -1
- package/dist/gateway/src/sessions.d.ts +0 -113
- package/dist/gateway/src/sessions.js +0 -352
- package/dist/gateway/src/sessions.js.map +0 -1
- package/dist/gateway/src/state-store.d.ts +0 -21
- package/dist/gateway/src/state-store.js +0 -103
- package/dist/gateway/src/state-store.js.map +0 -1
- package/dist/gateway/src/static-web.d.ts +0 -15
- package/dist/gateway/src/static-web.js +0 -129
- package/dist/gateway/src/static-web.js.map +0 -1
- package/dist/gateway/src/tokens.d.ts +0 -19
- package/dist/gateway/src/tokens.js +0 -151
- package/dist/gateway/src/tokens.js.map +0 -1
- package/dist/gateway/src/tunnel.d.ts +0 -61
- package/dist/gateway/src/tunnel.js +0 -576
- package/dist/gateway/src/tunnel.js.map +0 -1
- package/dist/gateway-v2/src/accounts.js.map +0 -1
- package/dist/gateway-v2/src/index.d.ts +0 -3
- package/dist/gateway-v2/src/index.js +0 -4
- package/dist/gateway-v2/src/index.js.map +0 -1
- package/dist/gateway-v2/src/main.js +0 -17
- package/dist/gateway-v2/src/main.js.map +0 -1
- package/dist/gateway-v2/src/server.d.ts +0 -84
- package/dist/gateway-v2/src/server.js +0 -426
- package/dist/gateway-v2/src/server.js.map +0 -1
- package/dist/gateway-v2/src/store.js.map +0 -1
- package/dist/shared-protocol/src/index.d.ts +0 -17029
- package/dist/shared-protocol/src/index.js +0 -1064
- package/dist/shared-protocol/src/index.js.map +0 -1
- package/src/auth-middleware.ts +0 -266
- package/src/cors.ts +0 -8
- package/src/embedded.ts +0 -526
- package/src/host-auth.ts +0 -88
- package/src/pairings.ts +0 -133
- package/src/presence.ts +0 -118
- package/src/sessions.ts +0 -432
- package/src/state-store.ts +0 -140
- package/src/static-web.ts +0 -133
- package/src/tokens.ts +0 -159
- package/src/tunnel.ts +0 -644
- /package/dist/{gateway-v2 → gateway}/src/accounts.d.ts +0 -0
- /package/dist/{gateway-v2 → gateway}/src/accounts.js +0 -0
- /package/dist/{gateway-v2 → gateway}/src/main.d.ts +0 -0
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { GatewayStateStore } from "./state-store.js";
|
|
2
|
-
export declare class TokenManager {
|
|
3
|
-
private readonly store?;
|
|
4
|
-
private tokens;
|
|
5
|
-
private sessionToToken;
|
|
6
|
-
private cleanupTimer;
|
|
7
|
-
constructor(store?: GatewayStateStore | undefined);
|
|
8
|
-
hydrate(): Promise<void>;
|
|
9
|
-
register(deviceToken?: string): string;
|
|
10
|
-
bind(token: string, sessionId: string): boolean;
|
|
11
|
-
validate(token: string): boolean;
|
|
12
|
-
owns(token: string, sessionId: string): boolean;
|
|
13
|
-
ownsFresh(token: string, sessionId: string): Promise<boolean>;
|
|
14
|
-
getSessionIds(token: string): Set<string>;
|
|
15
|
-
getTokenForSession(sessionId: string): string | undefined;
|
|
16
|
-
private cleanup;
|
|
17
|
-
private persist;
|
|
18
|
-
destroy(): void;
|
|
19
|
-
}
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from "node:crypto";
|
|
2
|
-
const CLEANUP_INTERVAL = 5 * 60_000;
|
|
3
|
-
const SESSION_TTL = 7 * 24 * 60 * 60_000; // 7 days — prune stale bindings
|
|
4
|
-
export class TokenManager {
|
|
5
|
-
store;
|
|
6
|
-
tokens = new Map();
|
|
7
|
-
sessionToToken = new Map();
|
|
8
|
-
cleanupTimer;
|
|
9
|
-
constructor(store) {
|
|
10
|
-
this.store = store;
|
|
11
|
-
this.cleanupTimer = setInterval(() => this.cleanup(), CLEANUP_INTERVAL);
|
|
12
|
-
}
|
|
13
|
-
async hydrate() {
|
|
14
|
-
if (!this.store)
|
|
15
|
-
return;
|
|
16
|
-
try {
|
|
17
|
-
const records = await this.store.loadTokens();
|
|
18
|
-
const now = Date.now();
|
|
19
|
-
for (const record of records) {
|
|
20
|
-
if (now - record.lastUsedAt > SESSION_TTL) {
|
|
21
|
-
void this.store.deleteToken(record.token).catch(() => { });
|
|
22
|
-
continue;
|
|
23
|
-
}
|
|
24
|
-
this.tokens.set(record.token, {
|
|
25
|
-
token: record.token,
|
|
26
|
-
sessionIds: new Set(record.sessionIds),
|
|
27
|
-
createdAt: record.createdAt,
|
|
28
|
-
lastUsedAt: record.lastUsedAt,
|
|
29
|
-
});
|
|
30
|
-
for (const sessionId of record.sessionIds) {
|
|
31
|
-
this.sessionToToken.set(sessionId, record.token);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
catch (err) {
|
|
36
|
-
process.stderr.write(`[gateway] token store hydrate failed, using memory only: ${err}\n`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
register(deviceToken) {
|
|
40
|
-
if (deviceToken && this.tokens.has(deviceToken)) {
|
|
41
|
-
const record = this.tokens.get(deviceToken);
|
|
42
|
-
record.lastUsedAt = Date.now();
|
|
43
|
-
this.persist(record);
|
|
44
|
-
return deviceToken;
|
|
45
|
-
}
|
|
46
|
-
const token = deviceToken || randomUUID();
|
|
47
|
-
this.tokens.set(token, {
|
|
48
|
-
token,
|
|
49
|
-
sessionIds: new Set(),
|
|
50
|
-
createdAt: Date.now(),
|
|
51
|
-
lastUsedAt: Date.now(),
|
|
52
|
-
});
|
|
53
|
-
this.persist(this.tokens.get(token));
|
|
54
|
-
return token;
|
|
55
|
-
}
|
|
56
|
-
bind(token, sessionId) {
|
|
57
|
-
const record = this.tokens.get(token);
|
|
58
|
-
if (!record)
|
|
59
|
-
return false;
|
|
60
|
-
record.sessionIds.add(sessionId);
|
|
61
|
-
record.lastUsedAt = Date.now();
|
|
62
|
-
this.sessionToToken.set(sessionId, token);
|
|
63
|
-
this.persist(record);
|
|
64
|
-
return true;
|
|
65
|
-
}
|
|
66
|
-
validate(token) {
|
|
67
|
-
const record = this.tokens.get(token);
|
|
68
|
-
if (!record)
|
|
69
|
-
return false;
|
|
70
|
-
record.lastUsedAt = Date.now();
|
|
71
|
-
this.persist(record);
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
owns(token, sessionId) {
|
|
75
|
-
const record = this.tokens.get(token);
|
|
76
|
-
if (!record)
|
|
77
|
-
return false;
|
|
78
|
-
record.lastUsedAt = Date.now();
|
|
79
|
-
this.persist(record);
|
|
80
|
-
return record.sessionIds.has(sessionId);
|
|
81
|
-
}
|
|
82
|
-
async ownsFresh(token, sessionId) {
|
|
83
|
-
if (this.owns(token, sessionId))
|
|
84
|
-
return true;
|
|
85
|
-
if (!this.store)
|
|
86
|
-
return false;
|
|
87
|
-
try {
|
|
88
|
-
const records = await this.store.loadTokens();
|
|
89
|
-
const now = Date.now();
|
|
90
|
-
for (const record of records) {
|
|
91
|
-
if (now - record.lastUsedAt > SESSION_TTL)
|
|
92
|
-
continue;
|
|
93
|
-
if (record.token !== token)
|
|
94
|
-
continue;
|
|
95
|
-
const next = {
|
|
96
|
-
token: record.token,
|
|
97
|
-
sessionIds: new Set(record.sessionIds),
|
|
98
|
-
createdAt: record.createdAt,
|
|
99
|
-
lastUsedAt: Date.now(),
|
|
100
|
-
};
|
|
101
|
-
this.tokens.set(record.token, next);
|
|
102
|
-
for (const sid of record.sessionIds) {
|
|
103
|
-
this.sessionToToken.set(sid, record.token);
|
|
104
|
-
}
|
|
105
|
-
this.persist(next);
|
|
106
|
-
return next.sessionIds.has(sessionId);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
catch (err) {
|
|
110
|
-
process.stderr.write(`[gateway] token store refresh failed: ${err}\n`);
|
|
111
|
-
}
|
|
112
|
-
return false;
|
|
113
|
-
}
|
|
114
|
-
getSessionIds(token) {
|
|
115
|
-
const record = this.tokens.get(token);
|
|
116
|
-
if (!record)
|
|
117
|
-
return new Set();
|
|
118
|
-
record.lastUsedAt = Date.now();
|
|
119
|
-
this.persist(record);
|
|
120
|
-
return record.sessionIds;
|
|
121
|
-
}
|
|
122
|
-
getTokenForSession(sessionId) {
|
|
123
|
-
return this.sessionToToken.get(sessionId);
|
|
124
|
-
}
|
|
125
|
-
cleanup() {
|
|
126
|
-
const now = Date.now();
|
|
127
|
-
for (const [token, record] of this.tokens) {
|
|
128
|
-
if (now - record.lastUsedAt > SESSION_TTL) {
|
|
129
|
-
for (const sid of record.sessionIds) {
|
|
130
|
-
this.sessionToToken.delete(sid);
|
|
131
|
-
}
|
|
132
|
-
this.tokens.delete(token);
|
|
133
|
-
void this.store?.deleteToken(token).catch(() => { });
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
persist(record) {
|
|
138
|
-
void this.store?.saveToken({
|
|
139
|
-
token: record.token,
|
|
140
|
-
sessionIds: [...record.sessionIds],
|
|
141
|
-
createdAt: record.createdAt,
|
|
142
|
-
lastUsedAt: record.lastUsedAt,
|
|
143
|
-
}).catch((err) => {
|
|
144
|
-
process.stderr.write(`[gateway] token store save failed: ${err}\n`);
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
destroy() {
|
|
148
|
-
clearInterval(this.cleanupTimer);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
//# sourceMappingURL=tokens.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
-
import type WebSocket from "ws";
|
|
3
|
-
import type { SessionManager } from "./sessions.js";
|
|
4
|
-
import type { TokenManager } from "./tokens.js";
|
|
5
|
-
export interface PendingTunnelRequest {
|
|
6
|
-
res: ServerResponse;
|
|
7
|
-
headersSent: boolean;
|
|
8
|
-
timeout: ReturnType<typeof setTimeout>;
|
|
9
|
-
tunnelCookie?: string;
|
|
10
|
-
sessionId: string;
|
|
11
|
-
port: number;
|
|
12
|
-
requestPath: string;
|
|
13
|
-
}
|
|
14
|
-
export interface PendingTunnelWs {
|
|
15
|
-
ws: WebSocket;
|
|
16
|
-
}
|
|
17
|
-
export declare function tokenFromTunnelCookie(req: IncomingMessage, sessionId: string, port: number): string | null;
|
|
18
|
-
/** Parse lsh_tunnel cookie: "sessionId:port:token" */
|
|
19
|
-
export declare function parseTunnelCookie(req: IncomingMessage): {
|
|
20
|
-
sessionId: string;
|
|
21
|
-
port: number;
|
|
22
|
-
token: string;
|
|
23
|
-
} | null;
|
|
24
|
-
export declare function parseTunnelPath(pathname: string): {
|
|
25
|
-
sessionId: string;
|
|
26
|
-
port: number;
|
|
27
|
-
path: string;
|
|
28
|
-
} | null;
|
|
29
|
-
export declare function hasTunnelReferer(req: IncomingMessage): boolean;
|
|
30
|
-
export declare function shouldUseTunnelCookieFallback(req: IncomingMessage, pathname: string, isReservedPath?: (pathname: string) => boolean): boolean;
|
|
31
|
-
export declare function mergeTunnelSetCookie(headers: Record<string, string | string[]>, tunnelCookie?: string): Record<string, string | string[]>;
|
|
32
|
-
export declare function handleTunnelRequest(req: IncomingMessage, res: ServerResponse, sessions: SessionManager, tokens: TokenManager, parsed: {
|
|
33
|
-
sessionId: string;
|
|
34
|
-
port: number;
|
|
35
|
-
path: string;
|
|
36
|
-
}, url: URL, preAuthToken?: string): Promise<void>;
|
|
37
|
-
export declare function handleTunnelResponse(payload: {
|
|
38
|
-
requestId: string;
|
|
39
|
-
statusCode: number;
|
|
40
|
-
headers: Record<string, string>;
|
|
41
|
-
body: string;
|
|
42
|
-
isFinal: boolean;
|
|
43
|
-
}): void;
|
|
44
|
-
export declare function handleTunnelWsData(payload: {
|
|
45
|
-
requestId: string;
|
|
46
|
-
data: string;
|
|
47
|
-
isBinary: boolean;
|
|
48
|
-
}): void;
|
|
49
|
-
export declare function handleTunnelWsClose(payload: {
|
|
50
|
-
requestId: string;
|
|
51
|
-
code?: number;
|
|
52
|
-
reason?: string;
|
|
53
|
-
}): void;
|
|
54
|
-
export declare function registerTunnelWs(requestId: string, ws: WebSocket): void;
|
|
55
|
-
export declare function removeTunnelWs(requestId: string): void;
|
|
56
|
-
export declare function cleanupSessionTunnels(sessionId: string): void;
|
|
57
|
-
export declare function handleTunnelWsUpgrade(ws: WebSocket, parsed: {
|
|
58
|
-
sessionId: string;
|
|
59
|
-
port: number;
|
|
60
|
-
path: string;
|
|
61
|
-
}, url: URL, sessions: SessionManager, tokens: TokenManager, preAuthToken?: string): Promise<void>;
|