52 lines
1.2 KiB
JavaScript
Executable File
52 lines
1.2 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
const fs = require('node:fs');
|
|
const path = require('node:path');
|
|
|
|
const args = process.argv.slice(2);
|
|
const outputIdx = args.indexOf('--output');
|
|
const outputArg = outputIdx >= 0 && args[outputIdx + 1] ? args[outputIdx + 1] : 'dev/livekit.yaml';
|
|
|
|
const voiceEnabled = (process.env.VOICE_ENABLED || '').trim().toLowerCase() === 'true';
|
|
if (!voiceEnabled) {
|
|
process.exit(0);
|
|
}
|
|
|
|
const apiKey = (process.env.LIVEKIT_API_KEY || '').trim();
|
|
const apiSecret = (process.env.LIVEKIT_API_SECRET || '').trim();
|
|
const webhookUrl = (process.env.LIVEKIT_WEBHOOK_URL || '').trim();
|
|
if (!apiKey || !apiSecret || !webhookUrl) {
|
|
process.exit(0);
|
|
}
|
|
|
|
const redisUrl = (process.env.REDIS_URL || '').trim();
|
|
const redisAddr = redisUrl.replace(/^redis:\/\//, '') || 'redis:6379';
|
|
|
|
const yaml = `port: 7880
|
|
|
|
redis:
|
|
address: "${redisAddr}"
|
|
db: 0
|
|
|
|
keys:
|
|
"${apiKey}": "${apiSecret}"
|
|
|
|
rtc:
|
|
tcp_port: 7881
|
|
|
|
webhook:
|
|
api_key: "${apiKey}"
|
|
urls:
|
|
- "${webhookUrl}"
|
|
|
|
room:
|
|
auto_create: true
|
|
max_participants: 100
|
|
empty_timeout: 300
|
|
|
|
development: true
|
|
|
|
`;
|
|
const outputPath = path.resolve(outputArg);
|
|
fs.mkdirSync(path.dirname(outputPath), {recursive: true});
|
|
fs.writeFileSync(outputPath, yaml, {encoding: 'utf-8', mode: 0o600});
|