Initial commit: tischlerctrl home automation project
This commit is contained in:
62
server/src/cli/generate-key.js
Normal file
62
server/src/cli/generate-key.js
Normal file
@@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* CLI tool to generate API keys for agents
|
||||
* Usage: node generate-key.js <name> <device_prefix>
|
||||
* Example: node generate-key.js "ac-infinity-agent" "ac:"
|
||||
*/
|
||||
|
||||
import { fileURLToPath } from 'url';
|
||||
import { dirname, join } from 'path';
|
||||
import { initDatabase } from '../db/schema.js';
|
||||
import { generateApiKey, listApiKeys } from '../db/queries.js';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
|
||||
const dbPath = process.env.DB_PATH || join(__dirname, '..', '..', 'data', 'sensors.db');
|
||||
|
||||
const args = process.argv.slice(2);
|
||||
|
||||
if (args.length === 0 || args[0] === '--list') {
|
||||
// List existing keys
|
||||
const db = initDatabase(dbPath);
|
||||
const keys = listApiKeys(db);
|
||||
|
||||
if (keys.length === 0) {
|
||||
console.log('No API keys found.');
|
||||
} else {
|
||||
console.log('\nExisting API keys:\n');
|
||||
console.log('ID | Name | Prefix | Preview | Last Used');
|
||||
console.log('-'.repeat(75));
|
||||
for (const key of keys) {
|
||||
const lastUsed = key.last_used_at || 'never';
|
||||
console.log(`${key.id.toString().padEnd(3)} | ${key.name.padEnd(20)} | ${key.device_prefix.padEnd(7)} | ${key.key_preview.padEnd(12)} | ${lastUsed}`);
|
||||
}
|
||||
}
|
||||
|
||||
console.log('\nUsage: node generate-key.js <name> <device_prefix>');
|
||||
console.log('Example: node generate-key.js "ac-infinity-agent" "ac:"');
|
||||
|
||||
db.close();
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
if (args.length < 2) {
|
||||
console.error('Error: Both name and device_prefix are required');
|
||||
console.error('Usage: node generate-key.js <name> <device_prefix>');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const [name, devicePrefix] = args;
|
||||
|
||||
const db = initDatabase(dbPath);
|
||||
const key = generateApiKey(db, name, devicePrefix);
|
||||
|
||||
console.log('\n✓ API key generated successfully!\n');
|
||||
console.log(`Name: ${name}`);
|
||||
console.log(`Device Prefix: ${devicePrefix}`);
|
||||
console.log(`API Key: ${key}`);
|
||||
console.log('\n⚠ Save this key securely - it cannot be recovered!\n');
|
||||
|
||||
db.close();
|
||||
Reference in New Issue
Block a user