-
Notifications
You must be signed in to change notification settings - Fork 54
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor: spin geoipx off geolocate (#893)
A bunch of packages (including oohelperd) just need the ability to use MaxMind-like databases. They don't need the additional functionality implemented by the geolocate package. Such a package, in fact, is mostly (if not only) needed by the engine package. Therefore, move code to query MaxMind-like databases to a separate package, and avoid depending on geolocate in all the packages for which it's sufficient to use geoipx. Part of ooni/probe#2240
- Loading branch information
1 parent
1e7384d
commit 110a118
Showing
23 changed files
with
224 additions
and
211 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,54 +1,15 @@ | ||
package geolocate | ||
|
||
import ( | ||
"net" | ||
|
||
"github.com/ooni/probe-assets/assets" | ||
"github.com/oschwald/geoip2-golang" | ||
"github.com/ooni/probe-cli/v3/internal/geoipx" | ||
) | ||
|
||
type mmdbLookupper struct{} | ||
|
||
func (mmdbLookupper) LookupASN(ip string) (asn uint, org string, err error) { | ||
asn, org = DefaultProbeASN, DefaultProbeNetworkName | ||
db, err := geoip2.FromBytes(assets.ASNDatabaseData()) | ||
if err != nil { | ||
return | ||
} | ||
defer db.Close() | ||
record, err := db.ASN(net.ParseIP(ip)) | ||
if err != nil { | ||
return | ||
} | ||
asn = record.AutonomousSystemNumber | ||
if record.AutonomousSystemOrganization != "" { | ||
org = record.AutonomousSystemOrganization | ||
} | ||
return | ||
} | ||
|
||
// LookupASN returns the ASN and the organization associated with the | ||
// given IP address. | ||
func LookupASN(ip string) (asn uint, org string, err error) { | ||
return (mmdbLookupper{}).LookupASN(ip) | ||
func (mmdbLookupper) LookupASN(ip string) (uint, string, error) { | ||
return geoipx.LookupASN(ip) | ||
} | ||
|
||
func (mmdbLookupper) LookupCC(ip string) (cc string, err error) { | ||
cc = DefaultProbeCC | ||
db, err := geoip2.FromBytes(assets.CountryDatabaseData()) | ||
if err != nil { | ||
return | ||
} | ||
defer db.Close() | ||
record, err := db.Country(net.ParseIP(ip)) | ||
if err != nil { | ||
return | ||
} | ||
// With MaxMind DB we used record.RegisteredCountry.IsoCode but that does | ||
// not seem to work with the db-ip.com database. The record is empty, at | ||
// least for my own IP address in Italy. --Simone (2020-02-25) | ||
if record.Country.IsoCode != "" { | ||
cc = record.Country.IsoCode | ||
} | ||
return | ||
func (mmdbLookupper) LookupCC(ip string) (string, error) { | ||
return geoipx.LookupCC(ip) | ||
} |
Oops, something went wrong.