diff --git a/wol-gate/server.js b/wol-gate/server.js index 9771f0c..ea83eb0 100644 --- a/wol-gate/server.js +++ b/wol-gate/server.js @@ -78,10 +78,21 @@ function renderWakingPage() { `; } -function maybeWake() { +function describeRequester(req) { + const ip = req.headers['x-forwarded-for'] || req.socket.remoteAddress; + const ua = req.headers['user-agent'] || '-'; + const host = req.headers['host'] || '-'; + return `${ip} "${req.method} ${host}${req.url}" UA="${ua}"`; +} + +function maybeWake(req) { const now = Date.now(); - if (now - lastWakeAt <= WAKE_COOLDOWN_MS) return; + if (now - lastWakeAt <= WAKE_COOLDOWN_MS) { + console.log(`[wol-gate] wake suppressed (cooldown) - triggered by ${describeRequester(req)}`); + return; + } lastWakeAt = now; + console.log(`[wol-gate] waking - triggered by ${describeRequester(req)}`); try { sendMagicPacket(TARGET_MAC, BROADCAST_ADDR, WOL_PORT); } catch (e) { @@ -109,7 +120,7 @@ const server = http.createServer(async (req, res) => { proxyRequest(req, res); return; } - maybeWake(); + maybeWake(req); res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); res.end(renderWakingPage()); }); @@ -117,7 +128,7 @@ const server = http.createServer(async (req, res) => { // Forward WebSocket upgrades too, once awake (homeclaw uses WS heavily). server.on('upgrade', async (req, socket, head) => { if (!(await checkTargetAlive())) { - maybeWake(); + maybeWake(req); socket.destroy(); return; }