Files
Gambling_API/lib/config.js
T
2026-09-09 10:55:40 +02:00

22 lines
1.2 KiB
JavaScript

const path = require('node:path');
function configuration(overrides = {}) {
const config = {
port: Number(process.env.PORT || 42069),
host: process.env.HOST || '127.0.0.1',
databasePath: process.env.DATABASE_PATH || path.join(__dirname, '..', 'users.sqlite'),
secret: process.env.TOKEN_SECRET,
origin: process.env.PUBLIC_ORIGIN || null,
trustProxy: process.env.TRUST_PROXY ? process.env.TRUST_PROXY.split(',').map(value => value.trim()) : false,
sessionSeconds: 1800, bcryptRounds: 12, ante: 10,
intermissionMs: 30000, turnMs: 30000, disconnectMs: 10000,
heartbeatMs: 30000, maxConnections: 200, maxConnectionsPerIp: 10,
authLimit: 20, authWindowMs: 15 * 60 * 1000, messageLimit: 30,
now: Date.now, ...overrides
};
if (typeof config.secret !== 'string' || config.secret.length < 32) throw new Error('TOKEN_SECRET must contain at least 32 characters');
if (!Number.isInteger(config.port) || config.port < 0 || config.port > 65535) throw new Error('Invalid PORT');
if (config.origin && new URL(config.origin).origin !== config.origin) throw new Error('PUBLIC_ORIGIN must be an origin without a trailing slash');
return config;
}
module.exports = {configuration};