@calltelemetry/cli 0.3.8 → 0.4.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/README.md +13 -1
- package/dist/commands/diag.d.ts.map +1 -1
- package/dist/commands/diag.js +7 -0
- package/dist/commands/diag.js.map +1 -1
- package/dist/commands/jtapi.d.ts.map +1 -1
- package/dist/commands/jtapi.js +10 -9
- package/dist/commands/jtapi.js.map +1 -1
- package/dist/commands/secrets.d.ts.map +1 -1
- package/dist/commands/secrets.js +12 -0
- package/dist/commands/secrets.js.map +1 -1
- package/dist/commands/users.d.ts +3 -0
- package/dist/commands/users.d.ts.map +1 -0
- package/dist/commands/users.js +24 -0
- package/dist/commands/users.js.map +1 -0
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/compose.d.ts.map +1 -1
- package/dist/lib/compose.js +1 -3
- package/dist/lib/compose.js.map +1 -1
- package/dist/lib/env.d.ts +14 -0
- package/dist/lib/env.d.ts.map +1 -0
- package/dist/lib/env.js +74 -0
- package/dist/lib/env.js.map +1 -0
- package/dist/lib/jtapi.d.ts +67 -2
- package/dist/lib/jtapi.d.ts.map +1 -1
- package/dist/lib/jtapi.js +261 -14
- package/dist/lib/jtapi.js.map +1 -1
- package/dist/lib/paths.d.ts +1 -1
- package/dist/lib/paths.d.ts.map +1 -1
- package/dist/lib/paths.js +1 -1
- package/dist/lib/paths.js.map +1 -1
- package/dist/lib/redact.d.ts +10 -0
- package/dist/lib/redact.d.ts.map +1 -0
- package/dist/lib/redact.js +45 -0
- package/dist/lib/redact.js.map +1 -0
- package/dist/lib/secrets.d.ts +16 -1
- package/dist/lib/secrets.d.ts.map +1 -1
- package/dist/lib/secrets.js +48 -1
- package/dist/lib/secrets.js.map +1 -1
- package/dist/lib/showtech-steps.d.ts +7 -0
- package/dist/lib/showtech-steps.d.ts.map +1 -0
- package/dist/lib/showtech-steps.js +351 -0
- package/dist/lib/showtech-steps.js.map +1 -0
- package/dist/lib/users.d.ts +33 -0
- package/dist/lib/users.d.ts.map +1 -0
- package/dist/lib/users.js +67 -0
- package/dist/lib/users.js.map +1 -0
- package/dist/ui/components/AppShell.d.ts +3 -1
- package/dist/ui/components/AppShell.d.ts.map +1 -1
- package/dist/ui/components/AppShell.js +5 -2
- package/dist/ui/components/AppShell.js.map +1 -1
- package/dist/ui/components/MetricsFooter.d.ts +7 -0
- package/dist/ui/components/MetricsFooter.d.ts.map +1 -0
- package/dist/ui/components/MetricsFooter.js +36 -0
- package/dist/ui/components/MetricsFooter.js.map +1 -0
- package/dist/ui/components/index.d.ts +1 -0
- package/dist/ui/components/index.d.ts.map +1 -1
- package/dist/ui/components/index.js +1 -0
- package/dist/ui/components/index.js.map +1 -1
- package/dist/ui/context/MetricsContext.d.ts +7 -0
- package/dist/ui/context/MetricsContext.d.ts.map +1 -0
- package/dist/ui/context/MetricsContext.js +13 -0
- package/dist/ui/context/MetricsContext.js.map +1 -0
- package/dist/ui/views/DiagDatabaseView.d.ts.map +1 -1
- package/dist/ui/views/DiagDatabaseView.js +36 -28
- package/dist/ui/views/DiagDatabaseView.js.map +1 -1
- package/dist/ui/views/DiagServiceView.d.ts.map +1 -1
- package/dist/ui/views/DiagServiceView.js +29 -18
- package/dist/ui/views/DiagServiceView.js.map +1 -1
- package/dist/ui/views/DiagShowTechView.d.ts +6 -0
- package/dist/ui/views/DiagShowTechView.d.ts.map +1 -0
- package/dist/ui/views/DiagShowTechView.js +68 -0
- package/dist/ui/views/DiagShowTechView.js.map +1 -0
- package/dist/ui/views/JtapiView.d.ts +7 -0
- package/dist/ui/views/JtapiView.d.ts.map +1 -0
- package/dist/ui/views/JtapiView.js +405 -0
- package/dist/ui/views/JtapiView.js.map +1 -0
- package/dist/ui/views/MainMenu.d.ts.map +1 -1
- package/dist/ui/views/MainMenu.js +25 -22
- package/dist/ui/views/MainMenu.js.map +1 -1
- package/dist/ui/views/SecretsResetPasswordView.d.ts +11 -0
- package/dist/ui/views/SecretsResetPasswordView.d.ts.map +1 -0
- package/dist/ui/views/SecretsResetPasswordView.js +205 -0
- package/dist/ui/views/SecretsResetPasswordView.js.map +1 -0
- package/dist/ui/views/UserResetPasswordView.d.ts +10 -0
- package/dist/ui/views/UserResetPasswordView.d.ts.map +1 -0
- package/dist/ui/views/UserResetPasswordView.js +220 -0
- package/dist/ui/views/UserResetPasswordView.js.map +1 -0
- package/package.json +1 -1
package/dist/lib/jtapi.js
CHANGED
|
@@ -1,27 +1,274 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
2
|
import { getPaths } from './paths.js';
|
|
3
|
-
import {
|
|
3
|
+
import { removeSafe } from './fs.js';
|
|
4
|
+
import { readEnvKeys, updateEnvKeys } from './env.js';
|
|
5
|
+
import { compose, composeExec } from './compose.js';
|
|
6
|
+
import { exec } from './exec.js';
|
|
7
|
+
import { checkDiskSpace } from './system.js';
|
|
8
|
+
import { debug } from './log.js';
|
|
9
|
+
// ── JTAPI env vars written to .env when enabling ──
|
|
10
|
+
const JTAPI_ENV_VARS = {
|
|
11
|
+
JTAPI_MODE: 'direct',
|
|
12
|
+
JTAPI_SIDECAR_ENDPOINT: 'jtapi-sidecar:50051',
|
|
13
|
+
JTAPI_SIDECAR_URL: 'http://jtapi-sidecar:8080',
|
|
14
|
+
S3_ENABLED: 'true',
|
|
15
|
+
CT_MEDIA_ENDPOINT: 'ct-media:50053',
|
|
16
|
+
};
|
|
17
|
+
const JTAPI_ENV_KEYS = [
|
|
18
|
+
...Object.keys(JTAPI_ENV_VARS),
|
|
19
|
+
'JTAPI_VERSION',
|
|
20
|
+
'CT_MEDIA_VERSION',
|
|
21
|
+
];
|
|
22
|
+
// ── State management ──
|
|
23
|
+
/**
|
|
24
|
+
* Check if JTAPI is enabled by reading COMPOSE_PROFILES from .env.
|
|
25
|
+
* Pure read — no side effects or migration.
|
|
26
|
+
*/
|
|
4
27
|
export function isJtapiEnabled() {
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export function hasOverlayFile() {
|
|
9
|
-
return existsSync(getPaths().jtapiOverlayFile);
|
|
28
|
+
const env = readEnvKeys();
|
|
29
|
+
const profiles = env.COMPOSE_PROFILES ?? '';
|
|
30
|
+
return profiles.split(',').map(p => p.trim()).includes('jtapi');
|
|
10
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Enable JTAPI: add jtapi to COMPOSE_PROFILES and write JTAPI env vars.
|
|
34
|
+
* Also runs migration cleanup if old state file exists.
|
|
35
|
+
*/
|
|
11
36
|
export async function enableJtapi() {
|
|
12
|
-
|
|
37
|
+
const env = readEnvKeys();
|
|
38
|
+
const existing = (env.COMPOSE_PROFILES ?? '').split(',').map(p => p.trim()).filter(Boolean);
|
|
39
|
+
if (!existing.includes('jtapi')) {
|
|
40
|
+
existing.push('jtapi');
|
|
41
|
+
}
|
|
42
|
+
const updates = {
|
|
43
|
+
COMPOSE_PROFILES: existing.join(','),
|
|
44
|
+
...JTAPI_ENV_VARS,
|
|
45
|
+
};
|
|
46
|
+
await updateEnvKeys(updates);
|
|
47
|
+
// Clean up old state file if present (one-time migration)
|
|
48
|
+
const { jtapiStateFile } = getPaths();
|
|
49
|
+
if (existsSync(jtapiStateFile)) {
|
|
50
|
+
await removeSafe(jtapiStateFile);
|
|
51
|
+
}
|
|
13
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Disable JTAPI: remove jtapi from COMPOSE_PROFILES and remove JTAPI env vars.
|
|
55
|
+
*/
|
|
14
56
|
export async function disableJtapi() {
|
|
57
|
+
const env = readEnvKeys();
|
|
58
|
+
const existing = (env.COMPOSE_PROFILES ?? '').split(',').map(p => p.trim()).filter(Boolean);
|
|
59
|
+
const filtered = existing.filter(p => p !== 'jtapi');
|
|
60
|
+
const updates = {
|
|
61
|
+
COMPOSE_PROFILES: filtered.length > 0 ? filtered.join(',') : undefined,
|
|
62
|
+
};
|
|
63
|
+
for (const key of JTAPI_ENV_KEYS) {
|
|
64
|
+
updates[key] = undefined;
|
|
65
|
+
}
|
|
66
|
+
await updateEnvKeys(updates);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Explicit migration from old .jtapi-enabled state file to .env approach.
|
|
70
|
+
* Returns true if migration occurred.
|
|
71
|
+
*/
|
|
72
|
+
export async function migrateFromStateFile() {
|
|
15
73
|
const { jtapiStateFile } = getPaths();
|
|
16
|
-
if (existsSync(jtapiStateFile))
|
|
74
|
+
if (!existsSync(jtapiStateFile))
|
|
75
|
+
return false;
|
|
76
|
+
// Already migrated?
|
|
77
|
+
if (isJtapiEnabled()) {
|
|
17
78
|
await removeSafe(jtapiStateFile);
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
await enableJtapi();
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
// ── Container / health inspection ──
|
|
85
|
+
/**
|
|
86
|
+
* Get JTAPI sidecar container status via compose ps.
|
|
87
|
+
*/
|
|
88
|
+
export async function getJtapiContainerStatus() {
|
|
89
|
+
try {
|
|
90
|
+
const result = await compose(['ps', '--format', 'json', 'jtapi-sidecar'], { pipe: true });
|
|
91
|
+
const stdout = String(result.stdout ?? '').trim();
|
|
92
|
+
if (!stdout)
|
|
93
|
+
return { running: false, state: 'not found', health: 'unknown' };
|
|
94
|
+
// compose ps --format json may output one JSON object per line
|
|
95
|
+
const lines = stdout.split('\n').filter(Boolean);
|
|
96
|
+
for (const line of lines) {
|
|
97
|
+
try {
|
|
98
|
+
const obj = JSON.parse(line);
|
|
99
|
+
const state = (obj.State ?? obj.state ?? '').toLowerCase();
|
|
100
|
+
const health = (obj.Health ?? obj.health ?? 'unknown').toLowerCase();
|
|
101
|
+
const status = obj.Status ?? obj.status ?? '';
|
|
102
|
+
return {
|
|
103
|
+
running: state === 'running',
|
|
104
|
+
state: state || 'unknown',
|
|
105
|
+
health: health || 'unknown',
|
|
106
|
+
uptime: status || undefined,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// Fallback: text parsing
|
|
114
|
+
if (stdout.toLowerCase().includes('running')) {
|
|
115
|
+
const healthy = stdout.toLowerCase().includes('healthy');
|
|
116
|
+
return { running: true, state: 'running', health: healthy ? 'healthy' : 'unknown' };
|
|
117
|
+
}
|
|
118
|
+
return { running: false, state: 'exited', health: 'unknown' };
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
debug(`getJtapiContainerStatus failed: ${err.message}`);
|
|
122
|
+
return { running: false, state: 'not found', health: 'unknown' };
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Check JTAPI sidecar health. Primary: compose health field. Fallback: exec curl.
|
|
127
|
+
*/
|
|
128
|
+
export async function getJtapiHealthCheck() {
|
|
129
|
+
const container = await getJtapiContainerStatus();
|
|
130
|
+
// If compose reports a known health status, use it
|
|
131
|
+
if (container.health === 'healthy') {
|
|
132
|
+
return { reachable: true, status: 'UP', source: 'compose' };
|
|
133
|
+
}
|
|
134
|
+
if (container.health === 'unhealthy') {
|
|
135
|
+
return { reachable: false, status: 'DOWN', source: 'compose' };
|
|
136
|
+
}
|
|
137
|
+
// Fallback: try exec curl into the container
|
|
138
|
+
if (!container.running) {
|
|
139
|
+
return { reachable: false, source: 'compose', detail: `Container ${container.state}` };
|
|
140
|
+
}
|
|
141
|
+
try {
|
|
142
|
+
const result = await Promise.race([
|
|
143
|
+
composeExec('jtapi-sidecar', ['curl', '-sf', 'http://localhost:8080/actuator/health'], { pipe: true }),
|
|
144
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('timeout')), 10_000)),
|
|
145
|
+
]);
|
|
146
|
+
const stdout = String(result.stdout ?? '').trim();
|
|
147
|
+
const status = stdout.includes('"UP"') ? 'UP' : stdout.includes('"DOWN"') ? 'DOWN' : undefined;
|
|
148
|
+
return { reachable: true, status, source: 'exec', detail: stdout };
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
debug(`Health exec fallback failed: ${err.message}`);
|
|
152
|
+
return { reachable: false, source: 'exec', detail: err.message };
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Check status of JTAPI dependency services (nats, ct-media, minio).
|
|
157
|
+
*/
|
|
158
|
+
export async function getJtapiDependencyStatus() {
|
|
159
|
+
const services = ['nats', 'ct-media', 'minio'];
|
|
160
|
+
const results = [];
|
|
161
|
+
for (const name of services) {
|
|
162
|
+
try {
|
|
163
|
+
const result = await compose(['ps', '--format', 'json', name], { pipe: true });
|
|
164
|
+
const stdout = String(result.stdout ?? '').trim();
|
|
165
|
+
if (!stdout) {
|
|
166
|
+
results.push({ name, running: false, health: 'not found' });
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
const lines = stdout.split('\n').filter(Boolean);
|
|
170
|
+
let parsed = false;
|
|
171
|
+
for (const line of lines) {
|
|
172
|
+
try {
|
|
173
|
+
const obj = JSON.parse(line);
|
|
174
|
+
const state = (obj.State ?? obj.state ?? '').toLowerCase();
|
|
175
|
+
const health = (obj.Health ?? obj.health ?? 'unknown').toLowerCase();
|
|
176
|
+
results.push({ name, running: state === 'running', health: health || 'unknown' });
|
|
177
|
+
parsed = true;
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (!parsed) {
|
|
185
|
+
const running = stdout.toLowerCase().includes('running');
|
|
186
|
+
results.push({ name, running, health: running ? 'unknown' : 'not found' });
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
results.push({ name, running: false, health: 'not found' });
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return results;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Check JTAPI-related env vars on the running web container.
|
|
197
|
+
*/
|
|
198
|
+
export async function getJtapiWebConfig() {
|
|
199
|
+
try {
|
|
200
|
+
const result = await composeExec('web', ['env'], { pipe: true });
|
|
201
|
+
const stdout = String(result.stdout ?? '');
|
|
202
|
+
const vars = {};
|
|
203
|
+
for (const line of stdout.split('\n')) {
|
|
204
|
+
const eq = line.indexOf('=');
|
|
205
|
+
if (eq > 0)
|
|
206
|
+
vars[line.slice(0, eq)] = line.slice(eq + 1);
|
|
207
|
+
}
|
|
208
|
+
const mode = vars.JTAPI_MODE || null;
|
|
209
|
+
const sidecarEndpoint = vars.JTAPI_SIDECAR_ENDPOINT || null;
|
|
210
|
+
return { mode, sidecarEndpoint, configured: !!mode };
|
|
211
|
+
}
|
|
212
|
+
catch (err) {
|
|
213
|
+
debug(`getJtapiWebConfig failed: ${err.message}`);
|
|
214
|
+
return { mode: null, sidecarEndpoint: null, configured: false };
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Run pre-flight checks before enabling JTAPI.
|
|
219
|
+
*/
|
|
220
|
+
export async function checkJtapiPrereqs() {
|
|
221
|
+
const results = [];
|
|
222
|
+
// 1. Docker Compose plugin available (not legacy docker-compose)
|
|
223
|
+
try {
|
|
224
|
+
const result = await exec('docker', ['compose', 'version']);
|
|
225
|
+
const version = String(result.stdout ?? '').trim();
|
|
226
|
+
results.push({ label: 'Docker Compose plugin', passed: true, detail: version });
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
results.push({ label: 'Docker Compose plugin', passed: false, detail: 'JTAPI requires "docker compose" plugin (not legacy docker-compose)' });
|
|
230
|
+
}
|
|
231
|
+
// 2. Docker daemon running
|
|
232
|
+
try {
|
|
233
|
+
await exec('docker', ['info'], { stdout: 'pipe', stderr: 'pipe' });
|
|
234
|
+
results.push({ label: 'Docker daemon', passed: true, detail: 'running' });
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
results.push({ label: 'Docker daemon', passed: false, detail: 'Docker daemon is not running' });
|
|
238
|
+
}
|
|
239
|
+
// 3. Current state
|
|
240
|
+
const enabled = isJtapiEnabled();
|
|
241
|
+
results.push({
|
|
242
|
+
label: 'JTAPI status',
|
|
243
|
+
passed: !enabled,
|
|
244
|
+
detail: enabled ? 'Already enabled' : 'Disabled — ready to enable',
|
|
245
|
+
});
|
|
246
|
+
// 4. Disk space
|
|
247
|
+
try {
|
|
248
|
+
const disk = await checkDiskSpace('/', 5);
|
|
249
|
+
results.push({
|
|
250
|
+
label: 'Disk space',
|
|
251
|
+
passed: disk.ok,
|
|
252
|
+
detail: disk.ok ? `${disk.freePercent}% free` : `Only ${disk.freePercent}% free (need 5%)`,
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
results.push({ label: 'Disk space', passed: true, detail: 'Unable to check' });
|
|
257
|
+
}
|
|
258
|
+
return results;
|
|
18
259
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
260
|
+
/**
|
|
261
|
+
* Poll sidecar health until healthy or timeout.
|
|
262
|
+
*/
|
|
263
|
+
export async function waitForHealth(maxWaitSec = 90) {
|
|
264
|
+
const interval = 5_000;
|
|
265
|
+
const deadline = Date.now() + maxWaitSec * 1000;
|
|
266
|
+
while (Date.now() < deadline) {
|
|
267
|
+
const health = await getJtapiHealthCheck();
|
|
268
|
+
if (health.reachable && health.status === 'UP')
|
|
269
|
+
return true;
|
|
270
|
+
await new Promise(r => setTimeout(r, interval));
|
|
24
271
|
}
|
|
25
|
-
return
|
|
272
|
+
return false;
|
|
26
273
|
}
|
|
27
274
|
//# sourceMappingURL=jtapi.js.map
|
package/dist/lib/jtapi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jtapi.js","sourceRoot":"","sources":["../../src/lib/jtapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpD,MAAM,UAAU,cAAc;IAC5B,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,QAAQ,EAAE,CAAC;IACxD,OAAO,UAAU,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,EAAE,cAAc,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtC,IAAI,UAAU,CAAC,cAAc,CAAC;QAAE,MAAM,UAAU,CAAC,cAAc,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,QAAQ,EAAE,CAAC;IACrE,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"jtapi.js","sourceRoot":"","sources":["../../src/lib/jtapi.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/paths.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export declare function getPaths(): {
|
|
|
6
6
|
overrideFile: string;
|
|
7
7
|
certsDir: string;
|
|
8
8
|
postgresDataDir: string;
|
|
9
|
-
|
|
9
|
+
/** @deprecated JTAPI now uses Docker Compose profiles via .env */
|
|
10
10
|
jtapiStateFile: string;
|
|
11
11
|
secretsOverlayFile: string;
|
|
12
12
|
gcsBaseUrl: string;
|
package/dist/lib/paths.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAyDA,wBAAgB,QAAQ
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAyDA,wBAAgB,QAAQ;;;;;;;;IAZpB,kEAAkE;;;;;;;;;EAerE"}
|
package/dist/lib/paths.js
CHANGED
|
@@ -38,7 +38,7 @@ function buildPaths() {
|
|
|
38
38
|
overrideFile: join(installDir, 'docker-compose.override.yml'),
|
|
39
39
|
certsDir: join(installDir, 'certs'),
|
|
40
40
|
postgresDataDir: join(installDir, 'postgres-data'),
|
|
41
|
-
|
|
41
|
+
/** @deprecated JTAPI now uses Docker Compose profiles via .env */
|
|
42
42
|
jtapiStateFile: join(installDir, '.jtapi-enabled'),
|
|
43
43
|
secretsOverlayFile: join(installDir, 'docker-compose.secrets.yml'),
|
|
44
44
|
gcsBaseUrl: GCS_BASE_URL,
|
package/dist/lib/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,YAAY,GAAG,4CAA4C,CAAC;AAClE,MAAM,mBAAmB,GAAG,GAAG,YAAY,WAAW,CAAC;AAEvD,MAAM,mBAAmB,GAAG,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAC;AAE1E,SAAS,gBAAgB;IACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACvC,MAAM,QAAQ,GAAG,QAAQ;QACvB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QACzB,CAAC,CAAC,OAAO,EAAE,CAAC;IAEd,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE,CAAC;QAC5C,IAAI,SAAS,KAAK,QAAQ;YAAE,SAAS;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAC1D,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACnD,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;oBACtC,OAAO,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,IAAI,MAAM,GAAyC,IAAI,CAAC;AAExD,SAAS,UAAU;IACjB,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,OAAO;QACL,UAAU;QACV,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;QACtC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;QACxC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC;QACnD,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,6BAA6B,CAAC;QAC7D,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;QACnC,eAAe,EAAE,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC;QAClD,
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,YAAY,GAAG,4CAA4C,CAAC;AAClE,MAAM,mBAAmB,GAAG,GAAG,YAAY,WAAW,CAAC;AAEvD,MAAM,mBAAmB,GAAG,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAC;AAE1E,SAAS,gBAAgB;IACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACvC,MAAM,QAAQ,GAAG,QAAQ;QACvB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QACzB,CAAC,CAAC,OAAO,EAAE,CAAC;IAEd,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE,CAAC;QAC5C,IAAI,SAAS,KAAK,QAAQ;YAAE,SAAS;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAC1D,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACnD,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;oBACtC,OAAO,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,IAAI,MAAM,GAAyC,IAAI,CAAC;AAExD,SAAS,UAAU;IACjB,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,OAAO;QACL,UAAU;QACV,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;QACtC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;QACxC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC;QACnD,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,6BAA6B,CAAC;QAC7D,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;QACnC,eAAe,EAAE,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC;QAClD,kEAAkE;QAClE,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC;QAClD,kBAAkB,EAAE,IAAI,CAAC,UAAU,EAAE,4BAA4B,CAAC;QAClE,UAAU,EAAE,YAAY;QACxB,gBAAgB,EAAE,mBAAmB;QACrC,SAAS,EAAE,GAAG,YAAY,SAAS;QACnC,aAAa,EAAE,GAAG,YAAY,UAAU;QACxC,yBAAyB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QACzD,sBAAsB,EAAE,IAAI;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,UAAU,EAAE,CAAC;IACnC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-redact sensitive values from collected diagnostic text.
|
|
3
|
+
* Uses SECRET_CATALOG to identify known sensitive keys, plus
|
|
4
|
+
* regex patterns for common secret formats.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Replace known sensitive values and common secret patterns with [REDACTED].
|
|
8
|
+
*/
|
|
9
|
+
export declare function redactSecrets(text: string): string;
|
|
10
|
+
//# sourceMappingURL=redact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../src/lib/redact.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwBlD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-redact sensitive values from collected diagnostic text.
|
|
3
|
+
* Uses SECRET_CATALOG to identify known sensitive keys, plus
|
|
4
|
+
* regex patterns for common secret formats.
|
|
5
|
+
*/
|
|
6
|
+
import { SECRET_CATALOG, getSecrets } from './secrets.js';
|
|
7
|
+
const SENSITIVE_KEYS = SECRET_CATALOG.filter(d => d.sensitive).map(d => d.key);
|
|
8
|
+
/**
|
|
9
|
+
* Regex patterns that catch common secret formats in config/log files.
|
|
10
|
+
* Each pattern must have a capture group for the value portion to redact.
|
|
11
|
+
*/
|
|
12
|
+
const REDACT_PATTERNS = [
|
|
13
|
+
// KEY=value (env-style), case-insensitive for password/secret/token keys
|
|
14
|
+
/(?<=(?:password|secret|token|api_key|private_key)\s*[=:]\s*).+/gi,
|
|
15
|
+
// Bearer tokens
|
|
16
|
+
/(?<=Bearer\s+)\S+/gi,
|
|
17
|
+
];
|
|
18
|
+
const PLACEHOLDER = '[REDACTED]';
|
|
19
|
+
/**
|
|
20
|
+
* Replace known sensitive values and common secret patterns with [REDACTED].
|
|
21
|
+
*/
|
|
22
|
+
export function redactSecrets(text) {
|
|
23
|
+
let result = text;
|
|
24
|
+
// 1. Replace known secret values (from env/.env/process.env)
|
|
25
|
+
try {
|
|
26
|
+
const secrets = getSecrets();
|
|
27
|
+
for (const key of SENSITIVE_KEYS) {
|
|
28
|
+
const value = secrets[key];
|
|
29
|
+
if (value && value.length > 0) {
|
|
30
|
+
// Escape special regex characters in the value
|
|
31
|
+
const escaped = value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
32
|
+
result = result.replace(new RegExp(escaped, 'g'), PLACEHOLDER);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// getSecrets() may fail if .env path doesn't exist — proceed with regex-only
|
|
38
|
+
}
|
|
39
|
+
// 2. Apply regex patterns for common secret formats
|
|
40
|
+
for (const pattern of REDACT_PATTERNS) {
|
|
41
|
+
result = result.replace(pattern, PLACEHOLDER);
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=redact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/lib/redact.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAE/E;;;GAGG;AACH,MAAM,eAAe,GAAG;IACtB,yEAAyE;IACzE,kEAAkE;IAClE,gBAAgB;IAChB,qBAAqB;CACtB,CAAC;AAEF,MAAM,WAAW,GAAG,YAAY,CAAC;AAEjC;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,MAAM,GAAG,IAAI,CAAC;IAElB,6DAA6D;IAC7D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,+CAA+C;gBAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;gBAC7D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,6EAA6E;IAC/E,CAAC;IAED,oDAAoD;IACpD,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/lib/secrets.d.ts
CHANGED
|
@@ -28,11 +28,26 @@ export declare function isCustomized(): boolean;
|
|
|
28
28
|
*/
|
|
29
29
|
export declare function countOverrides(): number;
|
|
30
30
|
/**
|
|
31
|
-
* Write secrets to .env file with 0600 permissions
|
|
31
|
+
* Write secrets to .env file with 0600 permissions.
|
|
32
|
+
* Preserves non-catalog keys (e.g. JTAPI config, COMPOSE_PROFILES).
|
|
32
33
|
*/
|
|
33
34
|
export declare function writeEnvFile(values: Record<string, string>): Promise<void>;
|
|
34
35
|
/**
|
|
35
36
|
* Generate docker-compose.secrets.yml overlay file
|
|
36
37
|
*/
|
|
37
38
|
export declare function writeSecretsOverlay(): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Generate a cryptographically random password (URL-safe alphanumeric).
|
|
41
|
+
*/
|
|
42
|
+
export declare function generatePassword(length?: number): string;
|
|
43
|
+
/**
|
|
44
|
+
* Change the PostgreSQL password in the running database via ALTER USER.
|
|
45
|
+
* Connects using current credentials from getSecrets().
|
|
46
|
+
*/
|
|
47
|
+
export declare function alterDbPassword(newPassword: string): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Update Minio password in .env/overlay and restart the Minio container.
|
|
50
|
+
* Minio reads credentials from environment variables at startup.
|
|
51
|
+
*/
|
|
52
|
+
export declare function restartMinioWithPassword(newPassword: string): Promise<void>;
|
|
38
53
|
//# sourceMappingURL=secrets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,EAAE,SAAS,EAOrC,CAAC;AAEF,eAAO,MAAM,aAAa,0CAA2C,CAAC;AACtE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwBpE;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4BnD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAMtC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAkChF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmBzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,SAAK,GAAG,MAAM,CAEpD;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQxE;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMjF"}
|
package/dist/lib/secrets.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { randomBytes } from 'node:crypto';
|
|
2
3
|
import { join } from 'node:path';
|
|
3
4
|
import { getPaths } from './paths.js';
|
|
4
5
|
import { writeFileSafe } from './fs.js';
|
|
6
|
+
import { composeExec, compose } from './compose.js';
|
|
5
7
|
export const SECRET_CATALOG = [
|
|
6
8
|
{ key: 'POSTGRES_PASSWORD', label: 'PostgreSQL Password', group: 'PostgreSQL', defaultValue: 'postgres', sensitive: true, required: true },
|
|
7
9
|
{ key: 'POSTGRES_USER', label: 'PostgreSQL User', group: 'PostgreSQL', defaultValue: 'calltelemetry', sensitive: false, required: true },
|
|
@@ -88,10 +90,18 @@ export function countOverrides() {
|
|
|
88
90
|
return SECRET_CATALOG.filter(def => secrets[def.key] !== def.defaultValue).length;
|
|
89
91
|
}
|
|
90
92
|
/**
|
|
91
|
-
* Write secrets to .env file with 0600 permissions
|
|
93
|
+
* Write secrets to .env file with 0600 permissions.
|
|
94
|
+
* Preserves non-catalog keys (e.g. JTAPI config, COMPOSE_PROFILES).
|
|
92
95
|
*/
|
|
93
96
|
export async function writeEnvFile(values) {
|
|
94
97
|
const envPath = getEnvFilePath();
|
|
98
|
+
// Snapshot non-catalog keys before overwriting
|
|
99
|
+
const catalogKeys = new Set(SECRET_CATALOG.map(d => d.key));
|
|
100
|
+
let preserved = [];
|
|
101
|
+
if (existsSync(envPath)) {
|
|
102
|
+
const existing = parseEnvFile(readFileSync(envPath, 'utf-8'));
|
|
103
|
+
preserved = Object.entries(existing).filter(([k]) => !catalogKeys.has(k));
|
|
104
|
+
}
|
|
95
105
|
const lines = [
|
|
96
106
|
'# CallTelemetry secrets — generated by ct secrets setup',
|
|
97
107
|
`# Last updated: ${new Date().toISOString()}`,
|
|
@@ -103,6 +113,13 @@ export async function writeEnvFile(values) {
|
|
|
103
113
|
lines.push(`${def.key}=${value}`);
|
|
104
114
|
}
|
|
105
115
|
}
|
|
116
|
+
// Re-append preserved non-catalog keys
|
|
117
|
+
if (preserved.length > 0) {
|
|
118
|
+
lines.push('');
|
|
119
|
+
for (const [key, value] of preserved) {
|
|
120
|
+
lines.push(`${key}=${value}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
106
123
|
lines.push('');
|
|
107
124
|
await writeFileSafe(envPath, lines.join('\n'), { mode: 0o600 });
|
|
108
125
|
}
|
|
@@ -129,4 +146,34 @@ services:
|
|
|
129
146
|
`;
|
|
130
147
|
await writeFileSafe(secretsOverlayFile, content);
|
|
131
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Generate a cryptographically random password (URL-safe alphanumeric).
|
|
151
|
+
*/
|
|
152
|
+
export function generatePassword(length = 24) {
|
|
153
|
+
return randomBytes(length).toString('base64url').slice(0, length);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Change the PostgreSQL password in the running database via ALTER USER.
|
|
157
|
+
* Connects using current credentials from getSecrets().
|
|
158
|
+
*/
|
|
159
|
+
export async function alterDbPassword(newPassword) {
|
|
160
|
+
const secrets = getSecrets();
|
|
161
|
+
const user = secrets.POSTGRES_USER;
|
|
162
|
+
const escaped = newPassword.replace(/'/g, "''");
|
|
163
|
+
await composeExec('db', [
|
|
164
|
+
'psql', '-U', user, '-d', secrets.POSTGRES_DB,
|
|
165
|
+
'-c', `ALTER USER ${user} PASSWORD '${escaped}';`,
|
|
166
|
+
], { env: { PGPASSWORD: secrets.POSTGRES_PASSWORD }, pipe: true });
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Update Minio password in .env/overlay and restart the Minio container.
|
|
170
|
+
* Minio reads credentials from environment variables at startup.
|
|
171
|
+
*/
|
|
172
|
+
export async function restartMinioWithPassword(newPassword) {
|
|
173
|
+
const secrets = getSecrets();
|
|
174
|
+
secrets.MINIO_ROOT_PASSWORD = newPassword;
|
|
175
|
+
await writeEnvFile(secrets);
|
|
176
|
+
await writeSecretsOverlay();
|
|
177
|
+
await compose(['restart', 'minio']);
|
|
178
|
+
}
|
|
132
179
|
//# sourceMappingURL=secrets.js.map
|
package/dist/lib/secrets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Show Tech support bundle collection pipeline.
|
|
3
|
+
* Returns UpdateStep[] consumed by useStepRunner (TUI) or runStepsCli (CLI).
|
|
4
|
+
*/
|
|
5
|
+
import type { UpdateStep } from './update-steps.js';
|
|
6
|
+
export declare function showtechSteps(bundleDir: string): UpdateStep[];
|
|
7
|
+
//# sourceMappingURL=showtech-steps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"showtech-steps.d.ts","sourceRoot":"","sources":["../../src/lib/showtech-steps.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,mBAAmB,CAAC;AA0CjE,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,CAyU7D"}
|