@tapflowio/relay 0.22.0 → 0.24.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/dist/RelayServer.d.ts +18 -0
- package/dist/RelayServer.d.ts.map +1 -1
- package/dist/RelayServer.js +128 -20
- package/dist/RelayServer.js.map +1 -1
- package/dist/SessionManager.d.ts +4 -1
- package/dist/SessionManager.d.ts.map +1 -1
- package/dist/SessionManager.js +7 -0
- package/dist/SessionManager.js.map +1 -1
- package/dist/api/auth.d.ts +1 -1
- package/dist/api/auth.d.ts.map +1 -1
- package/dist/api/auth.js +13 -4
- package/dist/api/auth.js.map +1 -1
- package/dist/api/builds.d.ts +1 -1
- package/dist/api/builds.d.ts.map +1 -1
- package/dist/api/builds.js +8 -2
- package/dist/api/builds.js.map +1 -1
- package/dist/api/passwordReset.d.ts +6 -2
- package/dist/api/passwordReset.d.ts.map +1 -1
- package/dist/api/passwordReset.js +21 -6
- package/dist/api/passwordReset.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/buildFiles.d.ts +23 -0
- package/dist/lib/buildFiles.d.ts.map +1 -0
- package/dist/lib/buildFiles.js +39 -0
- package/dist/lib/buildFiles.js.map +1 -0
- package/dist/lib/clientAddress.d.ts +15 -0
- package/dist/lib/clientAddress.d.ts.map +1 -1
- package/dist/lib/clientAddress.js +21 -0
- package/dist/lib/clientAddress.js.map +1 -1
- package/dist/lib/config.d.ts +28 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +87 -17
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/dataDir.d.ts +48 -1
- package/dist/lib/dataDir.d.ts.map +1 -1
- package/dist/lib/dataDir.js +108 -12
- package/dist/lib/dataDir.js.map +1 -1
- package/dist/lib/proxyConfig.d.ts +10 -0
- package/dist/lib/proxyConfig.d.ts.map +1 -1
- package/dist/lib/proxyConfig.js +14 -0
- package/dist/lib/proxyConfig.js.map +1 -1
- package/dist/middleware/auth.js +3 -3
- package/dist/middleware/auth.js.map +1 -1
- package/dist/server.js +5 -2
- package/dist/server.js.map +1 -1
- package/package.json +5 -5
- package/public/assets/AppCenter-BHz6vh5p.js +26 -0
- package/public/assets/AppCenter-BHz6vh5p.js.br +0 -0
- package/public/assets/AppCenter-BHz6vh5p.js.gz +0 -0
- package/public/assets/Default-bCqU0Qz9.js +1 -0
- package/public/assets/Default-bCqU0Qz9.js.br +0 -0
- package/public/assets/Default-bCqU0Qz9.js.gz +0 -0
- package/public/assets/Invite-EVMTsuNz.js +1 -0
- package/public/assets/Invite-EVMTsuNz.js.br +0 -0
- package/public/assets/Invite-EVMTsuNz.js.gz +0 -0
- package/public/assets/MacResources-fCn40Tf5.js +1 -0
- package/public/assets/MacResources-fCn40Tf5.js.br +0 -0
- package/public/assets/MacResources-fCn40Tf5.js.gz +0 -0
- package/public/assets/NotFound-wHOnT2Fl.js +1 -0
- package/public/assets/NotFound-wHOnT2Fl.js.br +0 -0
- package/public/assets/NotFound-wHOnT2Fl.js.gz +0 -0
- package/public/assets/QASession-CL-eyFxG.js +150 -0
- package/public/assets/QASession-CL-eyFxG.js.br +0 -0
- package/public/assets/QASession-CL-eyFxG.js.gz +0 -0
- package/public/assets/ResetPassword-D-SFg4ap.js +1 -0
- package/public/assets/ResetPassword-D-SFg4ap.js.br +0 -0
- package/public/assets/ResetPassword-D-SFg4ap.js.gz +0 -0
- package/public/assets/Setup-ULjvIfAi.js +1 -0
- package/public/assets/Setup-ULjvIfAi.js.br +0 -0
- package/public/assets/Setup-ULjvIfAi.js.gz +0 -0
- package/public/assets/Team-DH91GD4w.js +6 -0
- package/public/assets/Team-DH91GD4w.js.br +0 -0
- package/public/assets/Team-DH91GD4w.js.gz +0 -0
- package/public/assets/Tokens-DImLpOVZ.js +1 -0
- package/public/assets/Tokens-DImLpOVZ.js.br +0 -0
- package/public/assets/Tokens-DImLpOVZ.js.gz +0 -0
- package/public/assets/alert-dialog-CwcUyDZQ.js +1 -0
- package/public/assets/alert-dialog-CwcUyDZQ.js.br +0 -0
- package/public/assets/alert-dialog-CwcUyDZQ.js.gz +0 -0
- package/public/assets/badge-B4QAWrzA.js +1 -0
- package/public/assets/badge-B4QAWrzA.js.br +0 -0
- package/public/assets/badge-B4QAWrzA.js.gz +0 -0
- package/public/assets/build-format-CtmRXihN.js +11 -0
- package/public/assets/build-format-CtmRXihN.js.br +0 -0
- package/public/assets/build-format-CtmRXihN.js.gz +0 -0
- package/public/assets/dialog-BAFN_ONP.js +11 -0
- package/public/assets/dialog-BAFN_ONP.js.br +0 -0
- package/public/assets/dialog-BAFN_ONP.js.gz +0 -0
- package/public/assets/index-COOWQXpW.js +218 -0
- package/public/assets/index-COOWQXpW.js.br +0 -0
- package/public/assets/index-COOWQXpW.js.gz +0 -0
- package/public/assets/index-ozCdBYxk.css +1 -0
- package/public/assets/index-ozCdBYxk.css.br +0 -0
- package/public/assets/index-ozCdBYxk.css.gz +0 -0
- package/public/assets/list-view-Rrqp8TkG.js +1 -0
- package/public/assets/list-view-Rrqp8TkG.js.br +0 -0
- package/public/assets/list-view-Rrqp8TkG.js.gz +0 -0
- package/public/assets/pencil-CAHyK7Qf.js +6 -0
- package/public/assets/pencil-CAHyK7Qf.js.br +0 -0
- package/public/assets/pencil-CAHyK7Qf.js.gz +0 -0
- package/public/assets/resource-health-BRpSwarg.js +1 -0
- package/public/assets/resource-health-BRpSwarg.js.br +0 -0
- package/public/assets/resource-health-BRpSwarg.js.gz +0 -0
- package/public/assets/trash-CkO-5TRA.js +11 -0
- package/public/assets/trash-CkO-5TRA.js.br +0 -0
- package/public/assets/trash-CkO-5TRA.js.gz +0 -0
- package/public/assets/useFocusAfterSwap-BY3N9f9v.js +1 -0
- package/public/assets/useFocusAfterSwap-BY3N9f9v.js.br +0 -0
- package/public/assets/useFocusAfterSwap-BY3N9f9v.js.gz +0 -0
- package/public/assets/{vendor-charts-8kVeHLwY.js → vendor-charts-BykzUV2D.js} +1 -1
- package/public/assets/vendor-charts-BykzUV2D.js.br +0 -0
- package/public/assets/vendor-charts-BykzUV2D.js.gz +0 -0
- package/public/assets/vendor-react-BlPSzrEe.js +57 -0
- package/public/assets/vendor-react-BlPSzrEe.js.br +0 -0
- package/public/assets/vendor-react-BlPSzrEe.js.gz +0 -0
- package/public/assets/{vendor-router-BFibuab1.js → vendor-router-B_lVHrKl.js} +3 -3
- package/public/assets/vendor-router-B_lVHrKl.js.br +0 -0
- package/public/assets/vendor-router-B_lVHrKl.js.gz +0 -0
- package/public/index.html +4 -4
- package/public/index.html.br +0 -0
- package/public/index.html.gz +0 -0
- package/public/assets/AppCenter-gbsJscjW.js +0 -21
- package/public/assets/AppCenter-gbsJscjW.js.br +0 -0
- package/public/assets/AppCenter-gbsJscjW.js.gz +0 -0
- package/public/assets/Default-2rFTkbo9.js +0 -1
- package/public/assets/Default-2rFTkbo9.js.br +0 -0
- package/public/assets/Default-2rFTkbo9.js.gz +0 -0
- package/public/assets/Invite-aN4DXJyM.js +0 -1
- package/public/assets/Invite-aN4DXJyM.js.br +0 -0
- package/public/assets/Invite-aN4DXJyM.js.gz +0 -0
- package/public/assets/MacResources-D3IlesXU.js +0 -3
- package/public/assets/MacResources-D3IlesXU.js.br +0 -0
- package/public/assets/MacResources-D3IlesXU.js.gz +0 -0
- package/public/assets/NotFound-BoDDivK5.js +0 -1
- package/public/assets/NotFound-BoDDivK5.js.br +0 -0
- package/public/assets/NotFound-BoDDivK5.js.gz +0 -0
- package/public/assets/QASession-U29t9j0E.js +0 -140
- package/public/assets/QASession-U29t9j0E.js.br +0 -0
- package/public/assets/QASession-U29t9j0E.js.gz +0 -0
- package/public/assets/ResetPassword-DPc5kwQU.js +0 -1
- package/public/assets/ResetPassword-DPc5kwQU.js.br +0 -0
- package/public/assets/ResetPassword-DPc5kwQU.js.gz +0 -0
- package/public/assets/Setup-CwPx_e_O.js +0 -1
- package/public/assets/Setup-CwPx_e_O.js.br +0 -0
- package/public/assets/Setup-CwPx_e_O.js.gz +0 -0
- package/public/assets/Team-DD9li-7M.js +0 -6
- package/public/assets/Team-DD9li-7M.js.br +0 -0
- package/public/assets/Team-DD9li-7M.js.gz +0 -0
- package/public/assets/Tokens-DdMMke73.js +0 -1
- package/public/assets/Tokens-DdMMke73.js.br +0 -0
- package/public/assets/Tokens-DdMMke73.js.gz +0 -0
- package/public/assets/alert-dialog-DADd1jHN.js +0 -1
- package/public/assets/alert-dialog-DADd1jHN.js.br +0 -0
- package/public/assets/alert-dialog-DADd1jHN.js.gz +0 -0
- package/public/assets/badge-CMf8d5RJ.js +0 -1
- package/public/assets/badge-CMf8d5RJ.js.br +0 -0
- package/public/assets/badge-CMf8d5RJ.js.gz +0 -0
- package/public/assets/build-format-lp_8kSvq.js +0 -11
- package/public/assets/build-format-lp_8kSvq.js.br +0 -0
- package/public/assets/build-format-lp_8kSvq.js.gz +0 -0
- package/public/assets/dialog-pS8vHXXv.js +0 -11
- package/public/assets/dialog-pS8vHXXv.js.br +0 -0
- package/public/assets/dialog-pS8vHXXv.js.gz +0 -0
- package/public/assets/index-Bxs7CdEi.css +0 -1
- package/public/assets/index-Bxs7CdEi.css.br +0 -0
- package/public/assets/index-Bxs7CdEi.css.gz +0 -0
- package/public/assets/index-Cajf0T-5.js +0 -198
- package/public/assets/index-Cajf0T-5.js.br +0 -0
- package/public/assets/index-Cajf0T-5.js.gz +0 -0
- package/public/assets/pencil-LD1ga-Kk.js +0 -6
- package/public/assets/pencil-LD1ga-Kk.js.br +0 -0
- package/public/assets/pencil-LD1ga-Kk.js.gz +0 -0
- package/public/assets/resource-health-BScurILF.js +0 -1
- package/public/assets/resource-health-BScurILF.js.br +0 -0
- package/public/assets/resource-health-BScurILF.js.gz +0 -0
- package/public/assets/table-CL9AvoTp.js +0 -1
- package/public/assets/table-CL9AvoTp.js.br +0 -0
- package/public/assets/table-CL9AvoTp.js.gz +0 -0
- package/public/assets/trash-mvVp4nwq.js +0 -11
- package/public/assets/trash-mvVp4nwq.js.br +0 -0
- package/public/assets/trash-mvVp4nwq.js.gz +0 -0
- package/public/assets/vendor-charts-8kVeHLwY.js.br +0 -0
- package/public/assets/vendor-charts-8kVeHLwY.js.gz +0 -0
- package/public/assets/vendor-react-AJpf4YZ0.js +0 -49
- package/public/assets/vendor-react-AJpf4YZ0.js.br +0 -0
- package/public/assets/vendor-react-AJpf4YZ0.js.gz +0 -0
- package/public/assets/vendor-router-BFibuab1.js.br +0 -0
- package/public/assets/vendor-router-BFibuab1.js.gz +0 -0
package/dist/lib/config.js
CHANGED
|
@@ -6,7 +6,7 @@ import { createLogger } from '@tapflowio/agent-core';
|
|
|
6
6
|
import { parseTrustedProxies } from './clientAddress.js';
|
|
7
7
|
import { dnsProviders } from './cert/dnsRegistry.js';
|
|
8
8
|
import { loadDataDirEnv } from './loadEnvFile.js';
|
|
9
|
-
import { resolveDefaultDataDir, LEGACY_DATA_DIR, UNIFIED_DATA_DIR } from './dataDir.js';
|
|
9
|
+
import { resolveInstallDir, resolveDefaultDataDir, LEGACY_DATA_DIR, UNIFIED_DATA_DIR } from './dataDir.js';
|
|
10
10
|
import { validateWebhookUrl } from './webhookUrl.js';
|
|
11
11
|
const logger = createLogger('relay:config');
|
|
12
12
|
const tunnelSshSchema = z.object({
|
|
@@ -51,6 +51,8 @@ const configSchema = z.object({
|
|
|
51
51
|
dataDir: z.string().min(1),
|
|
52
52
|
wsBackpressureBytes: z.number().int().min(1),
|
|
53
53
|
trustedProxies: z.array(z.string()),
|
|
54
|
+
// The loopback-only listener tunnel clients are pointed at (see RelayServer). null = not named.
|
|
55
|
+
tunnelPort: z.number().int().min(1).max(65535).nullable(),
|
|
54
56
|
}),
|
|
55
57
|
relay: z.object({
|
|
56
58
|
url: z.string().nullable(),
|
|
@@ -72,6 +74,11 @@ const configSchema = z.object({
|
|
|
72
74
|
secret: z.string(),
|
|
73
75
|
enabled: z.boolean(),
|
|
74
76
|
})),
|
|
77
|
+
// Read by this machine's agents, not by the relay: in a multi-Mac install each Mac's file decides
|
|
78
|
+
// for its own agents (#851).
|
|
79
|
+
agent: z.object({
|
|
80
|
+
lean: z.boolean(),
|
|
81
|
+
}),
|
|
75
82
|
});
|
|
76
83
|
const DEFAULTS = {
|
|
77
84
|
local: {
|
|
@@ -79,6 +86,7 @@ const DEFAULTS = {
|
|
|
79
86
|
dataDir: '.tapflow/data',
|
|
80
87
|
wsBackpressureBytes: 1_048_576,
|
|
81
88
|
trustedProxies: [],
|
|
89
|
+
tunnelPort: null,
|
|
82
90
|
},
|
|
83
91
|
relay: {
|
|
84
92
|
url: null,
|
|
@@ -94,10 +102,20 @@ const DEFAULTS = {
|
|
|
94
102
|
from: 'tapflow <noreply@tapflow.local>',
|
|
95
103
|
},
|
|
96
104
|
webhooks: [],
|
|
105
|
+
agent: {
|
|
106
|
+
lean: false,
|
|
107
|
+
},
|
|
97
108
|
};
|
|
98
|
-
|
|
109
|
+
// TAPFLOW_DATA_DIR is a shell value, so a relative one means what it does in a shell: from the cwd.
|
|
110
|
+
function resolveFromCwd(raw) {
|
|
99
111
|
return path.isAbsolute(raw) ? raw : path.join(process.cwd(), raw);
|
|
100
112
|
}
|
|
113
|
+
// A path inside tapflow.config.json is relative to that file, the way tsconfig and litestream read
|
|
114
|
+
// theirs. It keeps `"dataDir": ".tapflow/data"` — what older `init` wrote and what
|
|
115
|
+
// `tapflow migrate data-dir` writes — pointing at the same directory it always did.
|
|
116
|
+
function resolveFromConfig(raw, configPath) {
|
|
117
|
+
return path.isAbsolute(raw) ? raw : path.join(path.dirname(configPath), raw);
|
|
118
|
+
}
|
|
101
119
|
const rawWebhookEntrySchema = z.array(z.object({
|
|
102
120
|
url: z.string().optional(),
|
|
103
121
|
secretEnv: z.string().optional(),
|
|
@@ -137,10 +155,30 @@ export function resolveWebhooksConfig(raw, env) {
|
|
|
137
155
|
}
|
|
138
156
|
// Populated by load(): path of the dataDir/.env that was loaded, or null. CLI/server use it for a "loaded credentials" log.
|
|
139
157
|
export let loadedEnvPath = null;
|
|
158
|
+
// Which install this process is running, decided once. `init` re-resolves at call time instead of
|
|
159
|
+
// reading this, because it can be pointed at another directory in the same process (its tests do).
|
|
160
|
+
export const install = resolveInstallDir();
|
|
161
|
+
// Whether the install's config file exists — the CLI's "not configured yet" hint reads this rather
|
|
162
|
+
// than looking in the cwd.
|
|
163
|
+
export let configFound = false;
|
|
164
|
+
// Where local.dataDir came from, so `init` can pin the layout it found into a config it writes.
|
|
165
|
+
export let dataDirSource = 'default';
|
|
166
|
+
/**
|
|
167
|
+
* Refuse a `TAPFLOW_HOME` that names a directory nobody created. Commands that run or reach the
|
|
168
|
+
* relay call this; `init` creates the directory instead. Deciding at import would take `setup`,
|
|
169
|
+
* `doctor` and `init` down with it, because the CLI imports every command's module at startup.
|
|
170
|
+
*/
|
|
171
|
+
export function assertInstallDir() {
|
|
172
|
+
if (!install.missing)
|
|
173
|
+
return;
|
|
174
|
+
logger.error(`TAPFLOW_HOME is ${install.dir}, which does not exist. Create it, fix the variable, or run \`tapflow init\` to set it up.`);
|
|
175
|
+
process.exit(1);
|
|
176
|
+
}
|
|
140
177
|
function load() {
|
|
141
178
|
let file = {};
|
|
142
|
-
const configPath =
|
|
143
|
-
|
|
179
|
+
const configPath = install.configPath;
|
|
180
|
+
configFound = fs.existsSync(configPath);
|
|
181
|
+
if (configFound) {
|
|
144
182
|
try {
|
|
145
183
|
file = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
146
184
|
}
|
|
@@ -158,18 +196,24 @@ function load() {
|
|
|
158
196
|
// pre-existing legacy .tapflow-data/ so an un-migrated install keeps reading its data.
|
|
159
197
|
let dataDir;
|
|
160
198
|
if (process.env.TAPFLOW_DATA_DIR) {
|
|
161
|
-
dataDir =
|
|
199
|
+
dataDir = resolveFromCwd(process.env.TAPFLOW_DATA_DIR);
|
|
200
|
+
dataDirSource = 'env';
|
|
162
201
|
}
|
|
163
202
|
else if (file.local?.dataDir != null) {
|
|
164
|
-
dataDir =
|
|
203
|
+
dataDir = resolveFromConfig(file.local.dataDir, configPath);
|
|
204
|
+
dataDirSource = 'config';
|
|
165
205
|
}
|
|
166
206
|
else {
|
|
167
|
-
const resolved = resolveDefaultDataDir(
|
|
207
|
+
const resolved = resolveDefaultDataDir(install.dir, install.defaultDataLayout);
|
|
168
208
|
dataDir = resolved.dataDir;
|
|
209
|
+
dataDirSource = resolved.existing ? 'existing' : 'default';
|
|
169
210
|
if (resolved.usingLegacy) {
|
|
170
211
|
logger.warn(`Reading data from the legacy ${LEGACY_DATA_DIR}/ — run \`tapflow migrate data-dir\` to move it into ${UNIFIED_DATA_DIR}/.`);
|
|
171
212
|
}
|
|
172
213
|
}
|
|
214
|
+
for (const hidden of install.shadowed) {
|
|
215
|
+
logger.warn(`Ignoring ${hidden}: this machine's install is ${install.dir}. Set TAPFLOW_HOME to use the other one.`);
|
|
216
|
+
}
|
|
173
217
|
loadedEnvPath = loadDataDirEnv(dataDir);
|
|
174
218
|
const cfg = {
|
|
175
219
|
local: {
|
|
@@ -177,6 +221,7 @@ function load() {
|
|
|
177
221
|
dataDir,
|
|
178
222
|
wsBackpressureBytes: DEFAULTS.local.wsBackpressureBytes,
|
|
179
223
|
trustedProxies: parseTrustedProxies(process.env.TAPFLOW_TRUSTED_PROXIES),
|
|
224
|
+
tunnelPort: file.local?.tunnelPort ?? DEFAULTS.local.tunnelPort,
|
|
180
225
|
},
|
|
181
226
|
relay: {
|
|
182
227
|
url: file.relay?.url || null,
|
|
@@ -203,7 +248,11 @@ function load() {
|
|
|
203
248
|
return null;
|
|
204
249
|
const t = file.tls;
|
|
205
250
|
if (t.mode === 'import-cert') {
|
|
206
|
-
return {
|
|
251
|
+
return {
|
|
252
|
+
mode: 'import-cert',
|
|
253
|
+
certPath: t.certPath ? resolveFromConfig(t.certPath, configPath) : '',
|
|
254
|
+
keyPath: t.keyPath ? resolveFromConfig(t.keyPath, configPath) : '',
|
|
255
|
+
};
|
|
207
256
|
}
|
|
208
257
|
// Pass mode/provider through (no silent default) so zod rejects a missing/misspelled provider.
|
|
209
258
|
return {
|
|
@@ -223,9 +272,14 @@ function load() {
|
|
|
223
272
|
from: file.smtp?.from ?? DEFAULTS.smtp.from,
|
|
224
273
|
},
|
|
225
274
|
webhooks: resolveWebhooksConfig(file.webhooks, process.env),
|
|
275
|
+
agent: {
|
|
276
|
+
lean: file.agent?.lean ?? DEFAULTS.agent.lean,
|
|
277
|
+
},
|
|
226
278
|
};
|
|
227
279
|
if (process.env.TAPFLOW_PORT)
|
|
228
280
|
cfg.local.port = Number(process.env.TAPFLOW_PORT);
|
|
281
|
+
if (process.env.TAPFLOW_TUNNEL_PORT)
|
|
282
|
+
cfg.local.tunnelPort = Number(process.env.TAPFLOW_TUNNEL_PORT);
|
|
229
283
|
// TAPFLOW_DATA_DIR is already applied above (before the .env load) — it can't be set from .env.
|
|
230
284
|
if (process.env.TAPFLOW_WS_BACKPRESSURE_BYTES)
|
|
231
285
|
cfg.local.wsBackpressureBytes = Number(process.env.TAPFLOW_WS_BACKPRESSURE_BYTES);
|
|
@@ -243,6 +297,11 @@ function load() {
|
|
|
243
297
|
cfg.smtp.pass = process.env.SMTP_PASS;
|
|
244
298
|
if (process.env.SMTP_FROM)
|
|
245
299
|
cfg.smtp.from = process.env.SMTP_FROM;
|
|
300
|
+
const lean = process.env.TAPFLOW_LEAN;
|
|
301
|
+
if (lean === 'on' || lean === 'off')
|
|
302
|
+
cfg.agent.lean = lean === 'on';
|
|
303
|
+
else if (lean)
|
|
304
|
+
logger.warn(`TAPFLOW_LEAN=${lean} is not on or off — using agent.lean from the config file`);
|
|
246
305
|
// auto-derive from address when user is set but from was never explicitly configured
|
|
247
306
|
if (cfg.smtp.user && file.smtp?.from === undefined && process.env.SMTP_FROM === undefined) {
|
|
248
307
|
cfg.smtp.from = `tapflow <${cfg.smtp.user}>`;
|
|
@@ -280,16 +339,27 @@ export function loadOrCreatePersistedSecret(dataDir) {
|
|
|
280
339
|
logger.info(`Generated a per-install JWT secret at ${secretPath} (set JWT_SECRET to override)`);
|
|
281
340
|
return secret;
|
|
282
341
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
}
|
|
289
|
-
return process.env.JWT_SECRET;
|
|
342
|
+
// Checked at import, where a bad value belongs: it reads the environment and writes nothing.
|
|
343
|
+
function checkJwtSecretEnv() {
|
|
344
|
+
if (process.env.JWT_SECRET !== undefined && process.env.JWT_SECRET.length < 32) {
|
|
345
|
+
logger.error('config error: JWT_SECRET — must be at least 32 characters');
|
|
346
|
+
process.exit(1);
|
|
290
347
|
}
|
|
291
|
-
|
|
348
|
+
}
|
|
349
|
+
let cachedJwtSecret = null;
|
|
350
|
+
/**
|
|
351
|
+
* The secret this install signs with, created on first use rather than at import.
|
|
352
|
+
*
|
|
353
|
+
* Creating it at import meant **every** CLI command wrote one wherever it ran — `tapflow --version`
|
|
354
|
+
* in a repo left a `.tapflow/data/jwt-secret` behind, an agent-only Mac and a CI runner got one for
|
|
355
|
+
* a relay they never start. `RelayServer.start()` calls this on boot, so the file and its log still
|
|
356
|
+
* appear when a relay comes up, and a write failure is still a boot failure rather than a 500 at
|
|
357
|
+
* the first sign-in.
|
|
358
|
+
*/
|
|
359
|
+
export function getJwtSecret() {
|
|
360
|
+
cachedJwtSecret ??= process.env.JWT_SECRET ?? loadOrCreatePersistedSecret(config.local.dataDir);
|
|
361
|
+
return cachedJwtSecret;
|
|
292
362
|
}
|
|
293
363
|
export const config = load();
|
|
294
|
-
|
|
364
|
+
checkJwtSecretEnv();
|
|
295
365
|
//# 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":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/dataDir.d.ts
CHANGED
|
@@ -1,8 +1,55 @@
|
|
|
1
1
|
export declare const LEGACY_DATA_DIR = ".tapflow-data";
|
|
2
2
|
export declare const UNIFIED_DATA_DIR: string;
|
|
3
|
+
export declare const OWN_DATA_DIR = "data";
|
|
4
|
+
export declare const CONFIG_FILE = "tapflow.config.json";
|
|
5
|
+
export declare const DEFAULT_INSTALL_DIR_NAME = ".tapflow";
|
|
3
6
|
export interface DefaultDataDir {
|
|
4
7
|
dataDir: string;
|
|
5
8
|
usingLegacy: boolean;
|
|
9
|
+
existing: boolean;
|
|
6
10
|
}
|
|
7
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Whether `dir` holds an install's data. An empty dir counts — the Docker image and the systemd
|
|
13
|
+
* docs create one before the relay first starts. A dir whose only entry is `jwt-secret` does not:
|
|
14
|
+
* every CLI command up to this change wrote one wherever it ran, because the relay config created
|
|
15
|
+
* it at import, and the relay itself always creates `tapflow.db` on boot. So a dir holding the
|
|
16
|
+
* secret alone is one no relay ever ran in, and treating it as an install made an app repo that
|
|
17
|
+
* had once run `tapflow flow run` look like one.
|
|
18
|
+
*/
|
|
19
|
+
export declare function holdsInstallData(dir: string): boolean;
|
|
20
|
+
export declare function resolveDefaultDataDir(installDir: string, fallback?: string): DefaultDataDir;
|
|
21
|
+
export type InstallReason = 'TAPFLOW_HOME' | 'config in the current directory' | 'data in the current directory' | 'default';
|
|
22
|
+
export interface InstallDir {
|
|
23
|
+
dir: string;
|
|
24
|
+
reason: InstallReason;
|
|
25
|
+
configPath: string;
|
|
26
|
+
defaultDataLayout: string;
|
|
27
|
+
missing: boolean;
|
|
28
|
+
shadowed: string[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* **Which directory is this machine's tapflow install.** Every command asks this and none takes a
|
|
32
|
+
* path, so `init` writes where `start` reads:
|
|
33
|
+
*
|
|
34
|
+
* 1. `TAPFLOW_HOME`, when set and non-empty (relative values resolve against the cwd).
|
|
35
|
+
* 2. The current directory, when it already is an install — it holds `tapflow.config.json`, or a
|
|
36
|
+
* `.tapflow/data` / `.tapflow-data` with install data in it. This is how installs from before the
|
|
37
|
+
* home existed keep running where they are, and how `pnpm dev` keeps its own.
|
|
38
|
+
* 3. `~/.tapflow`.
|
|
39
|
+
*
|
|
40
|
+
* A permanent rule, like npm's project `.npmrc` before the user one — not a migration path.
|
|
41
|
+
*
|
|
42
|
+
* Two cases around the home directory, both found in design review:
|
|
43
|
+
* - At `~`, `~/.tapflow/data` is the default install's own data, so it is not a signal there. And
|
|
44
|
+
* once `~/.tapflow/tapflow.config.json` exists, `~` is never an install: an older install at `~`
|
|
45
|
+
* would otherwise serve the new install's data under the old config.
|
|
46
|
+
* - An install at `~/.tapflow` with no config of its own reads `~/tapflow.config.json`, which is
|
|
47
|
+
* where `tapflow init` run from a new terminal used to write it. Without that, starting it from
|
|
48
|
+
* anywhere but `~` served the same database and secret with its TLS, tunnel and SMTP gone.
|
|
49
|
+
*/
|
|
50
|
+
export declare function resolveInstallDir({ env, cwd, home }?: {
|
|
51
|
+
env?: NodeJS.ProcessEnv;
|
|
52
|
+
cwd?: string;
|
|
53
|
+
home?: string;
|
|
54
|
+
}): InstallDir;
|
|
8
55
|
//# sourceMappingURL=dataDir.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataDir.d.ts","sourceRoot":"","sources":["../../src/lib/dataDir.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dataDir.d.ts","sourceRoot":"","sources":["../../src/lib/dataDir.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAC9C,eAAO,MAAM,gBAAgB,QAAgC,CAAA;AAG7D,eAAO,MAAM,YAAY,SAAS,CAAA;AAClC,eAAO,MAAM,WAAW,wBAAwB,CAAA;AAChD,eAAO,MAAM,wBAAwB,aAAa,CAAA;AAElD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAA;IAEf,WAAW,EAAE,OAAO,CAAA;IAEpB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CASrD;AAOD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAyB,GAAG,cAAc,CAM7G;AAED,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,iCAAiC,GAAG,+BAA+B,GAAG,SAAS,CAAA;AAE5H,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,aAAa,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAElB,iBAAiB,EAAE,MAAM,CAAA;IAGzB,OAAO,EAAE,OAAO,CAAA;IAEhB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAUD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,GAAiB,EAAE,GAAmB,EAAE,IAAmB,EAAE,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7H,UAAU,CAoCZ"}
|
package/dist/lib/dataDir.js
CHANGED
|
@@ -1,18 +1,114 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
|
+
import os from 'os';
|
|
2
3
|
import path from 'path';
|
|
3
4
|
export const LEGACY_DATA_DIR = '.tapflow-data';
|
|
4
5
|
export const UNIFIED_DATA_DIR = path.join('.tapflow', 'data');
|
|
5
|
-
//
|
|
6
|
-
// `
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
6
|
+
// The layout of an install dir tapflow owns: config and data side by side, nothing wrapped.
|
|
7
|
+
// `.tapflow/data` wraps because it dates from when tapflow lived inside the user's own folder.
|
|
8
|
+
export const OWN_DATA_DIR = 'data';
|
|
9
|
+
export const CONFIG_FILE = 'tapflow.config.json';
|
|
10
|
+
export const DEFAULT_INSTALL_DIR_NAME = '.tapflow';
|
|
11
|
+
/**
|
|
12
|
+
* Whether `dir` holds an install's data. An empty dir counts — the Docker image and the systemd
|
|
13
|
+
* docs create one before the relay first starts. A dir whose only entry is `jwt-secret` does not:
|
|
14
|
+
* every CLI command up to this change wrote one wherever it ran, because the relay config created
|
|
15
|
+
* it at import, and the relay itself always creates `tapflow.db` on boot. So a dir holding the
|
|
16
|
+
* secret alone is one no relay ever ran in, and treating it as an install made an app repo that
|
|
17
|
+
* had once run `tapflow flow run` look like one.
|
|
18
|
+
*/
|
|
19
|
+
export function holdsInstallData(dir) {
|
|
20
|
+
let entries;
|
|
21
|
+
try {
|
|
22
|
+
entries = fs.readdirSync(dir);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
const real = entries.filter((e) => e !== '.DS_Store');
|
|
28
|
+
return !(real.length === 1 && real[0] === 'jwt-secret');
|
|
29
|
+
}
|
|
30
|
+
// Read-only resolution of an install's data dir when nothing names one. The relay never MOVES
|
|
31
|
+
// anything — that is the job of `tapflow migrate data-dir`. Existing layouts come first, so an
|
|
32
|
+
// install that has data keeps it: `.tapflow/data`, then the legacy `.tapflow-data`, and only then
|
|
33
|
+
// `fallback`. The existing ones win over a new-layout `data/` because an install living inside an
|
|
34
|
+
// app repo can have an unrelated `data/` of the app's own. The caller warns when usingLegacy is true.
|
|
35
|
+
export function resolveDefaultDataDir(installDir, fallback = UNIFIED_DATA_DIR) {
|
|
36
|
+
const unified = path.join(installDir, UNIFIED_DATA_DIR);
|
|
37
|
+
if (holdsInstallData(unified))
|
|
38
|
+
return { dataDir: unified, usingLegacy: false, existing: true };
|
|
39
|
+
const legacy = path.join(installDir, LEGACY_DATA_DIR);
|
|
40
|
+
if (holdsInstallData(legacy))
|
|
41
|
+
return { dataDir: legacy, usingLegacy: true, existing: true };
|
|
42
|
+
return { dataDir: path.join(installDir, fallback), usingLegacy: false, existing: false };
|
|
43
|
+
}
|
|
44
|
+
function realpathOr(p) {
|
|
45
|
+
try {
|
|
46
|
+
return fs.realpathSync(p);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return path.resolve(p);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* **Which directory is this machine's tapflow install.** Every command asks this and none takes a
|
|
54
|
+
* path, so `init` writes where `start` reads:
|
|
55
|
+
*
|
|
56
|
+
* 1. `TAPFLOW_HOME`, when set and non-empty (relative values resolve against the cwd).
|
|
57
|
+
* 2. The current directory, when it already is an install — it holds `tapflow.config.json`, or a
|
|
58
|
+
* `.tapflow/data` / `.tapflow-data` with install data in it. This is how installs from before the
|
|
59
|
+
* home existed keep running where they are, and how `pnpm dev` keeps its own.
|
|
60
|
+
* 3. `~/.tapflow`.
|
|
61
|
+
*
|
|
62
|
+
* A permanent rule, like npm's project `.npmrc` before the user one — not a migration path.
|
|
63
|
+
*
|
|
64
|
+
* Two cases around the home directory, both found in design review:
|
|
65
|
+
* - At `~`, `~/.tapflow/data` is the default install's own data, so it is not a signal there. And
|
|
66
|
+
* once `~/.tapflow/tapflow.config.json` exists, `~` is never an install: an older install at `~`
|
|
67
|
+
* would otherwise serve the new install's data under the old config.
|
|
68
|
+
* - An install at `~/.tapflow` with no config of its own reads `~/tapflow.config.json`, which is
|
|
69
|
+
* where `tapflow init` run from a new terminal used to write it. Without that, starting it from
|
|
70
|
+
* anywhere but `~` served the same database and secret with its TLS, tunnel and SMTP gone.
|
|
71
|
+
*/
|
|
72
|
+
export function resolveInstallDir({ env = process.env, cwd = process.cwd(), home = os.homedir() } = {}) {
|
|
73
|
+
const defaultDir = path.join(home, DEFAULT_INSTALL_DIR_NAME);
|
|
74
|
+
let reason = 'default';
|
|
75
|
+
let shadowed = [];
|
|
76
|
+
if (env.TAPFLOW_HOME) {
|
|
77
|
+
const dir = path.resolve(cwd, env.TAPFLOW_HOME);
|
|
78
|
+
if (realpathOr(dir) !== realpathOr(defaultDir)) {
|
|
79
|
+
return {
|
|
80
|
+
dir, reason: 'TAPFLOW_HOME', configPath: path.join(dir, CONFIG_FILE),
|
|
81
|
+
defaultDataLayout: OWN_DATA_DIR, missing: !fs.existsSync(dir), shadowed,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
reason = 'TAPFLOW_HOME';
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
const atHome = realpathOr(cwd) === realpathOr(home);
|
|
88
|
+
const homeInstallConfigured = atHome && fs.existsSync(path.join(defaultDir, CONFIG_FILE));
|
|
89
|
+
if (homeInstallConfigured) {
|
|
90
|
+
shadowed = [path.join(home, CONFIG_FILE)].filter((p) => fs.existsSync(p));
|
|
91
|
+
if (holdsInstallData(path.join(home, LEGACY_DATA_DIR)))
|
|
92
|
+
shadowed.push(path.join(home, LEGACY_DATA_DIR));
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const inCwd = (why) => ({
|
|
96
|
+
dir: cwd, reason: why, configPath: path.join(cwd, CONFIG_FILE),
|
|
97
|
+
// An install in its own folder from before the home existed: keep its layout.
|
|
98
|
+
defaultDataLayout: UNIFIED_DATA_DIR, missing: false, shadowed: [],
|
|
99
|
+
});
|
|
100
|
+
if (fs.existsSync(path.join(cwd, CONFIG_FILE)))
|
|
101
|
+
return inCwd('config in the current directory');
|
|
102
|
+
if (!atHome && holdsInstallData(path.join(cwd, UNIFIED_DATA_DIR)))
|
|
103
|
+
return inCwd('data in the current directory');
|
|
104
|
+
if (holdsInstallData(path.join(cwd, LEGACY_DATA_DIR)))
|
|
105
|
+
return inCwd('data in the current directory');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
let configPath = path.join(defaultDir, CONFIG_FILE);
|
|
109
|
+
const homeConfig = path.join(home, CONFIG_FILE);
|
|
110
|
+
if (!fs.existsSync(configPath) && fs.existsSync(homeConfig))
|
|
111
|
+
configPath = homeConfig;
|
|
112
|
+
return { dir: defaultDir, reason, configPath, defaultDataLayout: OWN_DATA_DIR, missing: false, shadowed };
|
|
17
113
|
}
|
|
18
114
|
//# sourceMappingURL=dataDir.js.map
|
package/dist/lib/dataDir.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataDir.js","sourceRoot":"","sources":["../../src/lib/dataDir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAA;AAC9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"dataDir.js","sourceRoot":"","sources":["../../src/lib/dataDir.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,16 @@ import type { TapflowConfig } from './config.js';
|
|
|
2
2
|
import { type TunnelRuntime } from './publicUrl.js';
|
|
3
3
|
type ProxyCfg = Pick<TapflowConfig, 'tunnel' | 'relay' | 'local'>;
|
|
4
4
|
export declare function buildCorsOrigins(cfg: ProxyCfg, port: number, tunnel?: TunnelRuntime): string[];
|
|
5
|
+
/** Where the tunnel listener goes when nothing names a port. See `RelayServer`'s `tunnelPort`. */
|
|
6
|
+
export declare const DEFAULT_TUNNEL_PORT = 4001;
|
|
7
|
+
/**
|
|
8
|
+
* The port for the tunnel listener, for an entry point that starts or expects a tunnel.
|
|
9
|
+
*
|
|
10
|
+
* `tapflow relay start --port 4001` says nothing about the tunnel port, so a default that lands on the
|
|
11
|
+
* relay's own port steps aside instead of failing on a collision nobody asked for. A port named on purpose
|
|
12
|
+
* is returned as is, and a collision there is refused by `RelayServer` with the setting's name.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveTunnelPort(explicit: number | null, relayPort: number): number;
|
|
5
15
|
export declare function proxyWithoutPublicUrlWarning(cfg: ProxyCfg, tunnel?: TunnelRuntime): string | null;
|
|
6
16
|
export declare function containerWithoutPublicUrlWarning(cfg: ProxyCfg, inContainer: boolean): string | null;
|
|
7
17
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxyConfig.d.ts","sourceRoot":"","sources":["../../src/lib/proxyConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAiF,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAElI,KAAK,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,CAAA;AAGjE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,EAAE,CAS9F;AAGD,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAQjG;AAMD,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAMnG"}
|
|
1
|
+
{"version":3,"file":"proxyConfig.d.ts","sourceRoot":"","sources":["../../src/lib/proxyConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAiF,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAElI,KAAK,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,CAAA;AAGjE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,EAAE,CAS9F;AAED,kGAAkG;AAClG,eAAO,MAAM,mBAAmB,OAAO,CAAA;AAEvC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGpF;AAGD,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAQjG;AAMD,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAMnG"}
|
package/dist/lib/proxyConfig.js
CHANGED
|
@@ -15,6 +15,20 @@ export function buildCorsOrigins(cfg, port, tunnel) {
|
|
|
15
15
|
.filter((o) => o !== null);
|
|
16
16
|
return [...new Set(origins)];
|
|
17
17
|
}
|
|
18
|
+
/** Where the tunnel listener goes when nothing names a port. See `RelayServer`'s `tunnelPort`. */
|
|
19
|
+
export const DEFAULT_TUNNEL_PORT = 4001;
|
|
20
|
+
/**
|
|
21
|
+
* The port for the tunnel listener, for an entry point that starts or expects a tunnel.
|
|
22
|
+
*
|
|
23
|
+
* `tapflow relay start --port 4001` says nothing about the tunnel port, so a default that lands on the
|
|
24
|
+
* relay's own port steps aside instead of failing on a collision nobody asked for. A port named on purpose
|
|
25
|
+
* is returned as is, and a collision there is refused by `RelayServer` with the setting's name.
|
|
26
|
+
*/
|
|
27
|
+
export function resolveTunnelPort(explicit, relayPort) {
|
|
28
|
+
if (explicit !== null)
|
|
29
|
+
return explicit;
|
|
30
|
+
return relayPort === DEFAULT_TUNNEL_PORT ? DEFAULT_TUNNEL_PORT + 1 : DEFAULT_TUNNEL_PORT;
|
|
31
|
+
}
|
|
18
32
|
// A proxied/tunneled relay needs a public URL, or the CSRF/CORS allowlist stays loopback-only and blocks proxied POSTs.
|
|
19
33
|
export function proxyWithoutPublicUrlWarning(cfg, tunnel) {
|
|
20
34
|
if (cfg.local.trustedProxies.length > 0 && resolvePublicBaseUrl(cfg, tunnel) === null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxyConfig.js","sourceRoot":"","sources":["../../src/lib/proxyConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAsB,MAAM,gBAAgB,CAAA;AAIlI,2FAA2F;AAC3F,MAAM,UAAU,gBAAgB,CAAC,GAAa,EAAE,IAAY,EAAE,MAAsB;IAClF,iIAAiI;IACjI,gGAAgG;IAChG,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxE,IAAI,CAAC;YAAC,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;IAC3D,CAAC,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,CAAC,GAAG,iBAAiB,EAAE,oBAAoB,IAAI,EAAE,EAAE,oBAAoB,IAAI,EAAE,CAAC;SAC3F,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAA;IACzC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AAC9B,CAAC;AAED,wHAAwH;AACxH,MAAM,UAAU,4BAA4B,CAAC,GAAa,EAAE,MAAsB;IAChF,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QACtF,OAAO,CACL,+GAA+G;YAC/G,gHAAgH,CACjH,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,mGAAmG;AACnG,0GAA0G;AAC1G,yGAAyG;AACzG,wGAAwG;AACxG,MAAM,UAAU,gCAAgC,CAAC,GAAa,EAAE,WAAoB;IAClF,IAAI,CAAC,WAAW,IAAI,YAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IACjF,OAAO,CACL,+FAA+F,kBAAkB,CAAC,GAAG,CAAC,IAAI;QAC1H,mFAAmF,CACpF,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"proxyConfig.js","sourceRoot":"","sources":["../../src/lib/proxyConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAsB,MAAM,gBAAgB,CAAA;AAIlI,2FAA2F;AAC3F,MAAM,UAAU,gBAAgB,CAAC,GAAa,EAAE,IAAY,EAAE,MAAsB;IAClF,iIAAiI;IACjI,gGAAgG;IAChG,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxE,IAAI,CAAC;YAAC,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;IAC3D,CAAC,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,CAAC,GAAG,iBAAiB,EAAE,oBAAoB,IAAI,EAAE,EAAE,oBAAoB,IAAI,EAAE,CAAC;SAC3F,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAA;IACzC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AAC9B,CAAC;AAED,kGAAkG;AAClG,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAA;AAEvC;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAuB,EAAE,SAAiB;IAC1E,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAA;IACtC,OAAO,SAAS,KAAK,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAA;AAC1F,CAAC;AAED,wHAAwH;AACxH,MAAM,UAAU,4BAA4B,CAAC,GAAa,EAAE,MAAsB;IAChF,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QACtF,OAAO,CACL,+GAA+G;YAC/G,gHAAgH,CACjH,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,mGAAmG;AACnG,0GAA0G;AAC1G,yGAAyG;AACzG,wGAAwG;AACxG,MAAM,UAAU,gCAAgC,CAAC,GAAa,EAAE,WAAoB;IAClF,IAAI,CAAC,WAAW,IAAI,YAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IACjF,OAAO,CACL,+FAA+F,kBAAkB,CAAC,GAAG,CAAC,IAAI;QAC1H,mFAAmF,CACpF,CAAA;AACH,CAAC"}
|
package/dist/middleware/auth.js
CHANGED
|
@@ -2,14 +2,14 @@ import crypto from 'crypto';
|
|
|
2
2
|
import jwt from 'jsonwebtoken';
|
|
3
3
|
import { AuthError } from '@tapflowio/agent-core';
|
|
4
4
|
import { getDb } from '../db.js';
|
|
5
|
-
import {
|
|
5
|
+
import { getJwtSecret } from '../lib/config.js';
|
|
6
6
|
const JWT_EXPIRES = '7d';
|
|
7
7
|
export function signJwt(payload) {
|
|
8
|
-
return jwt.sign(payload,
|
|
8
|
+
return jwt.sign(payload, getJwtSecret(), { expiresIn: JWT_EXPIRES });
|
|
9
9
|
}
|
|
10
10
|
export function verifyJwtOrThrow(token) {
|
|
11
11
|
try {
|
|
12
|
-
return jwt.verify(token,
|
|
12
|
+
return jwt.verify(token, getJwtSecret());
|
|
13
13
|
}
|
|
14
14
|
catch (cause) {
|
|
15
15
|
throw new AuthError('Invalid or expired auth token', { cause });
|
|
@@ -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,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,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/dist/server.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { initDb } from './db.js';
|
|
3
3
|
import { RelayServer } from './RelayServer.js';
|
|
4
|
-
import { config, loadedEnvPath } from './lib/config.js';
|
|
4
|
+
import { config, loadedEnvPath, assertInstallDir } from './lib/config.js';
|
|
5
5
|
import { buildCorsOrigins, containerWithoutPublicUrlWarning, proxyWithoutPublicUrlWarning } from './lib/proxyConfig.js';
|
|
6
6
|
import { runningInContainer } from './lib/lanAddress.js';
|
|
7
7
|
import { bootstrapAdminFromEnv, AdminBootstrapError } from './lib/adminBootstrap.js';
|
|
@@ -9,6 +9,7 @@ import { createCertProvider, resolveRelayDisplayHost } from './lib/cert/index.js
|
|
|
9
9
|
import { startTlsBackgroundTasks } from './lib/tlsTasks.js';
|
|
10
10
|
import { createLogger } from '@tapflowio/agent-core';
|
|
11
11
|
const logger = createLogger('relay');
|
|
12
|
+
assertInstallDir();
|
|
12
13
|
const { port, dataDir } = config.local;
|
|
13
14
|
// config loaded <dataDir>/.env before reading any secret (JWT/SMTP/DNS tokens); just report it here.
|
|
14
15
|
if (loadedEnvPath)
|
|
@@ -60,7 +61,9 @@ async function main() {
|
|
|
60
61
|
}
|
|
61
62
|
// No `tunnel` option: this entry point starts no tunnel, so it has no runtime state to report and the
|
|
62
63
|
// relay trusts config — an operator may run the tunnel alongside. See lib/publicUrl.ts.
|
|
63
|
-
|
|
64
|
+
// The tunnel listener opens only when its port is named: it is loopback-only, so inside a container only
|
|
65
|
+
// something sharing the relay's network namespace (a sidecar, host networking) could reach it at all.
|
|
66
|
+
const server = new RelayServer({ port, uploadsDir, wsBackpressureBytes: config.local.wsBackpressureBytes, trustedProxies: config.local.trustedProxies, corsOrigins, tls, tunnelPort: config.local.tunnelPort ?? undefined });
|
|
64
67
|
await server.start();
|
|
65
68
|
logger.info(`tapflow relay running at ${tls ? 'https' : 'http'}://${displayHost}:${port}`);
|
|
66
69
|
const stopTls = provider ? startTlsBackgroundTasks(provider, server, config.tls) : null;
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|