Releases: openasn/openasn-ruby
Release list
v0.3.0 — analytics-first ergonomics
Ergonomics release, driven by dogfooding the analytics/enrichment use case — surfacing IP origin next to every IP an admin already looks at — in a production Rails app.
New API
r = OpenASN.try_lookup(user.signup_ip) # nil-safe: nil/blank/garbage in, nil out
r.label # => "Residential ISP" / "VPN" / "Hosting / datacenter" — for admin UIs
r.flag_names # => [:bad_asn, :vpn_provider] — ASN signals, decoded to names
r.bad_asn? # => true — no more FORMAT.md bit arithmetic
r.flag?(:cdn) # named check for any ASN flagResult#to_h now includes flag_names (append-only key — shadow logs stay parseable).
Changed
README reframed analytics-first: enriching admin panels and audit trails is the primary documented use case; acting on the signal (step-up verification, rate limits) is the optional later step.
Full details in CHANGELOG.md.
Full Changelog: v0.2.0...v0.3.0
v0.2.0 — VPN provider expansion
OpenASN for Ruby — offline IP origin intelligence: classify any IP as residential, mobile, hosting, VPN, Tor exit, iCloud Private Relay, enterprise gateway, business, education, government, CGNAT, or unknown — in microseconds, with zero API calls and zero runtime dependencies. Data is the CC0 OpenASN dataset, refreshed nightly; every verdict is auditable to its source.
Highlights
- VPN provider coverage, massively expanded. 34 new provider-published Tier B sources join ProtonVPN, organized into config groups you opt into deliberately:
vpn_providers(on by default — exact-IP endpoints published by the providers themselves): Mullvad, IVPN, Private Internet Access, AirVPN, Windscribe, PrivadoVPN, RiseupVPN, WLVPN, WorldVPN, OVPN, Anoninevpn_heavy(opt-in): NordVPN (~35 MB API response)vpn_dns(opt-in — provider-published hostnames resolved via your own DNS): Surfshark, IPVanish, PrivateVPN, PureVPN, TorGuard, FastestVPN, VPNSecure, TunnelBear, StrongVPN, VyprVPN, Giganews, SlickVPN, AzireVPN, VPN.ac, Trust.Zonepublic_relays(opt-in — volunteer-run, high-churn): VPN Gate, VPNBook, FreeVPN.us
- New source machinery, still 100% stdlib: bounded ZIP reader for
.ovpnarchives (64 MB inflate cap), HTML status-page parsers, threaded DNS resolution with an injectableConfiguration.dns_resolverhook, and form-POST support with method/header-preserving redirects. - Faster lookups: overlay resolution now uses a per-family index precomputed once per snapshot — measurably faster with many overlays enabled.
- Reliability fix: the default dataset URL is now the tag-addressed
releases/download/latest/…form, immune to GitHub's "Latest" badge drifting to a dated snapshot (data repoDECISIONS.mdD-REL-1). Pinned by a regression test.
Install
# Gemfile
gem "openasn"result = OpenASN.lookup("203.0.113.7")
result.verdict # => :residential_isp
result.infrastructure? # => falseFull details in CHANGELOG.md.
Full Changelog: v0.1.0...v0.2.0