Statistik: anonymes Impression-Tracking mit ASN-Einordnung

Seitenaufrufe werden serverseitig pro (Tag, anonymisiertes Netz, Pfad)
gezaehlt -- nur auf den HTML-Seiten-Routen, nicht auf API/Assets. Die
Client-IP wird sofort maskiert (IPv4 /16, IPv6 /32); die vollstaendige
IP wird nie gespeichert oder weiterverwendet.

Optional loest eine lokale GeoLite2-ASN-DB (Env KVER_GEOIP_ASN) den
Netzbetreiber aus dem bereits anonymisierten Netz auf -- auch dafuer wird
nicht die volle IP herangezogen. Fehlt die DB, bleibt das Feld leer.

Neuer Endpunkt GET /stats/detail liefert die Aggregate; die Tabelle
impression speichert nur Zaehlwerte (kein Eventlog).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-17 23:21:17 +02:00
parent bbd4bc27ba
commit 662285c8b5
5 changed files with 248 additions and 2 deletions
+1
View File
@@ -5,6 +5,7 @@ go 1.25.0
require (
github.com/go-chi/chi/v5 v5.3.0
github.com/go-chi/httprate v0.15.0
github.com/oschwald/maxminddb-golang v1.13.1
golang.org/x/crypto v0.52.0
golang.org/x/image v0.41.0
modernc.org/sqlite v1.51.0