Commit Graph

6 Commits

Author SHA1 Message Date
BergaBruh f7030686b2 snapshot: prune speedtests older than 30 days (retention via existing storage primitive) 2026-05-09 23:43:09 +05:00
BergaBruh c01341c63a snapshot+hugo: speedtest tab with recent table + per-node aggregates 2026-05-09 19:01:24 +05:00
BergaBruh e6f1f63b8d cmd/speedtest-sync: fail-fast on bad timestamps + minor cleanups
- Skip rows with null/malformed timestamps instead of silently
  re-stamping with time.Now() (data corruption hidden behind a
  fallback). Drops the time import.
- Replace ad-hoc parentDir() with stdlib filepath.Dir().
- Add t.Fatal error checks to TestExtractRows_SkipsBadExtra
  (CREATE TABLE / INSERT) and switch sql.Open to checked form.
- New TestExtractRows_SkipsBadTimestamp covers the null-ts path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 18:53:34 +05:00
BergaBruh 367db68837 cmd/speedtest-sync: read LibreSpeed local SQLite, sync to stats via gRPC 2026-05-09 18:46:23 +05:00
bergamot 731b60863a feat: tunnel JWT auth
Tunnel method now requires Bearer JWT (HMAC-HS256) in gRPC metadata.
   - internal/auth: pure-stdlib verifier + issuer + revoked-jti list
   - internal/tunnel: per-target rate limiter + egress allowlist with
     wildcard support + crypto/rand frame padding to {1KB, 4KB, 16KB}
   - cmd/server reads /etc/stats-gateway/{jwt.key,tunnel.yaml,revoked.txt}
     via --config-dir flag
   - cmd/issue-token Go binary wraps auth.Issue
   - configs/tunnel.yaml example with projectshitpost wildcard


Tests: 13 PASS across 5 packages.
2026-05-05 21:28:37 +05:00
bergamot 4059e94759 Initial commit: stats-gateway gRPC service + dashboard + CLI 2026-05-05 21:04:32 +05:00