import http from 'http'; const port = Number(process.env.PIKIT_MOCK_API_PORT || 4000); const updatesConfig = { enabled: false, scope: 'security', cleanup: false, bandwidth_limit_kbps: null, auto_reboot: false, reboot_time: '04:30', reboot_with_users: false, update_time: '04:00', upgrade_time: '04:30', state: { enabled: false }, }; const routes = { '/health': { ok: true }, '/api/status': { hostname: 'pikit-test', uptime_seconds: 0, load: [0, 0, 0], memory_mb: { total: 1024, free: 1024 }, disk_mb: { total: 1024, free: 1024 }, cpu_temp_c: 35.0, lan_ip: '127.0.0.1', os_version: 'DietPi', auto_updates_enabled: false, auto_updates: { enabled: false }, updates_config: updatesConfig, reboot_required: false, ready: true, services: [], }, '/api/firstboot': { state: 'done', steps: [], current_step: null, log_tail: '', error_present: false, error_path: '/api/firstboot/error', ca_hash: null, ca_url: '/assets/pikit-ca.crt', }, '/api/firstboot/error': { present: false, text: '' }, '/api/services': { services: [] }, '/api/updates/config': updatesConfig, '/api/updates/auto': { enabled: false, details: { enabled: false } }, '/api/update/status': { status: 'up_to_date', current_version: '0.0.0', latest_version: '0.0.0', message: 'Mocked', channel: 'stable', in_progress: false, }, '/api/update/releases': { releases: [] }, '/api/diag/log': { entries: [], state: { enabled: false, level: 'normal' } }, }; const server = http.createServer((req, res) => { const url = (req.url || '/').split('?')[0]; const body = routes[url] || (url.startsWith('/api/') ? {} : null); if (body === null) { res.writeHead(404, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ error: 'not found' })); return; } res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(JSON.stringify(body)); }); server.listen(port, '127.0.0.1', () => { console.log(`[mock-api] listening on 127.0.0.1:${port}`); }); const shutdown = () => { server.close(() => process.exit(0)); }; process.on('SIGTERM', shutdown); process.on('SIGINT', shutdown);