carlos / platform Public

geoip-for-apps

Human

#241: platform GeoIP for apps.

  • Headers. Every edge mirrors a bucket-published .mmdb and hot-swaps it. The ingress edge sets X-Carlos-Geo-Country/Subdivision/Lat/Lon/Source on every proxied request. Hops and tunnels carry its answer in X-Carlos-Hop-Geo. Forged headers in any spelling are always stripped.
  • Analytics count pageviews by country with per-source attribution.
  • Console. It publishes through carlos system geoip publish|status|off. An optional feed auto-updates from DB-IP Lite or GeoLite2. Untrusted databases are parsed only in a killable, memory-capped child.
  • Alerts. A geoip box rule fires when a database is stale, expiring, expired or not loaded, or when the feed is failing.
  • Lookups. GET /api/cli/apps/{a}/{app}/geo and carlos geo answer for arbitrary addresses.

Status: spec rev 12 accepted (Astra, 12 rounds). Plans 1-3 are built; Astra code review is at 13 rounds, with no new findings in the last. Waiting on Paul's copy review and D1/D2 sign-off, then merge. Not rolled. The tofu lifecycle rule must be applied before any GeoLite2 publish.

Commits 61
Discussions 1 1 open
Tasks 28/31 done

Discussions 1 open

Tasks 28/31 done

  • Spec rev 1 written and committed Done
  • Astra spec review: ACCEPTED at rev 12 (round 12) Done
  • Paul approves the spec Not started
  • Plan 1: headers, mirror, publish, analytics countries Done
  • Plan 2: auto-updating feed Done

Activity