@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,346 @@
|
|
|
1
|
+
// Path: zn-vault-agent/src/commands/setup.ts
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { execSync } from 'child_process';
|
|
4
|
+
import { existsSync, mkdirSync, writeFileSync, unlinkSync, copyFileSync } from 'fs';
|
|
5
|
+
import { dirname, join } from 'path';
|
|
6
|
+
import { fileURLToPath } from 'url';
|
|
7
|
+
const SYSTEM_USER = 'zn-vault-agent';
|
|
8
|
+
const SERVICE_NAME = 'zn-vault-agent';
|
|
9
|
+
const CONFIG_DIR = '/etc/zn-vault-agent';
|
|
10
|
+
const DATA_DIR = '/var/lib/zn-vault-agent';
|
|
11
|
+
const LOG_DIR = '/var/log/zn-vault-agent';
|
|
12
|
+
const CERT_DIR = '/etc/ssl/znvault';
|
|
13
|
+
const SERVICE_FILE = `/etc/systemd/system/${SERVICE_NAME}.service`;
|
|
14
|
+
export function registerSetupCommand(program) {
|
|
15
|
+
program
|
|
16
|
+
.command('setup')
|
|
17
|
+
.description('Install systemd service and create directories')
|
|
18
|
+
.option('--uninstall', 'Remove systemd service and optionally config')
|
|
19
|
+
.option('--purge', 'Also remove configuration (only with --uninstall)')
|
|
20
|
+
.option('--skip-user', 'Skip creating system user')
|
|
21
|
+
.option('-y, --yes', 'Skip confirmation prompts')
|
|
22
|
+
.addHelpText('after', `
|
|
23
|
+
Examples:
|
|
24
|
+
# Install systemd service (requires root)
|
|
25
|
+
sudo zn-vault-agent setup
|
|
26
|
+
|
|
27
|
+
# Remove systemd service but keep config
|
|
28
|
+
sudo zn-vault-agent setup --uninstall
|
|
29
|
+
|
|
30
|
+
# Remove everything including config
|
|
31
|
+
sudo zn-vault-agent setup --uninstall --purge
|
|
32
|
+
`)
|
|
33
|
+
.action(async (options) => {
|
|
34
|
+
// Check for root
|
|
35
|
+
if (process.getuid && process.getuid() !== 0) {
|
|
36
|
+
console.error(chalk.red('This command requires root. Run with sudo.'));
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
if (options.uninstall) {
|
|
40
|
+
await handleUninstall(options);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
await handleInstall(options);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
async function handleInstall(options) {
|
|
48
|
+
console.log();
|
|
49
|
+
console.log(chalk.bold('ZN-Vault Agent Setup'));
|
|
50
|
+
console.log();
|
|
51
|
+
// Confirm installation
|
|
52
|
+
if (!options.yes) {
|
|
53
|
+
console.log('This will:');
|
|
54
|
+
console.log(` - Create system user: ${SYSTEM_USER}`);
|
|
55
|
+
console.log(` - Create directories:`);
|
|
56
|
+
console.log(` ${CONFIG_DIR}/`);
|
|
57
|
+
console.log(` ${DATA_DIR}/`);
|
|
58
|
+
console.log(` ${LOG_DIR}/`);
|
|
59
|
+
console.log(` ${CERT_DIR}/`);
|
|
60
|
+
console.log(` - Install systemd service: ${SERVICE_NAME}`);
|
|
61
|
+
console.log();
|
|
62
|
+
const inquirer = await import('inquirer');
|
|
63
|
+
const { confirm } = await inquirer.default.prompt([
|
|
64
|
+
{
|
|
65
|
+
type: 'confirm',
|
|
66
|
+
name: 'confirm',
|
|
67
|
+
message: 'Proceed with installation?',
|
|
68
|
+
default: true,
|
|
69
|
+
},
|
|
70
|
+
]);
|
|
71
|
+
if (!confirm) {
|
|
72
|
+
console.log('Installation cancelled.');
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
console.log();
|
|
77
|
+
// Step 1: Create system user
|
|
78
|
+
if (!options.skipUser) {
|
|
79
|
+
try {
|
|
80
|
+
// Check if user exists
|
|
81
|
+
execSync(`id ${SYSTEM_USER}`, { stdio: 'pipe' });
|
|
82
|
+
console.log(chalk.gray(`User ${SYSTEM_USER} already exists`));
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
console.log(`Creating user ${SYSTEM_USER}...`);
|
|
86
|
+
try {
|
|
87
|
+
execSync(`useradd --system --no-create-home --shell /sbin/nologin ${SYSTEM_USER}`, { stdio: 'inherit' });
|
|
88
|
+
console.log(chalk.green(` Created user ${SYSTEM_USER}`));
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
console.log(chalk.yellow(` Could not create user (might already exist)`));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Step 2: Create directories
|
|
96
|
+
const directories = [
|
|
97
|
+
{ path: CONFIG_DIR, mode: 0o755 },
|
|
98
|
+
{ path: DATA_DIR, mode: 0o750 },
|
|
99
|
+
{ path: LOG_DIR, mode: 0o750 },
|
|
100
|
+
{ path: CERT_DIR, mode: 0o750 },
|
|
101
|
+
];
|
|
102
|
+
for (const dir of directories) {
|
|
103
|
+
if (!existsSync(dir.path)) {
|
|
104
|
+
console.log(`Creating ${dir.path}/...`);
|
|
105
|
+
mkdirSync(dir.path, { recursive: true, mode: dir.mode });
|
|
106
|
+
execSync(`chown ${SYSTEM_USER}:${SYSTEM_USER} ${dir.path}`);
|
|
107
|
+
console.log(chalk.green(` Created ${dir.path}/`));
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
console.log(chalk.gray(`${dir.path}/ already exists`));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// Step 3: Create config template if not exists
|
|
114
|
+
const envFile = join(CONFIG_DIR, 'agent.env');
|
|
115
|
+
if (!existsSync(envFile)) {
|
|
116
|
+
console.log(`Creating ${envFile}...`);
|
|
117
|
+
writeFileSync(envFile, `# ZN-Vault Agent Configuration
|
|
118
|
+
# See: zn-vault-agent --help
|
|
119
|
+
|
|
120
|
+
# Logging
|
|
121
|
+
LOG_LEVEL=info
|
|
122
|
+
|
|
123
|
+
# Auto-update settings (optional)
|
|
124
|
+
# AUTO_UPDATE=true
|
|
125
|
+
# AUTO_UPDATE_INTERVAL=300
|
|
126
|
+
# AUTO_UPDATE_CHANNEL=latest
|
|
127
|
+
`, { mode: 0o640 });
|
|
128
|
+
execSync(`chown ${SYSTEM_USER}:${SYSTEM_USER} ${envFile}`);
|
|
129
|
+
console.log(chalk.green(` Created ${envFile}`));
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
console.log(chalk.gray(`${envFile} already exists`));
|
|
133
|
+
}
|
|
134
|
+
// Step 4: Copy systemd service file
|
|
135
|
+
console.log(`Installing systemd service...`);
|
|
136
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
137
|
+
const __dirname = dirname(__filename);
|
|
138
|
+
// Try to find the service file in the package
|
|
139
|
+
const possiblePaths = [
|
|
140
|
+
join(__dirname, '..', '..', 'deploy', 'systemd', 'zn-vault-agent.service'),
|
|
141
|
+
join(__dirname, '..', 'deploy', 'systemd', 'zn-vault-agent.service'),
|
|
142
|
+
'/usr/local/lib/node_modules/@zincapp/zn-vault-agent/deploy/systemd/zn-vault-agent.service',
|
|
143
|
+
];
|
|
144
|
+
let sourceServiceFile = null;
|
|
145
|
+
for (const p of possiblePaths) {
|
|
146
|
+
if (existsSync(p)) {
|
|
147
|
+
sourceServiceFile = p;
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (sourceServiceFile) {
|
|
152
|
+
copyFileSync(sourceServiceFile, SERVICE_FILE);
|
|
153
|
+
console.log(chalk.green(` Installed ${SERVICE_FILE}`));
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// Generate service file inline
|
|
157
|
+
const serviceContent = generateServiceFile();
|
|
158
|
+
writeFileSync(SERVICE_FILE, serviceContent, { mode: 0o644 });
|
|
159
|
+
console.log(chalk.green(` Generated ${SERVICE_FILE}`));
|
|
160
|
+
}
|
|
161
|
+
// Step 5: Reload systemd
|
|
162
|
+
console.log('Reloading systemd...');
|
|
163
|
+
execSync('systemctl daemon-reload', { stdio: 'inherit' });
|
|
164
|
+
console.log(chalk.green(' systemd reloaded'));
|
|
165
|
+
// Enable service (but don't start)
|
|
166
|
+
console.log('Enabling service...');
|
|
167
|
+
execSync(`systemctl enable ${SERVICE_NAME}`, { stdio: 'inherit' });
|
|
168
|
+
console.log(chalk.green(` ${SERVICE_NAME} enabled`));
|
|
169
|
+
console.log();
|
|
170
|
+
console.log(chalk.green.bold('Setup complete!'));
|
|
171
|
+
console.log();
|
|
172
|
+
console.log('Next steps:');
|
|
173
|
+
console.log(` 1. Configure the agent: ${chalk.cyan('zn-vault-agent login')}`);
|
|
174
|
+
console.log(` 2. Add certificates: ${chalk.cyan('zn-vault-agent certs add')}`);
|
|
175
|
+
console.log(` 3. Start the service: ${chalk.cyan(`sudo systemctl start ${SERVICE_NAME}`)}`);
|
|
176
|
+
console.log(` 4. Check status: ${chalk.cyan(`sudo systemctl status ${SERVICE_NAME}`)}`);
|
|
177
|
+
console.log();
|
|
178
|
+
}
|
|
179
|
+
async function handleUninstall(options) {
|
|
180
|
+
console.log();
|
|
181
|
+
console.log(chalk.bold('ZN-Vault Agent Uninstall'));
|
|
182
|
+
console.log();
|
|
183
|
+
// Confirm uninstall
|
|
184
|
+
if (!options.yes) {
|
|
185
|
+
console.log('This will:');
|
|
186
|
+
console.log(` - Stop and disable systemd service: ${SERVICE_NAME}`);
|
|
187
|
+
console.log(` - Remove service file: ${SERVICE_FILE}`);
|
|
188
|
+
if (options.purge) {
|
|
189
|
+
console.log(chalk.yellow(` - Remove configuration: ${CONFIG_DIR}/`));
|
|
190
|
+
console.log(chalk.yellow(` - Remove data: ${DATA_DIR}/`));
|
|
191
|
+
console.log(chalk.yellow(` - Remove logs: ${LOG_DIR}/`));
|
|
192
|
+
}
|
|
193
|
+
console.log();
|
|
194
|
+
const inquirer = await import('inquirer');
|
|
195
|
+
const { confirm } = await inquirer.default.prompt([
|
|
196
|
+
{
|
|
197
|
+
type: 'confirm',
|
|
198
|
+
name: 'confirm',
|
|
199
|
+
message: options.purge
|
|
200
|
+
? 'Are you sure? This will remove all configuration and data!'
|
|
201
|
+
: 'Proceed with uninstall?',
|
|
202
|
+
default: false,
|
|
203
|
+
},
|
|
204
|
+
]);
|
|
205
|
+
if (!confirm) {
|
|
206
|
+
console.log('Uninstall cancelled.');
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
console.log();
|
|
211
|
+
// Stop service
|
|
212
|
+
try {
|
|
213
|
+
console.log('Stopping service...');
|
|
214
|
+
execSync(`systemctl stop ${SERVICE_NAME}`, { stdio: 'pipe' });
|
|
215
|
+
console.log(chalk.green(` ${SERVICE_NAME} stopped`));
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
console.log(chalk.gray(' Service not running'));
|
|
219
|
+
}
|
|
220
|
+
// Disable service
|
|
221
|
+
try {
|
|
222
|
+
console.log('Disabling service...');
|
|
223
|
+
execSync(`systemctl disable ${SERVICE_NAME}`, { stdio: 'pipe' });
|
|
224
|
+
console.log(chalk.green(` ${SERVICE_NAME} disabled`));
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
console.log(chalk.gray(' Service not enabled'));
|
|
228
|
+
}
|
|
229
|
+
// Remove service file
|
|
230
|
+
if (existsSync(SERVICE_FILE)) {
|
|
231
|
+
console.log(`Removing ${SERVICE_FILE}...`);
|
|
232
|
+
unlinkSync(SERVICE_FILE);
|
|
233
|
+
console.log(chalk.green(` Removed ${SERVICE_FILE}`));
|
|
234
|
+
}
|
|
235
|
+
// Reload systemd
|
|
236
|
+
console.log('Reloading systemd...');
|
|
237
|
+
execSync('systemctl daemon-reload', { stdio: 'inherit' });
|
|
238
|
+
// Purge if requested
|
|
239
|
+
if (options.purge) {
|
|
240
|
+
const dirsToRemove = [CONFIG_DIR, DATA_DIR, LOG_DIR];
|
|
241
|
+
for (const dir of dirsToRemove) {
|
|
242
|
+
if (existsSync(dir)) {
|
|
243
|
+
console.log(`Removing ${dir}/...`);
|
|
244
|
+
execSync(`rm -rf ${dir}`, { stdio: 'inherit' });
|
|
245
|
+
console.log(chalk.green(` Removed ${dir}/`));
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
console.log();
|
|
250
|
+
console.log(chalk.green.bold('Uninstall complete!'));
|
|
251
|
+
if (!options.purge) {
|
|
252
|
+
console.log();
|
|
253
|
+
console.log(chalk.gray(`Configuration preserved in ${CONFIG_DIR}/`));
|
|
254
|
+
console.log(chalk.gray(`Data preserved in ${DATA_DIR}/`));
|
|
255
|
+
console.log(chalk.gray('Use --purge to remove all data.'));
|
|
256
|
+
}
|
|
257
|
+
console.log();
|
|
258
|
+
}
|
|
259
|
+
function generateServiceFile() {
|
|
260
|
+
// Find the binary path
|
|
261
|
+
let binPath = '/usr/local/bin/zn-vault-agent';
|
|
262
|
+
try {
|
|
263
|
+
const result = execSync('which zn-vault-agent', { encoding: 'utf-8', stdio: 'pipe' });
|
|
264
|
+
binPath = result.trim();
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
// Use default
|
|
268
|
+
}
|
|
269
|
+
return `[Unit]
|
|
270
|
+
Description=ZN-Vault Certificate Agent
|
|
271
|
+
Documentation=https://github.com/zincapp/zn-vault
|
|
272
|
+
After=network-online.target
|
|
273
|
+
Wants=network-online.target
|
|
274
|
+
|
|
275
|
+
[Service]
|
|
276
|
+
Type=simple
|
|
277
|
+
User=${SYSTEM_USER}
|
|
278
|
+
Group=${SYSTEM_USER}
|
|
279
|
+
|
|
280
|
+
# Working directory
|
|
281
|
+
WorkingDirectory=${DATA_DIR}
|
|
282
|
+
|
|
283
|
+
# Main executable
|
|
284
|
+
ExecStart=${binPath} start --health-port 9100
|
|
285
|
+
|
|
286
|
+
# Restart policy
|
|
287
|
+
Restart=always
|
|
288
|
+
RestartSec=5
|
|
289
|
+
StartLimitInterval=60
|
|
290
|
+
StartLimitBurst=5
|
|
291
|
+
|
|
292
|
+
# Environment
|
|
293
|
+
EnvironmentFile=${CONFIG_DIR}/agent.env
|
|
294
|
+
EnvironmentFile=-${CONFIG_DIR}/secrets.env
|
|
295
|
+
|
|
296
|
+
# Logging
|
|
297
|
+
StandardOutput=journal
|
|
298
|
+
StandardError=journal
|
|
299
|
+
SyslogIdentifier=${SERVICE_NAME}
|
|
300
|
+
|
|
301
|
+
# Shutdown
|
|
302
|
+
TimeoutStopSec=30
|
|
303
|
+
KillMode=mixed
|
|
304
|
+
KillSignal=SIGTERM
|
|
305
|
+
|
|
306
|
+
# Security hardening
|
|
307
|
+
NoNewPrivileges=true
|
|
308
|
+
ProtectSystem=strict
|
|
309
|
+
ProtectHome=true
|
|
310
|
+
PrivateTmp=true
|
|
311
|
+
PrivateDevices=true
|
|
312
|
+
ProtectKernelTunables=true
|
|
313
|
+
ProtectKernelModules=true
|
|
314
|
+
ProtectControlGroups=true
|
|
315
|
+
RestrictNamespaces=true
|
|
316
|
+
RestrictRealtime=true
|
|
317
|
+
RestrictSUIDSGID=true
|
|
318
|
+
LockPersonality=true
|
|
319
|
+
|
|
320
|
+
# Allow writing certificates and logs
|
|
321
|
+
ReadWritePaths=${CERT_DIR}
|
|
322
|
+
ReadWritePaths=${DATA_DIR}
|
|
323
|
+
ReadWritePaths=${LOG_DIR}
|
|
324
|
+
|
|
325
|
+
# Network access
|
|
326
|
+
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX
|
|
327
|
+
|
|
328
|
+
# System call filter
|
|
329
|
+
SystemCallFilter=@system-service
|
|
330
|
+
SystemCallFilter=~@privileged @resources
|
|
331
|
+
SystemCallArchitectures=native
|
|
332
|
+
|
|
333
|
+
# Capabilities
|
|
334
|
+
CapabilityBoundingSet=
|
|
335
|
+
AmbientCapabilities=
|
|
336
|
+
|
|
337
|
+
# Resource limits
|
|
338
|
+
MemoryHigh=256M
|
|
339
|
+
MemoryMax=512M
|
|
340
|
+
LimitNOFILE=4096
|
|
341
|
+
|
|
342
|
+
[Install]
|
|
343
|
+
WantedBy=multi-user.target
|
|
344
|
+
`;
|
|
345
|
+
}
|
|
346
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiH3D"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// Path: src/commands/start.ts
|
|
2
|
+
// Start command - runs the agent daemon
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { isConfigured, loadConfig, getTargets } from '../lib/config.js';
|
|
5
|
+
import { validateConfig, formatValidationResult } from '../lib/validation.js';
|
|
6
|
+
import { startDaemon } from '../lib/websocket.js';
|
|
7
|
+
import { logger } from '../lib/logger.js';
|
|
8
|
+
import { NpmAutoUpdateService, loadUpdateConfig } from '../services/npm-auto-update.js';
|
|
9
|
+
export function registerStartCommand(program) {
|
|
10
|
+
program
|
|
11
|
+
.command('start')
|
|
12
|
+
.description('Start the certificate sync daemon')
|
|
13
|
+
.option('-v, --verbose', 'Enable verbose logging')
|
|
14
|
+
.option('--health-port <port>', 'Health/metrics HTTP server port (default: disabled)', parseInt)
|
|
15
|
+
.option('--validate', 'Validate configuration before starting')
|
|
16
|
+
.option('--foreground', 'Run in foreground (default)')
|
|
17
|
+
.option('--auto-update', 'Enable automatic updates (uses saved config)')
|
|
18
|
+
.option('--no-auto-update', 'Disable automatic updates')
|
|
19
|
+
.addHelpText('after', `
|
|
20
|
+
Examples:
|
|
21
|
+
# Start in foreground (default)
|
|
22
|
+
zn-vault-agent start
|
|
23
|
+
|
|
24
|
+
# Enable health/metrics endpoint for monitoring
|
|
25
|
+
zn-vault-agent start --health-port 9100
|
|
26
|
+
|
|
27
|
+
# Verbose logging for debugging
|
|
28
|
+
zn-vault-agent start --verbose
|
|
29
|
+
|
|
30
|
+
# Validate configuration before starting
|
|
31
|
+
zn-vault-agent start --validate
|
|
32
|
+
|
|
33
|
+
# With auto-updates enabled
|
|
34
|
+
zn-vault-agent start --health-port 9100 --auto-update
|
|
35
|
+
|
|
36
|
+
# Production setup (systemd)
|
|
37
|
+
# See docs/GUIDE.md for systemd service file
|
|
38
|
+
`)
|
|
39
|
+
.action(async (options) => {
|
|
40
|
+
// Check configuration
|
|
41
|
+
if (!isConfigured()) {
|
|
42
|
+
console.error(chalk.red('Not configured. Run: zn-vault-agent login'));
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
const config = loadConfig();
|
|
46
|
+
const targets = getTargets();
|
|
47
|
+
// Validate configuration if requested
|
|
48
|
+
if (options.validate) {
|
|
49
|
+
const result = validateConfig(config);
|
|
50
|
+
console.log(formatValidationResult(result));
|
|
51
|
+
console.log();
|
|
52
|
+
if (!result.valid) {
|
|
53
|
+
console.error(chalk.red('Configuration validation failed. Fix errors before starting.'));
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Warn if no targets
|
|
58
|
+
if (targets.length === 0) {
|
|
59
|
+
console.log(chalk.yellow('Warning: No certificate targets configured.'));
|
|
60
|
+
console.log('Run ' + chalk.cyan('zn-vault-agent add') + ' to add certificates to sync.');
|
|
61
|
+
console.log();
|
|
62
|
+
}
|
|
63
|
+
// Set log level based on verbose flag
|
|
64
|
+
if (options.verbose) {
|
|
65
|
+
process.env.LOG_LEVEL = 'debug';
|
|
66
|
+
}
|
|
67
|
+
// Print startup banner
|
|
68
|
+
console.log();
|
|
69
|
+
console.log(chalk.bold('ZN-Vault Certificate Agent'));
|
|
70
|
+
console.log();
|
|
71
|
+
console.log(` Vault: ${config.vaultUrl}`);
|
|
72
|
+
console.log(` Tenant: ${config.tenantId}`);
|
|
73
|
+
console.log(` Targets: ${targets.length} certificate(s)`);
|
|
74
|
+
console.log(` Poll: every ${config.pollInterval || 3600}s`);
|
|
75
|
+
if (options.healthPort) {
|
|
76
|
+
console.log(` Health: http://0.0.0.0:${options.healthPort}/health`);
|
|
77
|
+
console.log(` Metrics: http://0.0.0.0:${options.healthPort}/metrics`);
|
|
78
|
+
}
|
|
79
|
+
// Auto-update status
|
|
80
|
+
const updateConfig = loadUpdateConfig();
|
|
81
|
+
const autoUpdateEnabled = options.autoUpdate !== false && updateConfig.enabled;
|
|
82
|
+
console.log(` Auto-update: ${autoUpdateEnabled ? chalk.green('enabled') : 'disabled'}`);
|
|
83
|
+
console.log();
|
|
84
|
+
if (targets.length > 0) {
|
|
85
|
+
console.log(chalk.gray('Subscribed certificates:'));
|
|
86
|
+
for (const target of targets) {
|
|
87
|
+
console.log(` - ${target.name} (${target.certId.substring(0, 8)}...)`);
|
|
88
|
+
}
|
|
89
|
+
console.log();
|
|
90
|
+
}
|
|
91
|
+
console.log(chalk.gray('Starting daemon...'));
|
|
92
|
+
console.log();
|
|
93
|
+
// Start auto-update service if enabled
|
|
94
|
+
let autoUpdateService = null;
|
|
95
|
+
if (autoUpdateEnabled) {
|
|
96
|
+
logger.info('Starting npm-based auto-update service');
|
|
97
|
+
autoUpdateService = new NpmAutoUpdateService(updateConfig);
|
|
98
|
+
autoUpdateService.start();
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
await startDaemon({
|
|
102
|
+
verbose: options.verbose,
|
|
103
|
+
healthPort: options.healthPort,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
logger.error({ err }, 'Daemon error');
|
|
108
|
+
console.error(chalk.red('Daemon error:'), err instanceof Error ? err.message : String(err));
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuF5D"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { isConfigured, loadConfig, getTargets, getConfigPath } from '../lib/config.js';
|
|
3
|
+
export function registerStatusCommand(program) {
|
|
4
|
+
program
|
|
5
|
+
.command('status')
|
|
6
|
+
.description('Show agent configuration and status')
|
|
7
|
+
.option('--json', 'Output as JSON')
|
|
8
|
+
.addHelpText('after', `
|
|
9
|
+
Examples:
|
|
10
|
+
zn-vault-agent status # Human-readable status
|
|
11
|
+
zn-vault-agent status --json # JSON output for scripting
|
|
12
|
+
`)
|
|
13
|
+
.action(async (options) => {
|
|
14
|
+
const config = loadConfig();
|
|
15
|
+
const targets = getTargets();
|
|
16
|
+
if (options.json) {
|
|
17
|
+
console.log(JSON.stringify({
|
|
18
|
+
configured: isConfigured(),
|
|
19
|
+
configPath: getConfigPath(),
|
|
20
|
+
vaultUrl: config.vaultUrl,
|
|
21
|
+
tenantId: config.tenantId,
|
|
22
|
+
authMethod: config.auth.apiKey ? 'apiKey' : (config.auth.username ? 'password' : 'none'),
|
|
23
|
+
insecure: config.insecure,
|
|
24
|
+
pollInterval: config.pollInterval || 3600,
|
|
25
|
+
targets: targets.map(t => ({
|
|
26
|
+
name: t.name,
|
|
27
|
+
certId: t.certId,
|
|
28
|
+
outputs: t.outputs,
|
|
29
|
+
lastSync: t.lastSync,
|
|
30
|
+
lastFingerprint: t.lastFingerprint,
|
|
31
|
+
})),
|
|
32
|
+
}, null, 2));
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
console.log();
|
|
36
|
+
console.log(chalk.bold('ZN-Vault Agent Status'));
|
|
37
|
+
console.log();
|
|
38
|
+
if (!isConfigured()) {
|
|
39
|
+
console.log(chalk.yellow(' Status: Not configured'));
|
|
40
|
+
console.log();
|
|
41
|
+
console.log('Run ' + chalk.cyan('zn-vault-agent login') + ' to configure.');
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
console.log(chalk.green(' Status: Configured'));
|
|
45
|
+
console.log();
|
|
46
|
+
console.log(chalk.bold('Connection'));
|
|
47
|
+
console.log(` Vault URL: ${config.vaultUrl}`);
|
|
48
|
+
console.log(` Tenant ID: ${config.tenantId}`);
|
|
49
|
+
console.log(` Auth Method: ${config.auth.apiKey ? 'API Key' : 'Username/Password'}`);
|
|
50
|
+
console.log(` TLS Verify: ${config.insecure ? chalk.yellow('disabled') : chalk.green('enabled')}`);
|
|
51
|
+
console.log(` Poll Interval: ${config.pollInterval || 3600}s`);
|
|
52
|
+
console.log();
|
|
53
|
+
console.log(chalk.bold('Certificate Targets'));
|
|
54
|
+
if (targets.length === 0) {
|
|
55
|
+
console.log(' No targets configured');
|
|
56
|
+
console.log(' Run ' + chalk.cyan('zn-vault-agent add') + ' to add one.');
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
for (const target of targets) {
|
|
60
|
+
const syncStatus = target.lastSync
|
|
61
|
+
? chalk.green(`synced ${new Date(target.lastSync).toLocaleString()}`)
|
|
62
|
+
: chalk.yellow('not synced');
|
|
63
|
+
console.log();
|
|
64
|
+
console.log(` ${chalk.cyan(target.name)}`);
|
|
65
|
+
console.log(` Certificate: ${target.certId.substring(0, 8)}...`);
|
|
66
|
+
console.log(` Status: ${syncStatus}`);
|
|
67
|
+
console.log(` Outputs:`);
|
|
68
|
+
for (const [type, path] of Object.entries(target.outputs)) {
|
|
69
|
+
if (path)
|
|
70
|
+
console.log(` ${type}: ${path}`);
|
|
71
|
+
}
|
|
72
|
+
if (target.reloadCmd) {
|
|
73
|
+
console.log(` Reload: ${target.reloadCmd}`);
|
|
74
|
+
}
|
|
75
|
+
if (target.healthCheckCmd) {
|
|
76
|
+
console.log(` Health: ${target.healthCheckCmd}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
console.log();
|
|
81
|
+
console.log(chalk.gray(`Config: ${getConfigPath()}`));
|
|
82
|
+
console.log();
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+H1D"}
|