From 418c4bb1120229768d4f25120b287690f8e60cd9 Mon Sep 17 00:00:00 2001 From: Dicken Date: Sat, 18 Jul 2026 15:31:15 +0200 Subject: [PATCH] fix: Oeffentliche Link-Besuche - gleiche IP innerhalb von 5 Minuten wird nicht erneut geloggt --- backend/src/publicAccessLog.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/backend/src/publicAccessLog.js b/backend/src/publicAccessLog.js index d04096f..773dfed 100644 --- a/backend/src/publicAccessLog.js +++ b/backend/src/publicAccessLog.js @@ -25,7 +25,24 @@ async function lookupLocation(ip) { // werden. linkType z.B. 'koepi_share'. Läuft bewusst asynchron/"fire and // forget" im Hintergrund — ein Fehler hier darf niemals die eigentliche // öffentliche Anfrage blockieren oder verlangsamen. +// +// Dedup: dieselbe IP, die denselben Link innerhalb der letzten 5 Minuten schon +// besucht hat, wird nicht erneut geloggt (verhindert Log-Spam bei mehreren +// Klicks/Tab-Wechseln hintereinander, spart nebenbei auch unnötige +// Geolocation-Abfragen). +const DEDUP_WINDOW_MINUTES = 5; function logPublicAccess({ linkType, path, ip }) { + try { + const recent = db.prepare(` + SELECT 1 FROM public_access_log + WHERE ip = ? AND path = ? AND created_at >= datetime('now','localtime',?) + LIMIT 1 + `).get(ip || '', path || '', `-${DEDUP_WINDOW_MINUTES} minutes`); + if (recent) return; // kürzlich schon geloggt, nichts weiter tun + } catch (e) { + console.error('Public-Access-Log Dedup-Fehler:', e.message); + } + lookupLocation(ip).then(location => { try { db.prepare(`