@zincapp/znvault-cli 2.26.5 → 2.29.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/commands/group.d.ts +3 -0
- package/dist/commands/group.d.ts.map +1 -0
- package/dist/commands/group.js +319 -0
- package/dist/commands/group.js.map +1 -0
- package/dist/commands/host/bootstrap-token.d.ts.map +1 -1
- package/dist/commands/host/bootstrap-token.js +28 -10
- package/dist/commands/host/bootstrap-token.js.map +1 -1
- package/dist/commands/ssh-ca/ca.d.ts +14 -0
- package/dist/commands/ssh-ca/ca.d.ts.map +1 -0
- package/dist/commands/ssh-ca/ca.js +169 -0
- package/dist/commands/ssh-ca/ca.js.map +1 -0
- package/dist/commands/ssh-ca/certificates.d.ts +7 -0
- package/dist/commands/ssh-ca/certificates.d.ts.map +1 -0
- package/dist/commands/ssh-ca/certificates.js +131 -0
- package/dist/commands/ssh-ca/certificates.js.map +1 -0
- package/dist/commands/ssh-ca/helpers.d.ts +37 -0
- package/dist/commands/ssh-ca/helpers.d.ts.map +1 -0
- package/dist/commands/ssh-ca/helpers.js +104 -0
- package/dist/commands/ssh-ca/helpers.js.map +1 -0
- package/dist/commands/ssh-ca/index.d.ts +7 -0
- package/dist/commands/ssh-ca/index.d.ts.map +1 -0
- package/dist/commands/ssh-ca/index.js +180 -0
- package/dist/commands/ssh-ca/index.js.map +1 -0
- package/dist/commands/ssh-ca/mappings.d.ts +11 -0
- package/dist/commands/ssh-ca/mappings.d.ts.map +1 -0
- package/dist/commands/ssh-ca/mappings.js +178 -0
- package/dist/commands/ssh-ca/mappings.js.map +1 -0
- package/dist/commands/ssh-ca/server-groups.d.ts +21 -0
- package/dist/commands/ssh-ca/server-groups.d.ts.map +1 -0
- package/dist/commands/ssh-ca/server-groups.js +252 -0
- package/dist/commands/ssh-ca/server-groups.js.map +1 -0
- package/dist/commands/ssh-ca/sign.d.ts +3 -0
- package/dist/commands/ssh-ca/sign.d.ts.map +1 -0
- package/dist/commands/ssh-ca/sign.js +79 -0
- package/dist/commands/ssh-ca/sign.js.map +1 -0
- package/dist/commands/ssh-ca/types.d.ts +135 -0
- package/dist/commands/ssh-ca/types.d.ts.map +1 -0
- package/dist/commands/ssh-ca/types.js +3 -0
- package/dist/commands/ssh-ca/types.js.map +1 -0
- package/dist/commands/ssh-ca.d.ts +7 -0
- package/dist/commands/ssh-ca.d.ts.map +1 -0
- package/dist/commands/ssh-ca.js +7 -0
- package/dist/commands/ssh-ca.js.map +1 -0
- package/dist/commands/ssh.d.ts +3 -0
- package/dist/commands/ssh.d.ts.map +1 -0
- package/dist/commands/ssh.js +814 -0
- package/dist/commands/ssh.js.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/client/tenants.d.ts.map +1 -1
- package/dist/lib/client/tenants.js +3 -6
- package/dist/lib/client/tenants.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../src/commands/group.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAyEzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8W5D"}
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
// Path: znvault-cli/src/commands/group.ts
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { client } from '../lib/client.js';
|
|
4
|
+
import { promptConfirm } from '../lib/prompts.js';
|
|
5
|
+
import * as output from '../lib/output.js';
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Commands
|
|
8
|
+
// ============================================================================
|
|
9
|
+
export function registerGroupCommands(program) {
|
|
10
|
+
const group = program
|
|
11
|
+
.command('group')
|
|
12
|
+
.description('SSO group management');
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// List Groups
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
group
|
|
17
|
+
.command('list')
|
|
18
|
+
.description('List SSO groups')
|
|
19
|
+
.option('--tenant <id>', 'Filter by tenant (superadmin only)')
|
|
20
|
+
.option('--json', 'Output as JSON')
|
|
21
|
+
.action(async (options) => {
|
|
22
|
+
const spinner = ora('Fetching groups...').start();
|
|
23
|
+
try {
|
|
24
|
+
const params = new URLSearchParams();
|
|
25
|
+
if (options.tenant) {
|
|
26
|
+
params.set('tenantId', options.tenant);
|
|
27
|
+
}
|
|
28
|
+
const queryString = params.toString() ? `?${params.toString()}` : '';
|
|
29
|
+
const data = await client.get(`/v1/sso/groups${queryString}`);
|
|
30
|
+
spinner.stop();
|
|
31
|
+
if (options.json) {
|
|
32
|
+
output.json(data);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (data.items.length === 0) {
|
|
36
|
+
output.info('No groups found');
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
output.table(['Name', 'Display Name', 'Members', 'Created'], data.items.map((g) => [
|
|
40
|
+
g.name,
|
|
41
|
+
g.displayName ?? '-',
|
|
42
|
+
g.memberCount ?? 0,
|
|
43
|
+
new Date(g.createdAt).toLocaleDateString(),
|
|
44
|
+
]));
|
|
45
|
+
output.info(`Total: ${data.pagination.total} group(s)`);
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
spinner.fail('Error fetching groups');
|
|
49
|
+
output.error(err instanceof Error ? err.message : 'Unknown error');
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
// Create Group
|
|
55
|
+
// ---------------------------------------------------------------------------
|
|
56
|
+
group
|
|
57
|
+
.command('create <name>')
|
|
58
|
+
.description('Create a new SSO group')
|
|
59
|
+
.option('--display-name <name>', 'Human-readable display name')
|
|
60
|
+
.option('--description <text>', 'Group description')
|
|
61
|
+
.option('--json', 'Output as JSON')
|
|
62
|
+
.action(async (name, options) => {
|
|
63
|
+
const spinner = ora('Creating group...').start();
|
|
64
|
+
try {
|
|
65
|
+
const body = {
|
|
66
|
+
name,
|
|
67
|
+
};
|
|
68
|
+
if (options.displayName) {
|
|
69
|
+
body.display_name = options.displayName;
|
|
70
|
+
}
|
|
71
|
+
if (options.description) {
|
|
72
|
+
body.description = options.description;
|
|
73
|
+
}
|
|
74
|
+
const data = await client.post('/v1/sso/groups', body);
|
|
75
|
+
spinner.succeed('Group created successfully');
|
|
76
|
+
if (options.json) {
|
|
77
|
+
output.json(data);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
output.keyValue({
|
|
81
|
+
'ID': data.id,
|
|
82
|
+
'Name': data.name,
|
|
83
|
+
'Display Name': data.displayName ?? '-',
|
|
84
|
+
'Description': data.description ?? '-',
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
spinner.fail('Error creating group');
|
|
89
|
+
output.error(err instanceof Error ? err.message : 'Unknown error');
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
// ---------------------------------------------------------------------------
|
|
94
|
+
// Get Group
|
|
95
|
+
// ---------------------------------------------------------------------------
|
|
96
|
+
group
|
|
97
|
+
.command('get <id>')
|
|
98
|
+
.description('Get group details')
|
|
99
|
+
.option('--json', 'Output as JSON')
|
|
100
|
+
.action(async (id, options) => {
|
|
101
|
+
const spinner = ora('Fetching group...').start();
|
|
102
|
+
try {
|
|
103
|
+
const data = await client.get(`/v1/sso/groups/${id}`);
|
|
104
|
+
spinner.stop();
|
|
105
|
+
if (options.json) {
|
|
106
|
+
output.json(data);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
output.keyValue({
|
|
110
|
+
'ID': data.id,
|
|
111
|
+
'Tenant': data.tenantId,
|
|
112
|
+
'Name': data.name,
|
|
113
|
+
'Display Name': data.displayName ?? '-',
|
|
114
|
+
'Description': data.description ?? '-',
|
|
115
|
+
'Members': data.memberCount ?? 'N/A',
|
|
116
|
+
'Created By': data.createdByUsername ?? data.createdBy ?? '-',
|
|
117
|
+
'Created At': new Date(data.createdAt).toLocaleString(),
|
|
118
|
+
'Updated At': new Date(data.updatedAt).toLocaleString(),
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
spinner.fail('Error fetching group');
|
|
123
|
+
output.error(err instanceof Error ? err.message : 'Unknown error');
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
// ---------------------------------------------------------------------------
|
|
128
|
+
// Update Group
|
|
129
|
+
// ---------------------------------------------------------------------------
|
|
130
|
+
group
|
|
131
|
+
.command('update <id>')
|
|
132
|
+
.description('Update group')
|
|
133
|
+
.option('--name <name>', 'New group name')
|
|
134
|
+
.option('--display-name <name>', 'New display name')
|
|
135
|
+
.option('--description <text>', 'New description')
|
|
136
|
+
.option('--json', 'Output as JSON')
|
|
137
|
+
.action(async (id, options) => {
|
|
138
|
+
const spinner = ora('Updating group...').start();
|
|
139
|
+
try {
|
|
140
|
+
const body = {};
|
|
141
|
+
if (options.name) {
|
|
142
|
+
body.name = options.name;
|
|
143
|
+
}
|
|
144
|
+
if (options.displayName !== undefined) {
|
|
145
|
+
body.display_name = options.displayName || null;
|
|
146
|
+
}
|
|
147
|
+
if (options.description !== undefined) {
|
|
148
|
+
body.description = options.description || null;
|
|
149
|
+
}
|
|
150
|
+
if (Object.keys(body).length === 0) {
|
|
151
|
+
spinner.fail('No updates specified');
|
|
152
|
+
output.error('Use --name, --display-name, or --description to specify updates');
|
|
153
|
+
process.exit(1);
|
|
154
|
+
}
|
|
155
|
+
const data = await client.patch(`/v1/sso/groups/${id}`, body);
|
|
156
|
+
spinner.succeed('Group updated successfully');
|
|
157
|
+
if (options.json) {
|
|
158
|
+
output.json(data);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
output.keyValue({
|
|
162
|
+
'ID': data.id,
|
|
163
|
+
'Name': data.name,
|
|
164
|
+
'Display Name': data.displayName ?? '-',
|
|
165
|
+
'Description': data.description ?? '-',
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
spinner.fail('Error updating group');
|
|
170
|
+
output.error(err instanceof Error ? err.message : 'Unknown error');
|
|
171
|
+
process.exit(1);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
// ---------------------------------------------------------------------------
|
|
175
|
+
// Delete Group
|
|
176
|
+
// ---------------------------------------------------------------------------
|
|
177
|
+
group
|
|
178
|
+
.command('delete <id>')
|
|
179
|
+
.description('Delete group')
|
|
180
|
+
.option('-y, --yes', 'Skip confirmation')
|
|
181
|
+
.action(async (id, options) => {
|
|
182
|
+
try {
|
|
183
|
+
// Get group info for confirmation
|
|
184
|
+
const groupData = await client.get(`/v1/sso/groups/${id}`);
|
|
185
|
+
if (!options.yes) {
|
|
186
|
+
const confirmed = await promptConfirm(`Delete group "${groupData.name}"? This will remove all members.`);
|
|
187
|
+
if (!confirmed) {
|
|
188
|
+
output.info('Cancelled');
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
const spinner = ora('Deleting group...').start();
|
|
193
|
+
await client.delete(`/v1/sso/groups/${id}`);
|
|
194
|
+
spinner.succeed(`Group "${groupData.name}" deleted`);
|
|
195
|
+
}
|
|
196
|
+
catch (err) {
|
|
197
|
+
output.error(err instanceof Error ? err.message : 'Unknown error');
|
|
198
|
+
process.exit(1);
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
// ---------------------------------------------------------------------------
|
|
202
|
+
// Members Subcommand
|
|
203
|
+
// ---------------------------------------------------------------------------
|
|
204
|
+
const members = group
|
|
205
|
+
.command('members')
|
|
206
|
+
.description('Manage group members');
|
|
207
|
+
// List members
|
|
208
|
+
members
|
|
209
|
+
.command('list <groupId>')
|
|
210
|
+
.description('List group members')
|
|
211
|
+
.option('--json', 'Output as JSON')
|
|
212
|
+
.action(async (groupId, options) => {
|
|
213
|
+
const spinner = ora('Fetching members...').start();
|
|
214
|
+
try {
|
|
215
|
+
const data = await client.get(`/v1/sso/groups/${groupId}/members`);
|
|
216
|
+
spinner.stop();
|
|
217
|
+
if (options.json) {
|
|
218
|
+
output.json(data);
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
if (data.items.length === 0) {
|
|
222
|
+
output.info('No members found');
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
output.table(['User ID', 'Username', 'Email', 'Added At'], data.items.map((m) => [
|
|
226
|
+
m.userId,
|
|
227
|
+
m.username,
|
|
228
|
+
m.email ?? '-',
|
|
229
|
+
new Date(m.addedAt).toLocaleDateString(),
|
|
230
|
+
]));
|
|
231
|
+
output.info(`Total: ${data.pagination.total} member(s)`);
|
|
232
|
+
}
|
|
233
|
+
catch (err) {
|
|
234
|
+
spinner.fail('Error fetching members');
|
|
235
|
+
output.error(err instanceof Error ? err.message : 'Unknown error');
|
|
236
|
+
process.exit(1);
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
// Add member
|
|
240
|
+
members
|
|
241
|
+
.command('add <groupId> <userId>')
|
|
242
|
+
.description('Add user to group')
|
|
243
|
+
.action(async (groupId, userId) => {
|
|
244
|
+
const spinner = ora('Adding member...').start();
|
|
245
|
+
try {
|
|
246
|
+
const data = await client.post(`/v1/sso/groups/${groupId}/members`, {
|
|
247
|
+
user_id: userId,
|
|
248
|
+
});
|
|
249
|
+
spinner.succeed('Member added successfully');
|
|
250
|
+
output.keyValue({
|
|
251
|
+
'User ID': data.userId,
|
|
252
|
+
'Username': data.username,
|
|
253
|
+
'Added At': new Date(data.addedAt).toLocaleString(),
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
catch (err) {
|
|
257
|
+
spinner.fail('Error adding member');
|
|
258
|
+
output.error(err instanceof Error ? err.message : 'Unknown error');
|
|
259
|
+
process.exit(1);
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
// Remove member
|
|
263
|
+
members
|
|
264
|
+
.command('remove <groupId> <userId>')
|
|
265
|
+
.description('Remove user from group')
|
|
266
|
+
.option('-y, --yes', 'Skip confirmation')
|
|
267
|
+
.action(async (groupId, userId, options) => {
|
|
268
|
+
try {
|
|
269
|
+
if (!options.yes) {
|
|
270
|
+
const confirmed = await promptConfirm(`Remove user ${userId} from group?`);
|
|
271
|
+
if (!confirmed) {
|
|
272
|
+
output.info('Cancelled');
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
const spinner = ora('Removing member...').start();
|
|
277
|
+
await client.delete(`/v1/sso/groups/${groupId}/members/${userId}`);
|
|
278
|
+
spinner.succeed('Member removed successfully');
|
|
279
|
+
}
|
|
280
|
+
catch (err) {
|
|
281
|
+
output.error(err instanceof Error ? err.message : 'Unknown error');
|
|
282
|
+
process.exit(1);
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
// ---------------------------------------------------------------------------
|
|
286
|
+
// My Groups
|
|
287
|
+
// ---------------------------------------------------------------------------
|
|
288
|
+
group
|
|
289
|
+
.command('my-groups')
|
|
290
|
+
.description('List groups you belong to')
|
|
291
|
+
.option('--json', 'Output as JSON')
|
|
292
|
+
.action(async (options) => {
|
|
293
|
+
const spinner = ora('Fetching your groups...').start();
|
|
294
|
+
try {
|
|
295
|
+
const data = await client.get('/v1/sso/my-groups');
|
|
296
|
+
spinner.stop();
|
|
297
|
+
if (options.json) {
|
|
298
|
+
output.json(data);
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
if (data.groups.length === 0) {
|
|
302
|
+
output.info('You are not a member of any groups');
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
output.table(['ID', 'Name', 'Display Name'], data.groups.map((g) => [
|
|
306
|
+
g.id,
|
|
307
|
+
g.name,
|
|
308
|
+
g.displayName ?? '-',
|
|
309
|
+
]));
|
|
310
|
+
output.info(`Total: ${data.groups.length} group(s)`);
|
|
311
|
+
}
|
|
312
|
+
catch (err) {
|
|
313
|
+
spinner.fail('Error fetching groups');
|
|
314
|
+
output.error(err instanceof Error ? err.message : 'Unknown error');
|
|
315
|
+
process.exit(1);
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
//# sourceMappingURL=group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../src/commands/group.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap-token.d.ts","sourceRoot":"","sources":["../../../src/commands/host/bootstrap-token.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"bootstrap-token.d.ts","sourceRoot":"","sources":["../../../src/commands/host/bootstrap-token.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAiGtE"}
|
|
@@ -13,6 +13,7 @@ export function registerBootstrapTokenCommand(parentCmd) {
|
|
|
13
13
|
.alias('token')
|
|
14
14
|
.description('Generate a bootstrap token for a host')
|
|
15
15
|
.option('-e, --expires <duration>', 'Token expiration (e.g., 1h, 24h, 7d)', '24h')
|
|
16
|
+
.option('-a, --agent-hostname <hostname>', 'Agent hostname (for multi-host templates, defaults to host config name)')
|
|
16
17
|
.option('--json', 'Output as JSON')
|
|
17
18
|
.action(async (hostname, options) => {
|
|
18
19
|
// Parse expiration
|
|
@@ -27,35 +28,52 @@ export function registerBootstrapTokenCommand(parentCmd) {
|
|
|
27
28
|
}
|
|
28
29
|
const spinner = ora('Generating bootstrap token...').start();
|
|
29
30
|
try {
|
|
30
|
-
|
|
31
|
+
// Build request body
|
|
32
|
+
const body = { expiresAt };
|
|
33
|
+
if (options.agentHostname) {
|
|
34
|
+
body.agentHostname = options.agentHostname;
|
|
35
|
+
}
|
|
36
|
+
const response = await mode.apiPost(`/v1/hosts/${encodeURIComponent(hostname)}/bootstrap-token`, body);
|
|
31
37
|
spinner.succeed('Bootstrap token generated');
|
|
32
38
|
if (options.json) {
|
|
33
39
|
output.json(response);
|
|
34
40
|
return;
|
|
35
41
|
}
|
|
36
|
-
//
|
|
37
|
-
const
|
|
42
|
+
// Use bootstrapUrl directly (now includes token and hostname)
|
|
43
|
+
const bootstrapUrl = response.bootstrapUrl;
|
|
44
|
+
const agentHostname = response.agentHostname;
|
|
45
|
+
const isMultiHost = agentHostname !== hostname;
|
|
38
46
|
console.log();
|
|
39
|
-
|
|
47
|
+
if (isMultiHost) {
|
|
48
|
+
output.section(`Bootstrap Token for ${agentHostname} (template: ${hostname})`);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
output.section('Bootstrap Token for ' + hostname);
|
|
52
|
+
}
|
|
40
53
|
console.log();
|
|
41
|
-
|
|
54
|
+
const tokenInfo = {
|
|
42
55
|
'Token': response.token,
|
|
43
56
|
'Expires': new Date(response.expiresAt).toLocaleString(),
|
|
44
|
-
}
|
|
57
|
+
};
|
|
58
|
+
if (isMultiHost) {
|
|
59
|
+
tokenInfo['Host Config'] = hostname;
|
|
60
|
+
tokenInfo['Agent Hostname'] = agentHostname;
|
|
61
|
+
}
|
|
62
|
+
output.keyValue(tokenInfo);
|
|
45
63
|
console.log();
|
|
46
64
|
output.section('Quick Start (One Command)');
|
|
47
65
|
console.log();
|
|
48
66
|
console.log(' Run this on the target server to install and configure the agent:');
|
|
49
67
|
console.log();
|
|
50
|
-
console.log(` curl -sL "${
|
|
68
|
+
console.log(` curl -sL "${bootstrapUrl}" | sudo bash`);
|
|
51
69
|
console.log();
|
|
52
70
|
output.section('Review First (Recommended)');
|
|
53
71
|
console.log();
|
|
54
72
|
console.log(' Download the script, review it, then run:');
|
|
55
73
|
console.log();
|
|
56
|
-
console.log(` curl -sL "${
|
|
57
|
-
console.log(` less bootstrap-${
|
|
58
|
-
console.log(` sudo bash bootstrap-${
|
|
74
|
+
console.log(` curl -sL "${bootstrapUrl}" -o bootstrap-${agentHostname}.sh`);
|
|
75
|
+
console.log(` less bootstrap-${agentHostname}.sh`);
|
|
76
|
+
console.log(` sudo bash bootstrap-${agentHostname}.sh`);
|
|
59
77
|
console.log();
|
|
60
78
|
output.section('Alternative: Manual Installation');
|
|
61
79
|
console.log();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap-token.js","sourceRoot":"","sources":["../../../src/commands/host/bootstrap-token.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,oCAAoC;AAGpC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,SAAkB;IAC9D,SAAS;SACN,OAAO,CAAC,4BAA4B,CAAC;SACrC,KAAK,CAAC,OAAO,CAAC;SACd,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,0BAA0B,EAAE,sCAAsC,EAAE,KAAK,CAAC;SACjF,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,OAA8B,EAAE,EAAE;QACjE,mBAAmB;QACnB,IAAI,SAAiB,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;YAC/D,SAAS,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;QAE7D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CACjC,aAAa,kBAAkB,CAAC,QAAQ,CAAC,kBAAkB,EAC3D,
|
|
1
|
+
{"version":3,"file":"bootstrap-token.js","sourceRoot":"","sources":["../../../src/commands/host/bootstrap-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { InitCAOptions } from './types.js';
|
|
2
|
+
export declare function getStatus(options: {
|
|
3
|
+
json?: boolean;
|
|
4
|
+
}): Promise<void>;
|
|
5
|
+
export declare function initCA(options: InitCAOptions): Promise<void>;
|
|
6
|
+
export declare function deleteCA(options: {
|
|
7
|
+
force?: boolean;
|
|
8
|
+
json?: boolean;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
export declare function getPublicKey(options: {
|
|
11
|
+
raw?: boolean;
|
|
12
|
+
json?: boolean;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=ca.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ca.d.ts","sourceRoot":"","sources":["../../../src/commands/ssh-ca/ca.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAsB,aAAa,EAAE,MAAM,YAAY,CAAC;AAGpE,wBAAsB,SAAS,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC1E;AAED,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuElE;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B1F;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC5F"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
// Path: src/commands/ssh-ca/ca.ts
|
|
2
|
+
/**
|
|
3
|
+
* SSH CA management commands
|
|
4
|
+
*/
|
|
5
|
+
import ora from 'ora';
|
|
6
|
+
import inquirer from 'inquirer';
|
|
7
|
+
import { client } from '../../lib/client.js';
|
|
8
|
+
import * as output from '../../lib/output.js';
|
|
9
|
+
import { formatTtl, formatKeyType, parseExtensions } from './helpers.js';
|
|
10
|
+
export async function getStatus(options) {
|
|
11
|
+
const spinner = ora('Fetching CA status...').start();
|
|
12
|
+
try {
|
|
13
|
+
const response = await client.get('/v1/ssh/ca');
|
|
14
|
+
spinner.stop();
|
|
15
|
+
if (options.json) {
|
|
16
|
+
output.json(response);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (!response.initialized) {
|
|
20
|
+
output.warn('SSH CA is not initialized.');
|
|
21
|
+
output.info('Run: znvault ssh-ca init');
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
output.keyValue({
|
|
25
|
+
'Status': 'Initialized',
|
|
26
|
+
'Key Type': formatKeyType(response.keyType),
|
|
27
|
+
'Fingerprint': response.fingerprint ?? '-',
|
|
28
|
+
'Default TTL': formatTtl(response.defaultTtlSeconds),
|
|
29
|
+
'Max TTL': formatTtl(response.maxTtlSeconds),
|
|
30
|
+
'Extensions': response.allowedExtensions?.join(', ') ?? '-',
|
|
31
|
+
'Total Certificates': String(response.totalCertificatesIssued ?? 0),
|
|
32
|
+
'Active Certificates': String(response.activeCertificates ?? 0),
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
spinner.fail('Failed to get CA status');
|
|
37
|
+
output.error(err instanceof Error ? err.message : String(err));
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export async function initCA(options) {
|
|
42
|
+
// Interactive prompts if options not provided
|
|
43
|
+
const keyType = options.keyType ?? (await inquirer.prompt([{
|
|
44
|
+
type: 'list',
|
|
45
|
+
name: 'keyType',
|
|
46
|
+
message: 'Key type:',
|
|
47
|
+
choices: [
|
|
48
|
+
{ name: 'Ed25519 (recommended)', value: 'ed25519' },
|
|
49
|
+
{ name: 'RSA-4096', value: 'rsa-4096' },
|
|
50
|
+
],
|
|
51
|
+
default: 'ed25519',
|
|
52
|
+
}])).keyType;
|
|
53
|
+
const defaultTtl = options.defaultTtl ? parseInt(options.defaultTtl, 10) : (await inquirer.prompt([{
|
|
54
|
+
type: 'number',
|
|
55
|
+
name: 'ttl',
|
|
56
|
+
message: 'Default TTL (seconds):',
|
|
57
|
+
default: 28800, // 8 hours
|
|
58
|
+
}])).ttl;
|
|
59
|
+
const maxTtl = options.maxTtl ? parseInt(options.maxTtl, 10) : (await inquirer.prompt([{
|
|
60
|
+
type: 'number',
|
|
61
|
+
name: 'ttl',
|
|
62
|
+
message: 'Maximum TTL (seconds):',
|
|
63
|
+
default: 86400, // 24 hours
|
|
64
|
+
}])).ttl;
|
|
65
|
+
const extensionsInput = options.extensions ?? (await inquirer.prompt([{
|
|
66
|
+
type: 'input',
|
|
67
|
+
name: 'ext',
|
|
68
|
+
message: 'Allowed extensions (comma-separated):',
|
|
69
|
+
default: 'permit-pty,permit-port-forwarding',
|
|
70
|
+
}])).ext;
|
|
71
|
+
const extensions = parseExtensions(extensionsInput);
|
|
72
|
+
const spinner = ora('Initializing SSH CA...').start();
|
|
73
|
+
try {
|
|
74
|
+
const response = await client.post('/v1/ssh/ca', {
|
|
75
|
+
keyType,
|
|
76
|
+
defaultTtlSeconds: defaultTtl,
|
|
77
|
+
maxTtlSeconds: maxTtl,
|
|
78
|
+
allowedExtensions: extensions,
|
|
79
|
+
});
|
|
80
|
+
spinner.succeed('SSH CA initialized successfully');
|
|
81
|
+
if (options.json) {
|
|
82
|
+
output.json(response);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
output.keyValue({
|
|
86
|
+
'ID': response.id,
|
|
87
|
+
'Key Type': formatKeyType(response.keyType),
|
|
88
|
+
'Fingerprint': response.fingerprint,
|
|
89
|
+
'Default TTL': formatTtl(response.defaultTtlSeconds),
|
|
90
|
+
'Max TTL': formatTtl(response.maxTtlSeconds),
|
|
91
|
+
'Extensions': response.allowedExtensions.join(', '),
|
|
92
|
+
});
|
|
93
|
+
console.log();
|
|
94
|
+
output.info('Next steps:');
|
|
95
|
+
output.info(' 1. Create principal mappings: znvault ssh-ca mapping create');
|
|
96
|
+
output.info(' 2. Create server groups: znvault ssh-ca server-group create');
|
|
97
|
+
output.info(' 3. Configure servers with CA public key: znvault ssh-ca public-key --raw');
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
spinner.fail('Failed to initialize CA');
|
|
101
|
+
output.error(err instanceof Error ? err.message : String(err));
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
export async function deleteCA(options) {
|
|
106
|
+
if (!options.force) {
|
|
107
|
+
const { confirm } = await inquirer.prompt([{
|
|
108
|
+
type: 'confirm',
|
|
109
|
+
name: 'confirm',
|
|
110
|
+
message: 'Are you sure you want to delete the SSH CA? This will invalidate all issued certificates.',
|
|
111
|
+
default: false,
|
|
112
|
+
}]);
|
|
113
|
+
if (!confirm) {
|
|
114
|
+
output.info('Operation cancelled.');
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const spinner = ora('Deleting SSH CA...').start();
|
|
119
|
+
try {
|
|
120
|
+
await client.delete('/v1/ssh/ca');
|
|
121
|
+
spinner.succeed('SSH CA deleted successfully');
|
|
122
|
+
if (options.json) {
|
|
123
|
+
output.json({ success: true });
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
spinner.fail('Failed to delete CA');
|
|
128
|
+
output.error(err instanceof Error ? err.message : String(err));
|
|
129
|
+
process.exit(1);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
export async function getPublicKey(options) {
|
|
133
|
+
const spinner = ora('Fetching CA public key...').start();
|
|
134
|
+
try {
|
|
135
|
+
const response = await client.get('/v1/ssh/ca');
|
|
136
|
+
spinner.stop();
|
|
137
|
+
if (!response.initialized || !response.publicKey) {
|
|
138
|
+
output.error('SSH CA is not initialized.');
|
|
139
|
+
process.exit(1);
|
|
140
|
+
}
|
|
141
|
+
if (options.raw) {
|
|
142
|
+
console.log(response.publicKey);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
if (options.json) {
|
|
146
|
+
output.json({
|
|
147
|
+
publicKey: response.publicKey,
|
|
148
|
+
fingerprint: response.fingerprint,
|
|
149
|
+
keyType: response.keyType,
|
|
150
|
+
});
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
output.keyValue({
|
|
154
|
+
'Fingerprint': response.fingerprint ?? '-',
|
|
155
|
+
'Key Type': formatKeyType(response.keyType),
|
|
156
|
+
});
|
|
157
|
+
console.log();
|
|
158
|
+
console.log('Public Key:');
|
|
159
|
+
console.log(response.publicKey);
|
|
160
|
+
console.log();
|
|
161
|
+
output.info('Add this to your servers\' /etc/ssh/trusted-user-ca-keys.pub');
|
|
162
|
+
}
|
|
163
|
+
catch (err) {
|
|
164
|
+
spinner.fail('Failed to get CA public key');
|
|
165
|
+
output.error(err instanceof Error ? err.message : String(err));
|
|
166
|
+
process.exit(1);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=ca.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ca.js","sourceRoot":"","sources":["../../../src/commands/ssh-ca/ca.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CertListOptions, RevokeOptions } from './types.js';
|
|
2
|
+
export declare function listCertificates(options: CertListOptions): Promise<void>;
|
|
3
|
+
export declare function getCertificate(certId: string, options: {
|
|
4
|
+
json?: boolean;
|
|
5
|
+
}): Promise<void>;
|
|
6
|
+
export declare function revokeCertificate(certId: string, options: RevokeOptions): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=certificates.d.ts.map
|