Description
Add a geolocation check that identifies where the proxy exit node is located — country, city, ISP, ASN — and compares it against the direct connection location.
Users need to verify their proxy exit is in the expected region. Every VPN testing site (ipleak.net, whatismyipaddress) has this. The route_trace plugin already calls ipapi.co for hop geolocation — extending this to the exit IP is natural.
Codebase starting point
core/checks/public_ip/check.go — template for adapter-based checks, stores public_ip in shared data
core/checks/register.go — where to register the new check
core/checks/route_trace/check.go — already calls ipapi.co for hop geolocation, reuse the same API pattern
core/check/types.go — CategoryGeolocation already defined
Acceptance Criteria
Description
Add a geolocation check that identifies where the proxy exit node is located — country, city, ISP, ASN — and compares it against the direct connection location.
Users need to verify their proxy exit is in the expected region. Every VPN testing site (ipleak.net, whatismyipaddress) has this. The
route_traceplugin already callsipapi.cofor hop geolocation — extending this to the exit IP is natural.Codebase starting point
core/checks/public_ip/check.go— template for adapter-based checks, storespublic_ipin shared datacore/checks/register.go— where to register the new checkcore/checks/route_trace/check.go— already callsipapi.cofor hop geolocation, reuse the same API patterncore/check/types.go—CategoryGeolocationalready definedAcceptance Criteria
core/checks/geo_identity/check.goimplementingcheck.Checkerpublic_ipcore/checks/register.gocore/checks/geo_identity/check_test.go