24 lines
1002 B
JavaScript
24 lines
1002 B
JavaScript
/* p2p-config.js — peer-to-peer settings (see docs/p2p-architecture.md).
|
|
* P2P is ON unless P2P_ENABLED=0. The malware scan is OFF unless
|
|
* P2P_MALWARE_SCAN=1. Hashing + validateMedia are never optional. */
|
|
import { dirname, join } from 'node:path';
|
|
|
|
const num = (v, d) => (Number.isFinite(Number(v)) && String(v).trim() !== '' ? Number(v) : d);
|
|
|
|
export function loadP2pConfig(env = process.env) {
|
|
const dbDir = dirname(env.DB_PATH || './data/ytplayer.db');
|
|
return {
|
|
enabled: env.P2P_ENABLED !== '0',
|
|
malwareScan: env.P2P_MALWARE_SCAN === '1',
|
|
scanCmd: (env.P2P_SCAN_CMD || 'clamscan --no-summary --infected').trim(),
|
|
staleDays: num(env.P2P_STALE_DAYS, 7),
|
|
keepMinViews: num(env.P2P_KEEP_MIN_VIEWS, 3),
|
|
keepDays: num(env.P2P_KEEP_DAYS, 30),
|
|
keepRecentDays: num(env.P2P_KEEP_RECENT_DAYS, 14),
|
|
intakeDir: env.P2P_INTAKE_DIR || join(dbDir, 'p2p-intake'),
|
|
intakeMaxBytes: num(env.P2P_INTAKE_MAX_BYTES, 3 * 1024 ** 3),
|
|
};
|
|
}
|
|
|
|
export const P2P = loadP2pConfig();
|