dnsweeper
Version:
Advanced CLI tool for DNS record risk analysis and cleanup. Features CSV import for Cloudflare/Route53, automated risk assessment, and parallel DNS validation.
51 lines • 2.35 kB
JavaScript
import { Command } from 'commander';
import { Logger } from '../lib/logger.js';
export function createAddCommand() {
const add = new Command('add')
.description('Add a new DNS record')
.argument('<name>', 'Record name (e.g., example.com)')
.argument('<type>', 'Record type (A, AAAA, CNAME, MX, TXT, etc.)')
.argument('<value>', 'Record value')
.option('-t, --ttl <seconds>', 'Time to live in seconds', '3600')
.option('-p, --priority <number>', 'Priority (for MX and SRV records)')
.option('-w, --weight <number>', 'Weight (for SRV records)')
.option('--port <number>', 'Port (for SRV records)')
.option('-v, --verbose', 'Show detailed output')
.option('-j, --json', 'Output as JSON')
.option('-q, --quiet', 'Suppress non-error output')
.action((name, type, value, options) => {
const logger = new Logger({ verbose: options.verbose, quiet: options.quiet });
try {
const recordType = type.toUpperCase();
logger.startSpinner(`Adding ${recordType} record for ${name}...`);
// TODO: Implement actual DNS record creation logic
const newRecord = {
id: Date.now().toString(),
name,
type: recordType,
value,
ttl: parseInt(options.ttl ?? '3600', 10),
priority: options.priority ? parseInt(options.priority, 10) : undefined,
weight: options.weight ? parseInt(options.weight, 10) : undefined,
port: options.port ? parseInt(options.port, 10) : undefined,
created: new Date(),
updated: new Date(),
};
logger.stopSpinner(true, 'DNS record added successfully');
if (options.json) {
logger.json(newRecord);
}
else {
logger.success(`Added ${recordType} record: ${name} → ${value}`);
logger.info(`TTL: ${newRecord.ttl} seconds`);
}
}
catch (error) {
logger.stopSpinner(false, 'Failed to add DNS record');
logger.error(error instanceof Error ? error.message : 'Unknown error occurred');
process.exit(1);
}
});
return add;
}
//# sourceMappingURL=add.js.map