@zincapp/zn-vault-agent 1.3.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 +701 -0
- package/deploy/logrotate.d/zn-vault-agent +14 -0
- package/deploy/systemd/zn-vault-agent.service +75 -0
- package/dist/commands/certs.d.ts +3 -0
- package/dist/commands/certs.d.ts.map +1 -0
- package/dist/commands/certs.js +369 -0
- package/dist/commands/certs.js.map +1 -0
- package/dist/commands/exec.d.ts +3 -0
- package/dist/commands/exec.d.ts.map +1 -0
- package/dist/commands/exec.js +193 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/login.d.ts +3 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +234 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/secrets.d.ts +3 -0
- package/dist/commands/secrets.d.ts.map +1 -0
- package/dist/commands/secrets.js +445 -0
- package/dist/commands/secrets.js.map +1 -0
- package/dist/commands/setup.d.ts +9 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +346 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/start.d.ts +3 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +113 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +85 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/sync.d.ts +3 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +126 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api.d.ts +104 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +338 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/config.d.ts +164 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +299 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/deployer.d.ts +22 -0
- package/dist/lib/deployer.d.ts.map +1 -0
- package/dist/lib/deployer.js +407 -0
- package/dist/lib/deployer.js.map +1 -0
- package/dist/lib/health.d.ts +68 -0
- package/dist/lib/health.d.ts.map +1 -0
- package/dist/lib/health.js +216 -0
- package/dist/lib/health.js.map +1 -0
- package/dist/lib/logger.d.ts +38 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +161 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/metrics.d.ts +50 -0
- package/dist/lib/metrics.d.ts.map +1 -0
- package/dist/lib/metrics.js +273 -0
- package/dist/lib/metrics.js.map +1 -0
- package/dist/lib/secret-deployer.d.ts +22 -0
- package/dist/lib/secret-deployer.d.ts.map +1 -0
- package/dist/lib/secret-deployer.js +201 -0
- package/dist/lib/secret-deployer.js.map +1 -0
- package/dist/lib/validation.d.ts +25 -0
- package/dist/lib/validation.d.ts.map +1 -0
- package/dist/lib/validation.js +257 -0
- package/dist/lib/validation.js.map +1 -0
- package/dist/lib/websocket.d.ts +74 -0
- package/dist/lib/websocket.d.ts.map +1 -0
- package/dist/lib/websocket.js +441 -0
- package/dist/lib/websocket.js.map +1 -0
- package/dist/services/api-key-renewal.d.ts +13 -0
- package/dist/services/api-key-renewal.d.ts.map +1 -0
- package/dist/services/api-key-renewal.js +204 -0
- package/dist/services/api-key-renewal.js.map +1 -0
- package/dist/services/npm-auto-update.d.ts +60 -0
- package/dist/services/npm-auto-update.d.ts.map +1 -0
- package/dist/services/npm-auto-update.js +245 -0
- package/dist/services/npm-auto-update.js.map +1 -0
- package/dist/types/update.d.ts +19 -0
- package/dist/types/update.d.ts.map +1 -0
- package/dist/types/update.js +7 -0
- package/dist/types/update.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
// Path: src/commands/secrets.ts
|
|
2
|
+
// Secret sync commands
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import ora from 'ora';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import fs from 'node:fs';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import { execSync } from 'node:child_process';
|
|
9
|
+
import { addSecretTarget, removeSecretTarget, getSecretTargets, updateSecretTargetVersion, isConfigured, } from '../lib/config.js';
|
|
10
|
+
import { listSecrets, getSecret } from '../lib/api.js';
|
|
11
|
+
/**
|
|
12
|
+
* Format secret data for output
|
|
13
|
+
*/
|
|
14
|
+
function formatSecretData(secret, format, options) {
|
|
15
|
+
const data = secret.data;
|
|
16
|
+
switch (format) {
|
|
17
|
+
case 'env': {
|
|
18
|
+
// Add underscore only if prefix doesn't already end with one
|
|
19
|
+
const rawPrefix = options.envPrefix || '';
|
|
20
|
+
const prefix = rawPrefix && !rawPrefix.endsWith('_') ? `${rawPrefix}_` : rawPrefix;
|
|
21
|
+
return Object.entries(data)
|
|
22
|
+
.map(([k, v]) => {
|
|
23
|
+
const key = `${prefix}${k.toUpperCase().replace(/[^A-Z0-9_]/g, '_')}`;
|
|
24
|
+
const value = typeof v === 'string' ? v : JSON.stringify(v);
|
|
25
|
+
// Escape special characters in value
|
|
26
|
+
const escaped = value.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n');
|
|
27
|
+
return `${key}="${escaped}"`;
|
|
28
|
+
})
|
|
29
|
+
.join('\n') + '\n';
|
|
30
|
+
}
|
|
31
|
+
case 'json':
|
|
32
|
+
return JSON.stringify(data, null, 2) + '\n';
|
|
33
|
+
case 'yaml': {
|
|
34
|
+
// Simple YAML serialization (no dependency needed for basic cases)
|
|
35
|
+
const lines = [];
|
|
36
|
+
for (const [k, v] of Object.entries(data)) {
|
|
37
|
+
if (typeof v === 'string') {
|
|
38
|
+
// Quote strings that might be problematic
|
|
39
|
+
if (v.includes('\n') || v.includes(':') || v.includes('#') || v.startsWith(' ')) {
|
|
40
|
+
lines.push(`${k}: "${v.replace(/"/g, '\\"').replace(/\n/g, '\\n')}"`);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
lines.push(`${k}: ${v}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
lines.push(`${k}: ${JSON.stringify(v)}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return lines.join('\n') + '\n';
|
|
51
|
+
}
|
|
52
|
+
case 'raw': {
|
|
53
|
+
if (!options.key) {
|
|
54
|
+
throw new Error('Key must be specified for raw format');
|
|
55
|
+
}
|
|
56
|
+
const value = data[options.key];
|
|
57
|
+
if (value === undefined) {
|
|
58
|
+
throw new Error(`Key "${options.key}" not found in secret data`);
|
|
59
|
+
}
|
|
60
|
+
return typeof value === 'string' ? value : JSON.stringify(value);
|
|
61
|
+
}
|
|
62
|
+
case 'template': {
|
|
63
|
+
if (!options.templatePath) {
|
|
64
|
+
throw new Error('Template path must be specified for template format');
|
|
65
|
+
}
|
|
66
|
+
if (!fs.existsSync(options.templatePath)) {
|
|
67
|
+
throw new Error(`Template file not found: ${options.templatePath}`);
|
|
68
|
+
}
|
|
69
|
+
let template = fs.readFileSync(options.templatePath, 'utf-8');
|
|
70
|
+
// Replace {{ key }} placeholders
|
|
71
|
+
for (const [k, v] of Object.entries(data)) {
|
|
72
|
+
const value = typeof v === 'string' ? v : JSON.stringify(v);
|
|
73
|
+
template = template.replace(new RegExp(`\\{\\{\\s*${k}\\s*\\}\\}`, 'g'), value);
|
|
74
|
+
}
|
|
75
|
+
return template;
|
|
76
|
+
}
|
|
77
|
+
default:
|
|
78
|
+
throw new Error(`Unknown format: ${format}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Write secret to file with proper permissions
|
|
83
|
+
*/
|
|
84
|
+
function writeSecretFile(filePath, content, owner, mode) {
|
|
85
|
+
// Ensure directory exists
|
|
86
|
+
const dir = path.dirname(filePath);
|
|
87
|
+
if (!fs.existsSync(dir)) {
|
|
88
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
89
|
+
}
|
|
90
|
+
// Write to temp file first (atomic)
|
|
91
|
+
const tempPath = `${filePath}.tmp.${process.pid}`;
|
|
92
|
+
fs.writeFileSync(tempPath, content, { mode: parseInt(mode || '0600', 8) });
|
|
93
|
+
// Set ownership if specified and running as root
|
|
94
|
+
if (owner && process.getuid?.() === 0) {
|
|
95
|
+
try {
|
|
96
|
+
execSync(`chown ${owner} "${tempPath}"`, { stdio: 'ignore' });
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// Ignore chown errors
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Atomic rename
|
|
103
|
+
fs.renameSync(tempPath, filePath);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Sync a single secret target
|
|
107
|
+
*/
|
|
108
|
+
async function syncSecretTarget(target) {
|
|
109
|
+
try {
|
|
110
|
+
const secret = await getSecret(target.secretId);
|
|
111
|
+
// Format the data
|
|
112
|
+
const content = formatSecretData(secret, target.format, {
|
|
113
|
+
key: target.key,
|
|
114
|
+
envPrefix: target.envPrefix,
|
|
115
|
+
templatePath: target.templatePath,
|
|
116
|
+
});
|
|
117
|
+
// Write to file
|
|
118
|
+
writeSecretFile(target.output, content, target.owner, target.mode);
|
|
119
|
+
// Update config with new version
|
|
120
|
+
updateSecretTargetVersion(target.secretId, secret.version);
|
|
121
|
+
// Run reload command if specified
|
|
122
|
+
if (target.reloadCmd) {
|
|
123
|
+
try {
|
|
124
|
+
execSync(target.reloadCmd, { stdio: 'inherit' });
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
console.error(chalk.yellow(`Warning: Reload command failed: ${err}`));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
console.error(chalk.red(`Failed to sync ${target.name}:`), err instanceof Error ? err.message : String(err));
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
export function registerSecretsCommands(program) {
|
|
138
|
+
const secretCmd = program
|
|
139
|
+
.command('secret')
|
|
140
|
+
.description('Manage secret synchronization')
|
|
141
|
+
.addHelpText('after', `
|
|
142
|
+
Examples:
|
|
143
|
+
zn-vault-agent secret available # List secrets in vault
|
|
144
|
+
zn-vault-agent secret add alias:db/creds --name db --format env --output /etc/app/db.env
|
|
145
|
+
zn-vault-agent secret list # Show configured targets
|
|
146
|
+
zn-vault-agent secret sync # Deploy all secrets
|
|
147
|
+
zn-vault-agent secret remove db # Remove a target
|
|
148
|
+
`);
|
|
149
|
+
// List available secrets in vault
|
|
150
|
+
secretCmd
|
|
151
|
+
.command('available')
|
|
152
|
+
.description('List secrets available in vault')
|
|
153
|
+
.option('--json', 'Output as JSON')
|
|
154
|
+
.addHelpText('after', `
|
|
155
|
+
Examples:
|
|
156
|
+
zn-vault-agent secret available # Human-readable list
|
|
157
|
+
zn-vault-agent secret available --json # JSON output for scripting
|
|
158
|
+
`)
|
|
159
|
+
.action(async (options) => {
|
|
160
|
+
if (!isConfigured()) {
|
|
161
|
+
console.error(chalk.red('Not configured. Run: zn-vault-agent login'));
|
|
162
|
+
process.exit(1);
|
|
163
|
+
}
|
|
164
|
+
const spinner = ora('Fetching secrets...').start();
|
|
165
|
+
try {
|
|
166
|
+
const result = await listSecrets();
|
|
167
|
+
spinner.stop();
|
|
168
|
+
if (options.json) {
|
|
169
|
+
console.log(JSON.stringify(result.items, null, 2));
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
if (result.items.length === 0) {
|
|
173
|
+
console.log('No secrets found in vault');
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
console.log();
|
|
177
|
+
console.log(chalk.bold('Available Secrets'));
|
|
178
|
+
console.log();
|
|
179
|
+
const targets = getSecretTargets();
|
|
180
|
+
const configuredIds = new Set(targets.map(t => t.secretId));
|
|
181
|
+
for (const secret of result.items) {
|
|
182
|
+
const configured = configuredIds.has(secret.id) || configuredIds.has(`alias:${secret.alias}`);
|
|
183
|
+
const status = configured ? chalk.green('✓ configured') : chalk.gray('not configured');
|
|
184
|
+
console.log(` ${secret.id.substring(0, 8)} ${secret.alias.padEnd(30)} ${status}`);
|
|
185
|
+
console.log(` ${chalk.gray(`type: ${secret.type}, v${secret.version}`)}`);
|
|
186
|
+
console.log();
|
|
187
|
+
}
|
|
188
|
+
console.log(`Total: ${result.total} secret(s)`);
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
spinner.fail('Failed to fetch secrets');
|
|
192
|
+
console.error(chalk.red('Error:'), err instanceof Error ? err.message : String(err));
|
|
193
|
+
process.exit(1);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
// Add a secret target
|
|
197
|
+
secretCmd
|
|
198
|
+
.command('add <secret-id>')
|
|
199
|
+
.description('Add a secret to sync (ID or alias:path)')
|
|
200
|
+
.option('-n, --name <name>', 'Local name for this secret')
|
|
201
|
+
.option('-f, --format <format>', 'Output format: env, json, yaml, raw, template', 'env')
|
|
202
|
+
.option('-o, --output <path>', 'Output file path')
|
|
203
|
+
.option('-k, --key <key>', 'For raw format: key to extract')
|
|
204
|
+
.option('-t, --template <path>', 'For template format: template file path')
|
|
205
|
+
.option('-p, --prefix <prefix>', 'For env format: variable name prefix')
|
|
206
|
+
.option('--owner <user:group>', 'File ownership')
|
|
207
|
+
.option('--mode <mode>', 'File permissions', '0600')
|
|
208
|
+
.option('--reload <cmd>', 'Command to run after sync')
|
|
209
|
+
.addHelpText('after', `
|
|
210
|
+
Examples:
|
|
211
|
+
# Sync to .env file
|
|
212
|
+
zn-vault-agent secret add alias:database/credentials \\
|
|
213
|
+
--name db-creds --format env --output /etc/myapp/db.env
|
|
214
|
+
|
|
215
|
+
# JSON format with reload command
|
|
216
|
+
zn-vault-agent secret add alias:app/config \\
|
|
217
|
+
--name app-config --format json --output /etc/myapp/config.json \\
|
|
218
|
+
--reload "systemctl restart myapp"
|
|
219
|
+
|
|
220
|
+
# Extract single key with raw format
|
|
221
|
+
zn-vault-agent secret add alias:api/key \\
|
|
222
|
+
--name api-key --format raw --key apiKey --output /etc/myapp/api-key.txt
|
|
223
|
+
|
|
224
|
+
# YAML with custom permissions
|
|
225
|
+
zn-vault-agent secret add alias:database/prod \\
|
|
226
|
+
--name db-yaml --format yaml --output /etc/myapp/db.yml \\
|
|
227
|
+
--owner www-data:www-data --mode 0640
|
|
228
|
+
|
|
229
|
+
# Template-based output
|
|
230
|
+
zn-vault-agent secret add alias:database/prod \\
|
|
231
|
+
--name db-template --format template \\
|
|
232
|
+
--template /etc/myapp/config.tmpl --output /etc/myapp/config.yml
|
|
233
|
+
|
|
234
|
+
# Env format with prefix
|
|
235
|
+
zn-vault-agent secret add alias:database/credentials \\
|
|
236
|
+
--name db-prefixed --format env --prefix DB --output /etc/myapp/db.env
|
|
237
|
+
`)
|
|
238
|
+
.action(async (secretId, options) => {
|
|
239
|
+
if (!isConfigured()) {
|
|
240
|
+
console.error(chalk.red('Not configured. Run: zn-vault-agent login'));
|
|
241
|
+
process.exit(1);
|
|
242
|
+
}
|
|
243
|
+
// Validate format
|
|
244
|
+
const validFormats = ['env', 'json', 'yaml', 'raw', 'template'];
|
|
245
|
+
if (!validFormats.includes(options.format)) {
|
|
246
|
+
console.error(chalk.red(`Invalid format. Must be one of: ${validFormats.join(', ')}`));
|
|
247
|
+
process.exit(1);
|
|
248
|
+
}
|
|
249
|
+
// Validate format-specific options
|
|
250
|
+
if (options.format === 'raw' && !options.key) {
|
|
251
|
+
console.error(chalk.red('--key is required for raw format'));
|
|
252
|
+
process.exit(1);
|
|
253
|
+
}
|
|
254
|
+
if (options.format === 'template' && !options.template) {
|
|
255
|
+
console.error(chalk.red('--template is required for template format'));
|
|
256
|
+
process.exit(1);
|
|
257
|
+
}
|
|
258
|
+
// Try to fetch the secret to validate it exists
|
|
259
|
+
const spinner = ora('Validating secret...').start();
|
|
260
|
+
let secret;
|
|
261
|
+
try {
|
|
262
|
+
secret = await getSecret(secretId);
|
|
263
|
+
spinner.stop();
|
|
264
|
+
}
|
|
265
|
+
catch (err) {
|
|
266
|
+
spinner.fail('Secret not found');
|
|
267
|
+
console.error(chalk.red('Error:'), err instanceof Error ? err.message : String(err));
|
|
268
|
+
process.exit(1);
|
|
269
|
+
}
|
|
270
|
+
console.log();
|
|
271
|
+
console.log(chalk.bold('Secret:'), secret.alias);
|
|
272
|
+
console.log(chalk.gray(`Type: ${secret.type}, Version: ${secret.version}`));
|
|
273
|
+
console.log(chalk.gray(`Keys: ${Object.keys(secret.data).join(', ')}`));
|
|
274
|
+
console.log();
|
|
275
|
+
// Gather configuration interactively if not all options provided
|
|
276
|
+
let name = options.name;
|
|
277
|
+
let output = options.output;
|
|
278
|
+
if (!name || !output) {
|
|
279
|
+
const answers = await inquirer.prompt([
|
|
280
|
+
{
|
|
281
|
+
type: 'input',
|
|
282
|
+
name: 'name',
|
|
283
|
+
message: 'Local name for this target:',
|
|
284
|
+
default: options.name || secret.alias.replace(/[^a-zA-Z0-9-_]/g, '-'),
|
|
285
|
+
when: !name,
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
type: 'input',
|
|
289
|
+
name: 'output',
|
|
290
|
+
message: 'Output file path:',
|
|
291
|
+
default: options.output || `/etc/secrets/${secret.alias.replace(/\//g, '-')}.${options.format === 'yaml' ? 'yml' : options.format}`,
|
|
292
|
+
when: !output,
|
|
293
|
+
},
|
|
294
|
+
]);
|
|
295
|
+
name = name || answers.name;
|
|
296
|
+
output = output || answers.output;
|
|
297
|
+
}
|
|
298
|
+
// Build target configuration
|
|
299
|
+
const target = {
|
|
300
|
+
secretId,
|
|
301
|
+
name,
|
|
302
|
+
format: options.format,
|
|
303
|
+
output,
|
|
304
|
+
key: options.key,
|
|
305
|
+
templatePath: options.template,
|
|
306
|
+
envPrefix: options.prefix,
|
|
307
|
+
owner: options.owner,
|
|
308
|
+
mode: options.mode,
|
|
309
|
+
reloadCmd: options.reload,
|
|
310
|
+
};
|
|
311
|
+
// Save target
|
|
312
|
+
addSecretTarget(target);
|
|
313
|
+
console.log(chalk.green('✓') + ` Secret target "${name}" added`);
|
|
314
|
+
console.log();
|
|
315
|
+
console.log(`Format: ${options.format}`);
|
|
316
|
+
console.log(`Output: ${output}`);
|
|
317
|
+
console.log();
|
|
318
|
+
console.log('Run ' + chalk.cyan('zn-vault-agent secret sync') + ' to deploy now');
|
|
319
|
+
});
|
|
320
|
+
// List configured secret targets
|
|
321
|
+
secretCmd
|
|
322
|
+
.command('list')
|
|
323
|
+
.description('List configured secret targets')
|
|
324
|
+
.option('--json', 'Output as JSON')
|
|
325
|
+
.addHelpText('after', `
|
|
326
|
+
Examples:
|
|
327
|
+
zn-vault-agent secret list # Human-readable list
|
|
328
|
+
zn-vault-agent secret list --json # JSON output for scripting
|
|
329
|
+
`)
|
|
330
|
+
.action(async (options) => {
|
|
331
|
+
const targets = getSecretTargets();
|
|
332
|
+
if (options.json) {
|
|
333
|
+
console.log(JSON.stringify(targets, null, 2));
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
if (targets.length === 0) {
|
|
337
|
+
console.log('No secret targets configured.');
|
|
338
|
+
console.log('Run ' + chalk.cyan('zn-vault-agent secret add <id>') + ' to add one.');
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
console.log();
|
|
342
|
+
console.log(chalk.bold('Configured Secret Targets'));
|
|
343
|
+
console.log();
|
|
344
|
+
for (const target of targets) {
|
|
345
|
+
const syncStatus = target.lastSync
|
|
346
|
+
? chalk.green(`synced ${new Date(target.lastSync).toLocaleString()}`)
|
|
347
|
+
: chalk.yellow('not synced');
|
|
348
|
+
console.log(` ${chalk.bold(target.name)}`);
|
|
349
|
+
console.log(` Secret: ${target.secretId}`);
|
|
350
|
+
console.log(` Format: ${target.format}`);
|
|
351
|
+
console.log(` Output: ${target.output}`);
|
|
352
|
+
console.log(` Status: ${syncStatus}`);
|
|
353
|
+
if (target.reloadCmd) {
|
|
354
|
+
console.log(` Reload: ${target.reloadCmd}`);
|
|
355
|
+
}
|
|
356
|
+
console.log();
|
|
357
|
+
}
|
|
358
|
+
console.log(`Total: ${targets.length} target(s)`);
|
|
359
|
+
});
|
|
360
|
+
// Remove a secret target
|
|
361
|
+
secretCmd
|
|
362
|
+
.command('remove <name>')
|
|
363
|
+
.description('Remove a secret target')
|
|
364
|
+
.option('-f, --force', 'Skip confirmation')
|
|
365
|
+
.addHelpText('after', `
|
|
366
|
+
Examples:
|
|
367
|
+
zn-vault-agent secret remove db-creds # Interactive confirmation
|
|
368
|
+
zn-vault-agent secret remove db-creds --force # Skip confirmation
|
|
369
|
+
`)
|
|
370
|
+
.action(async (name, options) => {
|
|
371
|
+
const targets = getSecretTargets();
|
|
372
|
+
const target = targets.find(t => t.name === name || t.secretId === name);
|
|
373
|
+
if (!target) {
|
|
374
|
+
console.error(chalk.red(`Target "${name}" not found`));
|
|
375
|
+
process.exit(1);
|
|
376
|
+
}
|
|
377
|
+
if (!options.force) {
|
|
378
|
+
const { confirm } = await inquirer.prompt([
|
|
379
|
+
{
|
|
380
|
+
type: 'confirm',
|
|
381
|
+
name: 'confirm',
|
|
382
|
+
message: `Remove target "${target.name}"?`,
|
|
383
|
+
default: false,
|
|
384
|
+
},
|
|
385
|
+
]);
|
|
386
|
+
if (!confirm) {
|
|
387
|
+
console.log('Cancelled');
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
removeSecretTarget(name);
|
|
392
|
+
console.log(chalk.green('✓') + ` Target "${target.name}" removed`);
|
|
393
|
+
});
|
|
394
|
+
// Sync all secret targets
|
|
395
|
+
secretCmd
|
|
396
|
+
.command('sync')
|
|
397
|
+
.description('Sync all configured secrets')
|
|
398
|
+
.option('--name <name>', 'Sync only specific target')
|
|
399
|
+
.addHelpText('after', `
|
|
400
|
+
Examples:
|
|
401
|
+
zn-vault-agent secret sync # Sync all configured secrets
|
|
402
|
+
zn-vault-agent secret sync --name db # Sync only "db" target
|
|
403
|
+
`)
|
|
404
|
+
.action(async (options) => {
|
|
405
|
+
if (!isConfigured()) {
|
|
406
|
+
console.error(chalk.red('Not configured. Run: zn-vault-agent login'));
|
|
407
|
+
process.exit(1);
|
|
408
|
+
}
|
|
409
|
+
let targets = getSecretTargets();
|
|
410
|
+
if (targets.length === 0) {
|
|
411
|
+
console.log('No secret targets configured.');
|
|
412
|
+
console.log('Run ' + chalk.cyan('zn-vault-agent secret add <id>') + ' to add one.');
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
if (options.name) {
|
|
416
|
+
targets = targets.filter(t => t.name === options.name || t.secretId === options.name);
|
|
417
|
+
if (targets.length === 0) {
|
|
418
|
+
console.error(chalk.red(`Target "${options.name}" not found`));
|
|
419
|
+
process.exit(1);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
console.log();
|
|
423
|
+
console.log(chalk.bold('Syncing secrets...'));
|
|
424
|
+
console.log();
|
|
425
|
+
let success = 0;
|
|
426
|
+
let failed = 0;
|
|
427
|
+
for (const target of targets) {
|
|
428
|
+
const spinner = ora(`Syncing ${target.name}...`).start();
|
|
429
|
+
if (await syncSecretTarget(target)) {
|
|
430
|
+
spinner.succeed(`${target.name} → ${target.output}`);
|
|
431
|
+
success++;
|
|
432
|
+
}
|
|
433
|
+
else {
|
|
434
|
+
spinner.fail(`${target.name} failed`);
|
|
435
|
+
failed++;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
console.log();
|
|
439
|
+
console.log(`Synced: ${success}, Failed: ${failed}`);
|
|
440
|
+
if (failed > 0) {
|
|
441
|
+
process.exit(1);
|
|
442
|
+
}
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
//# sourceMappingURL=secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/commands/secrets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Setup Command
|
|
3
|
+
*
|
|
4
|
+
* Installs systemd service and creates necessary directories
|
|
5
|
+
* for running zn-vault-agent as a system daemon.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
export declare function registerSetupCommand(program: Command): void;
|
|
9
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgC3D"}
|