@tapflowio/relay 0.1.0-alpha.4 → 0.1.0-alpha.6
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/lib/config.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ declare const configSchema: z.ZodObject<{
|
|
|
3
3
|
server: z.ZodObject<{
|
|
4
4
|
port: z.ZodNumber;
|
|
5
5
|
dataDir: z.ZodString;
|
|
6
|
-
jwtSecret: z.ZodString;
|
|
7
6
|
}, z.core.$strip>;
|
|
8
7
|
smtp: z.ZodObject<{
|
|
9
8
|
host: z.ZodString;
|
|
@@ -19,7 +18,6 @@ export declare const config: {
|
|
|
19
18
|
server: {
|
|
20
19
|
port: number;
|
|
21
20
|
dataDir: string;
|
|
22
|
-
jwtSecret: string;
|
|
23
21
|
};
|
|
24
22
|
smtp: {
|
|
25
23
|
host: string;
|
|
@@ -30,5 +28,6 @@ export declare const config: {
|
|
|
30
28
|
from: string;
|
|
31
29
|
};
|
|
32
30
|
};
|
|
31
|
+
export declare const jwtSecret: string;
|
|
33
32
|
export {};
|
|
34
33
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,QAAA,MAAM,YAAY;;;;;;;;;;;;;iBAahB,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAsFxD,eAAO,MAAM,MAAM;;;;;;;;;;;;;CAAS,CAAA;AAC5B,eAAO,MAAM,SAAS,QAAkB,CAAA"}
|
package/dist/lib/config.js
CHANGED
|
@@ -3,11 +3,11 @@ import path from 'path';
|
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { createLogger } from '@tapflowio/agent-core';
|
|
5
5
|
const logger = createLogger('relay:config');
|
|
6
|
+
const DEV_DEFAULT_SECRET = 'tapflow-dev-secret-change-in-production';
|
|
6
7
|
const configSchema = z.object({
|
|
7
8
|
server: z.object({
|
|
8
9
|
port: z.number().int().min(1).max(65535),
|
|
9
10
|
dataDir: z.string().min(1),
|
|
10
|
-
jwtSecret: z.string().min(32, 'jwtSecret must be at least 32 characters'),
|
|
11
11
|
}),
|
|
12
12
|
smtp: z.object({
|
|
13
13
|
host: z.string(),
|
|
@@ -22,7 +22,6 @@ const DEFAULTS = {
|
|
|
22
22
|
server: {
|
|
23
23
|
port: 4000,
|
|
24
24
|
dataDir: '.tapflow',
|
|
25
|
-
jwtSecret: 'tapflow-dev-secret-change-in-production',
|
|
26
25
|
},
|
|
27
26
|
smtp: {
|
|
28
27
|
host: '',
|
|
@@ -47,11 +46,13 @@ function load() {
|
|
|
47
46
|
logger.warn('Failed to parse tapflow.config.json — using defaults');
|
|
48
47
|
}
|
|
49
48
|
}
|
|
49
|
+
if (file.server != null && 'jwtSecret' in file.server) {
|
|
50
|
+
logger.warn('server.jwtSecret in tapflow.config.json is deprecated — use JWT_SECRET env var instead');
|
|
51
|
+
}
|
|
50
52
|
const cfg = {
|
|
51
53
|
server: {
|
|
52
54
|
port: file.server?.port ?? DEFAULTS.server.port,
|
|
53
55
|
dataDir: resolveDataDir(file.server?.dataDir ?? DEFAULTS.server.dataDir),
|
|
54
|
-
jwtSecret: file.server?.jwtSecret ?? DEFAULTS.server.jwtSecret,
|
|
55
56
|
},
|
|
56
57
|
smtp: {
|
|
57
58
|
host: file.smtp?.host ?? DEFAULTS.smtp.host,
|
|
@@ -62,13 +63,10 @@ function load() {
|
|
|
62
63
|
from: file.smtp?.from ?? DEFAULTS.smtp.from,
|
|
63
64
|
},
|
|
64
65
|
};
|
|
65
|
-
// env vars override config file (useful for Docker / CI)
|
|
66
66
|
if (process.env.TAPFLOW_PORT)
|
|
67
67
|
cfg.server.port = Number(process.env.TAPFLOW_PORT);
|
|
68
68
|
if (process.env.TAPFLOW_DATA_DIR)
|
|
69
69
|
cfg.server.dataDir = resolveDataDir(process.env.TAPFLOW_DATA_DIR);
|
|
70
|
-
if (process.env.JWT_SECRET)
|
|
71
|
-
cfg.server.jwtSecret = process.env.JWT_SECRET;
|
|
72
70
|
if (process.env.SMTP_HOST)
|
|
73
71
|
cfg.smtp.host = process.env.SMTP_HOST;
|
|
74
72
|
if (process.env.SMTP_PORT)
|
|
@@ -88,10 +86,19 @@ function load() {
|
|
|
88
86
|
}
|
|
89
87
|
process.exit(1);
|
|
90
88
|
}
|
|
91
|
-
if (cfg.server.jwtSecret === DEFAULTS.server.jwtSecret) {
|
|
92
|
-
logger.warn('JWT_SECRET is using the dev default — set a strong secret in production');
|
|
93
|
-
}
|
|
94
89
|
return result.data;
|
|
95
90
|
}
|
|
91
|
+
function loadJwtSecret() {
|
|
92
|
+
if (process.env.JWT_SECRET !== undefined) {
|
|
93
|
+
if (process.env.JWT_SECRET.length < 32) {
|
|
94
|
+
logger.error('config error: JWT_SECRET — must be at least 32 characters');
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
return process.env.JWT_SECRET;
|
|
98
|
+
}
|
|
99
|
+
logger.warn('JWT_SECRET is using the dev default — set a strong secret in production');
|
|
100
|
+
return DEV_DEFAULT_SECRET;
|
|
101
|
+
}
|
|
96
102
|
export const config = load();
|
|
103
|
+
export const jwtSecret = loadJwtSecret();
|
|
97
104
|
//# sourceMappingURL=config.js.map
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEpD,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC,CAAA;AAE3C,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/middleware/auth.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import crypto from 'crypto';
|
|
2
2
|
import jwt from 'jsonwebtoken';
|
|
3
3
|
import { getDb } from '../db.js';
|
|
4
|
-
import {
|
|
4
|
+
import { jwtSecret } from '../lib/config.js';
|
|
5
5
|
const JWT_EXPIRES = '7d';
|
|
6
6
|
export function signJwt(payload) {
|
|
7
|
-
return jwt.sign(payload,
|
|
7
|
+
return jwt.sign(payload, jwtSecret, { expiresIn: JWT_EXPIRES });
|
|
8
8
|
}
|
|
9
9
|
export function verifyJwt(token) {
|
|
10
10
|
try {
|
|
11
|
-
return jwt.verify(token,
|
|
11
|
+
return jwt.verify(token, jwtSecret);
|
|
12
12
|
}
|
|
13
13
|
catch {
|
|
14
14
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,GAAG,MAAM,cAAc,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tapflowio/relay",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.6",
|
|
4
4
|
"description": "WebSocket relay server for tapflow — NAT traversal, session routing, JWT auth, bundled dashboard",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"tapflow",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"nodemailer": "^8.0.7",
|
|
51
51
|
"ws": "^8.0.0",
|
|
52
52
|
"zod": "^4.4.3",
|
|
53
|
-
"@tapflowio/agent-core": "0.1.0-alpha.
|
|
53
|
+
"@tapflowio/agent-core": "0.1.0-alpha.6"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@types/better-sqlite3": "^7.6.13",
|