49 lines
1.7 KiB
JavaScript
49 lines
1.7 KiB
JavaScript
import process from 'process';
|
|
|
|
const apiKey = process.env.API_KEY || '';
|
|
if (apiKey.length < 32) {
|
|
console.error(`FATAL: API_KEY must be at least 32 characters long, current length: ${apiKey.length}`);
|
|
process.exit(1);
|
|
}
|
|
|
|
/**
|
|
* Parses duration strings like "20s", "1m" to milliseconds.
|
|
* @param {string|undefined} val
|
|
* @param {number} defaultMs
|
|
* @returns {number}
|
|
*/
|
|
const parseDuration = (val, defaultMs) => {
|
|
if (!val) return defaultMs;
|
|
const match = val.match(/^(\d+)(s|m|h|ms)$/);
|
|
if (!match) return defaultMs;
|
|
const num = parseInt(match[1], 10);
|
|
const unit = match[2];
|
|
switch (unit) {
|
|
case 'ms': return num;
|
|
case 's': return num * 1000;
|
|
case 'm': return num * 60 * 1000;
|
|
case 'h': return num * 60 * 60 * 1000;
|
|
default: return defaultMs;
|
|
}
|
|
};
|
|
|
|
export const config = {
|
|
serverAddr: process.env.SERVER_ADDR || '127.0.0.1:47880',
|
|
apiKey: apiKey,
|
|
logLevel: process.env.LOG_LEVEL || 'info',
|
|
maxMessageBytes: parseInt(process.env.MAX_MESSAGE_BYTES || '4096', 10),
|
|
heartbeatInterval: parseDuration(process.env.HEARTBEAT_INTERVAL, 20000), // 20s
|
|
heartbeatTimeout: parseDuration(process.env.HEARTBEAT_TIMEOUT, 30000), // 30s
|
|
sessionDuration: parseDuration(process.env.SESSION_DURATION, 60000), // 60s
|
|
rateLimitPerMin: parseInt(process.env.RATE_LIMIT_PER_MIN || '10', 10),
|
|
environment: process.env.ENVIRONMENT || 'production',
|
|
dbHost: process.env.DB_HOST || '127.0.0.1',
|
|
dbPort: parseInt(process.env.DB_PORT || '3306', 10),
|
|
dbDatabase: process.env.DB_DATABASE || 'callDB',
|
|
dbUsername: process.env.DB_USERNAME || '',
|
|
dbPassword: process.env.DB_PASSWORD || '',
|
|
turnUrl: process.env.TURN_URL || '',
|
|
turnUsername: process.env.TURN_USERNAME || '',
|
|
turnCredential: process.env.TURN_CREDENTIAL || '',
|
|
};
|