/* 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();