ninedeploy 0.10.6 → 0.16.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/LICENSE +21 -21
- package/README.md +1 -0
- package/dist/client.d.ts +34 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +81 -22
- package/dist/client.js.map +1 -1
- package/dist/commands/backupPolicy.d.ts +29 -0
- package/dist/commands/backupPolicy.d.ts.map +1 -0
- package/dist/commands/backupPolicy.js +111 -0
- package/dist/commands/backupPolicy.js.map +1 -0
- package/dist/commands/certificates.d.ts +18 -7
- package/dist/commands/certificates.d.ts.map +1 -1
- package/dist/commands/certificates.js +121 -1
- package/dist/commands/certificates.js.map +1 -1
- package/dist/commands/databaseAccess.d.ts +37 -0
- package/dist/commands/databaseAccess.d.ts.map +1 -0
- package/dist/commands/databaseAccess.js +306 -0
- package/dist/commands/databaseAccess.js.map +1 -0
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +28 -7
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/githubApps.d.ts +40 -0
- package/dist/commands/githubApps.d.ts.map +1 -0
- package/dist/commands/githubApps.js +278 -0
- package/dist/commands/githubApps.js.map +1 -0
- package/dist/commands/housekeeping.d.ts +7 -0
- package/dist/commands/housekeeping.d.ts.map +1 -1
- package/dist/commands/housekeeping.js +16 -0
- package/dist/commands/housekeeping.js.map +1 -1
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +17 -2
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/manage.d.ts +26 -10
- package/dist/commands/manage.d.ts.map +1 -1
- package/dist/commands/manage.js +219 -65
- package/dist/commands/manage.js.map +1 -1
- package/dist/commands/manifest.d.ts.map +1 -1
- package/dist/commands/manifest.js +9 -1
- package/dist/commands/manifest.js.map +1 -1
- package/dist/commands/misc.d.ts +4 -2
- package/dist/commands/misc.d.ts.map +1 -1
- package/dist/commands/misc.js +25 -11
- package/dist/commands/misc.js.map +1 -1
- package/dist/commands/multiNode.d.ts +55 -0
- package/dist/commands/multiNode.d.ts.map +1 -0
- package/dist/commands/multiNode.js +438 -0
- package/dist/commands/multiNode.js.map +1 -0
- package/dist/commands/notifications.d.ts +1 -1
- package/dist/commands/operations.d.ts +89 -0
- package/dist/commands/operations.d.ts.map +1 -0
- package/dist/commands/operations.js +468 -0
- package/dist/commands/operations.js.map +1 -0
- package/dist/commands/panelBackup.d.ts +28 -0
- package/dist/commands/panelBackup.d.ts.map +1 -0
- package/dist/commands/panelBackup.js +153 -0
- package/dist/commands/panelBackup.js.map +1 -0
- package/dist/commands/plugins.d.ts +1 -1
- package/dist/commands/plugins.d.ts.map +1 -1
- package/dist/commands/plugins.js +7 -3
- package/dist/commands/plugins.js.map +1 -1
- package/dist/commands/proxyConfig.d.ts +16 -0
- package/dist/commands/proxyConfig.d.ts.map +1 -0
- package/dist/commands/proxyConfig.js +122 -0
- package/dist/commands/proxyConfig.js.map +1 -0
- package/dist/commands/secretProviders.d.ts +59 -0
- package/dist/commands/secretProviders.d.ts.map +1 -0
- package/dist/commands/secretProviders.js +212 -0
- package/dist/commands/secretProviders.js.map +1 -0
- package/dist/commands/services.d.ts.map +1 -1
- package/dist/commands/services.js +3 -5
- package/dist/commands/services.js.map +1 -1
- package/dist/commands/setup.d.ts +3 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +19 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/sources.d.ts +10 -3
- package/dist/commands/sources.d.ts.map +1 -1
- package/dist/commands/sources.js +116 -18
- package/dist/commands/sources.js.map +1 -1
- package/dist/commands/templates.d.ts.map +1 -1
- package/dist/commands/templates.js +8 -1
- package/dist/commands/templates.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/index.js +427 -23
- package/dist/index.js.map +1 -1
- package/dist/lib/format.d.ts.map +1 -1
- package/dist/lib/format.js +5 -4
- package/dist/lib/format.js.map +1 -1
- package/dist/lib/panelBackupFile.d.ts +3 -0
- package/dist/lib/panelBackupFile.d.ts.map +1 -0
- package/dist/lib/panelBackupFile.js +71 -0
- package/dist/lib/panelBackupFile.js.map +1 -0
- package/dist/lib/serverRunner.d.ts +6 -0
- package/dist/lib/serverRunner.d.ts.map +1 -1
- package/dist/lib/serverRunner.js +18 -3
- package/dist/lib/serverRunner.js.map +1 -1
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +9 -2
- package/dist/prompts.js.map +1 -1
- package/package.json +6 -5
- package/src/client.ts +137 -0
- package/src/commands/backupPolicy.ts +123 -0
- package/src/commands/branding.ts +83 -0
- package/src/commands/buildCache.ts +72 -0
- package/src/commands/certificates.ts +208 -0
- package/src/commands/communityTemplates.ts +97 -0
- package/src/commands/configCenter.ts +71 -0
- package/src/commands/configPresets.ts +215 -0
- package/src/commands/databaseAccess.ts +333 -0
- package/src/commands/demo.ts +22 -0
- package/src/commands/deploy.ts +284 -0
- package/src/commands/doctor.ts +170 -0
- package/src/commands/domains.ts +170 -0
- package/src/commands/egress.ts +135 -0
- package/src/commands/emailTemplates.ts +112 -0
- package/src/commands/firewall.ts +82 -0
- package/src/commands/githubApps.ts +292 -0
- package/src/commands/housekeeping.ts +106 -0
- package/src/commands/login.ts +58 -0
- package/src/commands/logs.ts +91 -0
- package/src/commands/manage.ts +714 -0
- package/src/commands/manifest.ts +314 -0
- package/src/commands/metrics.ts +69 -0
- package/src/commands/misc.ts +307 -0
- package/src/commands/multiNode.ts +442 -0
- package/src/commands/notifications.ts +174 -0
- package/src/commands/operations.ts +519 -0
- package/src/commands/panelBackup.ts +167 -0
- package/src/commands/pgbouncer.ts +65 -0
- package/src/commands/plugins.ts +123 -0
- package/src/commands/proxyConfig.ts +117 -0
- package/src/commands/secretProviders.ts +228 -0
- package/src/commands/server.ts +126 -0
- package/src/commands/services.ts +249 -0
- package/src/commands/setup.ts +94 -0
- package/src/commands/sources.ts +317 -0
- package/src/commands/sso.ts +106 -0
- package/src/commands/templates.ts +158 -0
- package/src/commands/token.ts +66 -0
- package/src/commands/webhooks.ts +93 -0
- package/src/commands/workspaces.ts +63 -0
- package/src/config.ts +53 -0
- package/src/index.ts +1273 -0
- package/src/lib/format.ts +182 -0
- package/src/lib/panelBackupFile.ts +67 -0
- package/src/lib/serverRunner.ts +223 -0
- package/src/prompts.ts +238 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { error, fmtBytes, fmtTime, header, info, kv, success, table } from '../lib/format.js';
|
|
2
|
+
import { decryptPanelBackup } from '../lib/panelBackupFile.js';
|
|
3
|
+
import { promptHidden } from '../prompts.js';
|
|
4
|
+
import { plain } from './sources.js';
|
|
5
|
+
// Destination errors are relayed provider text: they pass through the F1011 sanitiser.
|
|
6
|
+
const message = (err) => plain(err instanceof Error ? err.message : String(err));
|
|
7
|
+
function printStatus(s) {
|
|
8
|
+
kv('Enabled', s.settings.enabled ? 'yes' : 'no');
|
|
9
|
+
kv('Schedule', s.settings.cron);
|
|
10
|
+
kv('Destination', s.settings.destinationId ?? '—');
|
|
11
|
+
kv('Keep', s.settings.retain);
|
|
12
|
+
kv('Passphrase', s.settings.hasPassphrase ? 'set' : 'NOT SET');
|
|
13
|
+
kv('Next run', s.nextRunAt ? fmtTime(s.nextRunAt) : '—');
|
|
14
|
+
kv('Running', s.running ? 'yes' : 'no');
|
|
15
|
+
if (s.lastRun) {
|
|
16
|
+
kv('Last run', `${s.lastRun.status} (${s.lastRun.trigger}) ${fmtTime(s.lastRun.finishedAt ?? s.lastRun.startedAt)}`);
|
|
17
|
+
if (s.lastRun.error)
|
|
18
|
+
kv('Last error', plain(s.lastRun.error));
|
|
19
|
+
if (s.lastRun.warning)
|
|
20
|
+
kv('Warning', plain(s.lastRun.warning));
|
|
21
|
+
}
|
|
22
|
+
kv('Last success', s.lastSuccessAt ? fmtTime(s.lastSuccessAt) : 'never');
|
|
23
|
+
if (s.masterKeyFromEnv) {
|
|
24
|
+
info('The master key comes from NINEDEPLOY_MASTER_KEY(S): backups do NOT contain it — keep it with the recovery passphrase.');
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export async function panelBackupStatusAction(client) {
|
|
28
|
+
header('Panel backup');
|
|
29
|
+
try {
|
|
30
|
+
printStatus(await client.system.panelBackup.get());
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
error(message(err));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** Build the PUT body from flags; returns an error string for bad input. */
|
|
37
|
+
export async function panelBackupSetBody(opts, ask = promptHidden) {
|
|
38
|
+
if (opts.enable && opts.disable)
|
|
39
|
+
return 'Pass --enable or --disable, not both';
|
|
40
|
+
const body = {};
|
|
41
|
+
if (opts.enable)
|
|
42
|
+
body.enabled = true;
|
|
43
|
+
if (opts.disable)
|
|
44
|
+
body.enabled = false;
|
|
45
|
+
if (opts.cron !== undefined)
|
|
46
|
+
body.cron = opts.cron;
|
|
47
|
+
if (opts.destination !== undefined) {
|
|
48
|
+
const id = Number(opts.destination);
|
|
49
|
+
if (!Number.isInteger(id) || id <= 0)
|
|
50
|
+
return '--destination must be a backup destination id';
|
|
51
|
+
body.destinationId = id;
|
|
52
|
+
}
|
|
53
|
+
if (opts.retain !== undefined) {
|
|
54
|
+
const n = Number(opts.retain);
|
|
55
|
+
if (!Number.isInteger(n) || n < 1)
|
|
56
|
+
return '--retain must be a whole number of at least 1';
|
|
57
|
+
body.retain = n;
|
|
58
|
+
}
|
|
59
|
+
if (opts.passphrase) {
|
|
60
|
+
const first = await ask('Recovery passphrase (keep it OFF this server)');
|
|
61
|
+
const again = await ask('Repeat the passphrase');
|
|
62
|
+
if (!first)
|
|
63
|
+
return 'Empty passphrase';
|
|
64
|
+
if (first !== again)
|
|
65
|
+
return 'The passphrases do not match';
|
|
66
|
+
body.passphrase = first;
|
|
67
|
+
}
|
|
68
|
+
if (Object.keys(body).length === 0)
|
|
69
|
+
return 'Nothing to change — see `ninedeploy system panel-backup set --help`';
|
|
70
|
+
return body;
|
|
71
|
+
}
|
|
72
|
+
export async function panelBackupSetAction(client, opts) {
|
|
73
|
+
const body = await panelBackupSetBody(opts);
|
|
74
|
+
if (typeof body === 'string')
|
|
75
|
+
return error(body);
|
|
76
|
+
try {
|
|
77
|
+
const status = await client.system.panelBackup.update(body);
|
|
78
|
+
success('Panel backup settings saved');
|
|
79
|
+
printStatus(status);
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
error(message(err));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
export async function panelBackupNowAction(client, opts, sleep = (ms) => new Promise((r) => setTimeout(r, ms))) {
|
|
86
|
+
try {
|
|
87
|
+
await client.system.panelBackup.run();
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
return error(message(err));
|
|
91
|
+
}
|
|
92
|
+
if (!opts.wait) {
|
|
93
|
+
success('Panel backup started — check `ninedeploy system panel-backup status`');
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
info('Panel backup started — waiting for it to finish…');
|
|
97
|
+
// A backup of a large panel database can take a while; poll, bounded.
|
|
98
|
+
for (let i = 0; i < 720; i++) {
|
|
99
|
+
await sleep(2500);
|
|
100
|
+
let s;
|
|
101
|
+
try {
|
|
102
|
+
s = await client.system.panelBackup.get();
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
return error(message(err));
|
|
106
|
+
}
|
|
107
|
+
if (s.running)
|
|
108
|
+
continue;
|
|
109
|
+
if (s.lastRun?.status === 'completed') {
|
|
110
|
+
success(`Uploaded ${s.lastRun.key} (${fmtBytes(s.lastRun.sizeBytes ?? 0)})`);
|
|
111
|
+
if (s.lastRun.warning)
|
|
112
|
+
info(s.lastRun.warning);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
return error(`Panel backup failed: ${s.lastRun?.error ?? 'unknown error'}`);
|
|
116
|
+
}
|
|
117
|
+
error('Stopped waiting after 30 minutes — the backup may still be running.');
|
|
118
|
+
}
|
|
119
|
+
export async function panelBackupListAction(client, opts) {
|
|
120
|
+
header('Panel backups');
|
|
121
|
+
const id = opts.destination === undefined ? undefined : Number(opts.destination);
|
|
122
|
+
if (id !== undefined && (!Number.isInteger(id) || id <= 0))
|
|
123
|
+
return error('--destination must be a backup destination id');
|
|
124
|
+
try {
|
|
125
|
+
const { items } = await client.system.panelBackup.list(id);
|
|
126
|
+
if (items.length === 0) {
|
|
127
|
+
info('No panel backups in this destination.');
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
table(items.map((o) => ({ name: o.name, size: fmtBytes(o.sizeBytes), date: fmtTime(o.lastModified), key: o.key })), ['name', 'size', 'date', 'key']);
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
error(message(err));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/** Offline: open a downloaded `.ndpb` into the `.tar.gz` that `system import` takes. */
|
|
137
|
+
export async function panelBackupDecryptAction(file, out, ask = promptHidden) {
|
|
138
|
+
if (!file)
|
|
139
|
+
return error('Usage: ninedeploy system panel-backup decrypt <file.ndpb> [out.tar.gz]');
|
|
140
|
+
const target = out ?? `${file.replace(/\.ndpb$/i, '')}.tar.gz`;
|
|
141
|
+
const passphrase = await ask('Recovery passphrase');
|
|
142
|
+
if (!passphrase)
|
|
143
|
+
return error('Empty passphrase');
|
|
144
|
+
try {
|
|
145
|
+
await decryptPanelBackup(file, target, passphrase);
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
return error(message(err));
|
|
149
|
+
}
|
|
150
|
+
success(`Decrypted to ${target}`);
|
|
151
|
+
info(`Restore it with: ninedeploy system import ${target} (then restart NineDeploy)`);
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=panelBackup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panelBackup.js","sourceRoot":"","sources":["../../src/commands/panelBackup.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ export declare function pluginsMarketplace(client: NineDeployClient): Promise<vo
|
|
|
5
5
|
* 5-minute cache and re-fetch the live signed index. */
|
|
6
6
|
export declare function pluginsMarketplaceRefresh(client: NineDeployClient): Promise<void>;
|
|
7
7
|
export declare function pluginsInstall(client: NineDeployClient, target: string, opts: {
|
|
8
|
-
source?: 'marketplace' | '
|
|
8
|
+
source?: 'marketplace' | 'sandbox';
|
|
9
9
|
name?: string;
|
|
10
10
|
version?: string;
|
|
11
11
|
desc?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,wBAAsB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBzE;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChF;AAED;yDACyD;AACzD,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvF;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,wBAAsB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBzE;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChF;AAED;yDACyD;AACzD,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvF;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EAGd,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3F,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvF;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGxF;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1F;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBxF;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvF"}
|
package/dist/commands/plugins.js
CHANGED
|
@@ -47,7 +47,10 @@ export async function pluginsMarketplaceRefresh(client) {
|
|
|
47
47
|
const res = await client.plugins.marketplace({ refresh: true });
|
|
48
48
|
console.log(` ✓ Refreshed (${res.catalog.length} entries, live=${res.live}, keyId=${res.keyId ?? 'n/a'}).`);
|
|
49
49
|
}
|
|
50
|
-
export async function pluginsInstall(client, target,
|
|
50
|
+
export async function pluginsInstall(client, target,
|
|
51
|
+
// r440: matches the server's LOADABLE_SOURCES — the old union advertised
|
|
52
|
+
// npm/git/local, which the server refuses with 400 every time.
|
|
53
|
+
opts) {
|
|
51
54
|
const source = opts.source ?? 'marketplace';
|
|
52
55
|
const res = await client.plugins.install({
|
|
53
56
|
source,
|
|
@@ -86,8 +89,9 @@ export async function pluginsInspect(client, id) {
|
|
|
86
89
|
if (p.error) {
|
|
87
90
|
console.log(` Error: ${p.error}`);
|
|
88
91
|
}
|
|
89
|
-
|
|
90
|
-
console.log(`
|
|
92
|
+
// r286: null = the kernel does not track this per plugin.
|
|
93
|
+
console.log(` Events Run: ${p.runtimeStats.eventsHandled ?? 'not tracked'}`);
|
|
94
|
+
console.log(` Uptime: ${p.runtimeStats.uptimeSeconds == null ? 'not tracked' : `${p.runtimeStats.uptimeSeconds}s`}`);
|
|
91
95
|
}
|
|
92
96
|
export async function pluginsReload(client, id) {
|
|
93
97
|
const res = await client.plugins.reload(id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { NineDeployClient } from '../client.js';
|
|
2
|
+
/** `ninedeploy proxy config get` */
|
|
3
|
+
export declare function proxyConfigGet(client: NineDeployClient): Promise<void>;
|
|
4
|
+
/** `ninedeploy proxy config validate --file <path>` — no state change. */
|
|
5
|
+
export declare function proxyConfigValidate(client: NineDeployClient, opts?: {
|
|
6
|
+
file?: string;
|
|
7
|
+
}): Promise<void>;
|
|
8
|
+
/** `ninedeploy proxy config set --file <path>` — validated and applied atomically by the server. */
|
|
9
|
+
export declare function proxyConfigSet(client: NineDeployClient, opts?: {
|
|
10
|
+
file?: string;
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
/** `ninedeploy proxy config clear [--yes]` — removes every custom router, service and middleware. */
|
|
13
|
+
export declare function proxyConfigClear(client: NineDeployClient, opts?: {
|
|
14
|
+
yes?: boolean;
|
|
15
|
+
}): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=proxyConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxyConfig.d.ts","sourceRoot":"","sources":["../../src/commands/proxyConfig.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AA6CrD,oCAAoC;AACpC,wBAAsB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB5E;AAED,0EAA0E;AAC1E,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/G;AAED,oGAAoG;AACpG,wBAAsB,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAa1G;AAED,qGAAqG;AACrG,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAe5G"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { prompt } from '../prompts.js';
|
|
3
|
+
import { c, error, header, info, kv, spinner, success } from '../lib/format.js';
|
|
4
|
+
import { plain } from './sources.js';
|
|
5
|
+
/**
|
|
6
|
+
* 0.14: the operator's custom Traefik dynamic config (`custom.yml`) —
|
|
7
|
+
* `ninedeploy proxy config get|validate|set|clear`. Operator only on the
|
|
8
|
+
* server. Findings, errors and the stored YAML are printed through the F1011
|
|
9
|
+
* sanitiser (line by line, so the YAML keeps its line breaks).
|
|
10
|
+
*/
|
|
11
|
+
const message = (err) => plain(err instanceof Error ? err.message : String(err));
|
|
12
|
+
/** Multi-line text with every control sequence removed from each line. */
|
|
13
|
+
const lines = (text) => text
|
|
14
|
+
.split(/\r?\n/)
|
|
15
|
+
.map((l) => plain(l))
|
|
16
|
+
.join('\n');
|
|
17
|
+
function printIssues(label, issues, color) {
|
|
18
|
+
if (issues.length === 0)
|
|
19
|
+
return;
|
|
20
|
+
console.log(` ${color(label)}`);
|
|
21
|
+
for (const i of issues)
|
|
22
|
+
console.log(` ${color('•')} ${i.path ? `${plain(i.path)}: ` : ''}${plain(i.message)}`);
|
|
23
|
+
}
|
|
24
|
+
function readConfigFile(file, usage) {
|
|
25
|
+
if (!file) {
|
|
26
|
+
error(usage);
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
const content = readFileSync(file, 'utf8');
|
|
31
|
+
if (!content.trim()) {
|
|
32
|
+
error(`${file} is empty`);
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
return content;
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
error(`Cannot read ${file}: ${message(err)}`);
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** `ninedeploy proxy config get` */
|
|
43
|
+
export async function proxyConfigGet(client) {
|
|
44
|
+
try {
|
|
45
|
+
const cfg = await spinner('Reading the custom config', () => client.traefik.customConfig.get());
|
|
46
|
+
header('Custom Traefik config');
|
|
47
|
+
const color = cfg.status === 'applied' ? c.green : cfg.status === 'rejected' ? c.red : c.gray;
|
|
48
|
+
kv('Status', color(cfg.status));
|
|
49
|
+
kv('SHA-256', cfg.sha256);
|
|
50
|
+
kv('Updated', cfg.updatedAt ? new Date(cfg.updatedAt).toLocaleString() : null);
|
|
51
|
+
kv('Updated by', cfg.updatedBy === null ? null : `user #${cfg.updatedBy}`);
|
|
52
|
+
if (cfg.lastError)
|
|
53
|
+
kv('Last error', c.red(plain(cfg.lastError)));
|
|
54
|
+
if (cfg.content === null) {
|
|
55
|
+
info('No custom config saved. Write one and run `ninedeploy proxy config set --file <path>`.');
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
console.log();
|
|
59
|
+
console.log(lines(cfg.content));
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
error(message(err));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** `ninedeploy proxy config validate --file <path>` — no state change. */
|
|
66
|
+
export async function proxyConfigValidate(client, opts = {}) {
|
|
67
|
+
const content = readConfigFile(opts.file, 'Usage: ninedeploy proxy config validate --file <path>');
|
|
68
|
+
if (content === null)
|
|
69
|
+
return;
|
|
70
|
+
try {
|
|
71
|
+
const res = await spinner('Validating', () => client.traefik.customConfig.validate(content));
|
|
72
|
+
printIssues('Errors', res.errors, c.red);
|
|
73
|
+
printIssues('Warnings', res.warnings, c.yellow);
|
|
74
|
+
if (res.ok)
|
|
75
|
+
success('The config is valid');
|
|
76
|
+
else
|
|
77
|
+
error(`The config has ${res.errors.length} error(s)`);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
error(message(err));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/** `ninedeploy proxy config set --file <path>` — validated and applied atomically by the server. */
|
|
84
|
+
export async function proxyConfigSet(client, opts = {}) {
|
|
85
|
+
const content = readConfigFile(opts.file, 'Usage: ninedeploy proxy config set --file <path>');
|
|
86
|
+
if (content === null)
|
|
87
|
+
return;
|
|
88
|
+
try {
|
|
89
|
+
const res = await spinner('Validating and applying', () => client.traefik.customConfig.set(content));
|
|
90
|
+
success(`Custom config applied (sha256 ${res.sha256.slice(0, 12)})`);
|
|
91
|
+
printIssues('Warnings', res.warnings, c.yellow);
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
const details = err.details;
|
|
95
|
+
if (details?.errors)
|
|
96
|
+
printIssues('Errors', details.errors, c.red);
|
|
97
|
+
if (details?.warnings)
|
|
98
|
+
printIssues('Warnings', details.warnings, c.yellow);
|
|
99
|
+
error(message(err));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/** `ninedeploy proxy config clear [--yes]` — removes every custom router, service and middleware. */
|
|
103
|
+
export async function proxyConfigClear(client, opts = {}) {
|
|
104
|
+
if (!opts.yes) {
|
|
105
|
+
const confirm = await prompt('Type "clear" to remove the custom Traefik config', '');
|
|
106
|
+
if (confirm.trim() !== 'clear') {
|
|
107
|
+
info('Aborted.');
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
const res = await spinner('Clearing the custom config', () => client.traefik.customConfig.clear());
|
|
113
|
+
if (res.cleared)
|
|
114
|
+
success('Custom config removed');
|
|
115
|
+
else
|
|
116
|
+
info('There was no custom config to remove.');
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
error(message(err));
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=proxyConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxyConfig.js","sourceRoot":"","sources":["../../src/commands/proxyConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { NineDeployClient } from '../client.js';
|
|
2
|
+
/**
|
|
3
|
+
* 0.14: HashiCorp Vault / OpenBao and AWS Secrets Manager —
|
|
4
|
+
* `ninedeploy secrets providers list|set-vault|set-aws|test|delete`.
|
|
5
|
+
* Operator only on the server.
|
|
6
|
+
*
|
|
7
|
+
* Secrets never travel on argv (they would land in shell history and `ps`):
|
|
8
|
+
* a Vault token, AppRole role/secret id, AWS secret access key and session
|
|
9
|
+
* token come from a file (`--token-file`, …) or an environment variable.
|
|
10
|
+
* The AWS access key id is an identifier and may be passed as a flag. An
|
|
11
|
+
* omitted credential keeps the stored value. Provider detail and test errors
|
|
12
|
+
* are relayed provider text, so they pass through the F1011 sanitiser.
|
|
13
|
+
*/
|
|
14
|
+
export declare const VAULT_TOKEN_ENV = "NINEDEPLOY_VAULT_TOKEN";
|
|
15
|
+
export declare const VAULT_ROLE_ID_ENV = "NINEDEPLOY_VAULT_ROLE_ID";
|
|
16
|
+
export declare const VAULT_SECRET_ID_ENV = "NINEDEPLOY_VAULT_SECRET_ID";
|
|
17
|
+
export declare const AWS_ACCESS_KEY_ID_ENV = "NINEDEPLOY_AWS_ACCESS_KEY_ID";
|
|
18
|
+
export declare const AWS_SECRET_ACCESS_KEY_ENV = "NINEDEPLOY_AWS_SECRET_ACCESS_KEY";
|
|
19
|
+
export declare const AWS_SESSION_TOKEN_ENV = "NINEDEPLOY_AWS_SESSION_TOKEN";
|
|
20
|
+
/** `ninedeploy secrets providers list` */
|
|
21
|
+
export declare function secretProvidersList(client: NineDeployClient): Promise<void>;
|
|
22
|
+
export interface VaultCliOptions {
|
|
23
|
+
address?: string;
|
|
24
|
+
namespace?: string;
|
|
25
|
+
mount?: string;
|
|
26
|
+
auth?: string;
|
|
27
|
+
approleMount?: string;
|
|
28
|
+
tokenFile?: string;
|
|
29
|
+
roleIdFile?: string;
|
|
30
|
+
secretIdFile?: string;
|
|
31
|
+
enable?: boolean;
|
|
32
|
+
disable?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** `ninedeploy secrets providers set-vault --address <url> [--auth token|approle] ...` */
|
|
35
|
+
export declare function secretProvidersSetVault(client: NineDeployClient, opts?: VaultCliOptions): Promise<void>;
|
|
36
|
+
export interface AwsCliOptions {
|
|
37
|
+
region?: string;
|
|
38
|
+
endpoint?: string;
|
|
39
|
+
roleArn?: string;
|
|
40
|
+
externalId?: string;
|
|
41
|
+
roleSessionName?: string;
|
|
42
|
+
accessKeyId?: string;
|
|
43
|
+
secretAccessKeyFile?: string;
|
|
44
|
+
sessionTokenFile?: string;
|
|
45
|
+
enable?: boolean;
|
|
46
|
+
disable?: boolean;
|
|
47
|
+
}
|
|
48
|
+
/** `ninedeploy secrets providers set-aws --region <region> ...` */
|
|
49
|
+
export declare function secretProvidersSetAws(client: NineDeployClient, opts?: AwsCliOptions): Promise<void>;
|
|
50
|
+
/** `ninedeploy secrets providers test <kind> [--probe-path <path>] [--probe-secret-id <id>]` */
|
|
51
|
+
export declare function secretProvidersTest(client: NineDeployClient, kindArg: string, opts?: {
|
|
52
|
+
probePath?: string;
|
|
53
|
+
probeSecretId?: string;
|
|
54
|
+
}): Promise<void>;
|
|
55
|
+
/** `ninedeploy secrets providers delete <kind> [--yes]` */
|
|
56
|
+
export declare function secretProvidersDelete(client: NineDeployClient, kindArg: string, opts?: {
|
|
57
|
+
yes?: boolean;
|
|
58
|
+
}): Promise<void>;
|
|
59
|
+
//# sourceMappingURL=secretProviders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secretProviders.d.ts","sourceRoot":"","sources":["../../src/commands/secretProviders.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAKrD;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,eAAe,2BAA2B,CAAC;AACxD,eAAO,MAAM,iBAAiB,6BAA6B,CAAC;AAC5D,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAChE,eAAO,MAAM,qBAAqB,iCAAiC,CAAC;AACpE,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAC5E,eAAO,MAAM,qBAAqB,iCAAiC,CAAC;AAiCpE,0CAA0C;AAC1C,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBjF;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,0FAA0F;AAC1F,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCjH;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,mEAAmE;AACnE,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC7G;AAED,gGAAgG;AAChG,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GACxD,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,2DAA2D;AAC3D,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBlI"}
|