Make the download of geoip data files conditional
This commit is contained in:
parent
1bba0c7899
commit
15c901ed68
|
@ -19,6 +19,10 @@ func init() {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err = ctx.MaybeDownloadDataFiles(); err != nil {
|
||||||
|
log.WithError(err).Error("failed to download data files")
|
||||||
|
}
|
||||||
|
|
||||||
geoipPath := utils.GeoIPDir(ctx.Home)
|
geoipPath := utils.GeoIPDir(ctx.Home)
|
||||||
if *shouldUpdate {
|
if *shouldUpdate {
|
||||||
utils.DownloadGeoIPDatabaseFiles(geoipPath)
|
utils.DownloadGeoIPDatabaseFiles(geoipPath)
|
||||||
|
|
39
ooni.go
39
ooni.go
|
@ -3,6 +3,7 @@ package ooni
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/apex/log"
|
"github.com/apex/log"
|
||||||
|
@ -56,8 +57,11 @@ func (c *Context) MaybeLocationLookup() error {
|
||||||
func (c *Context) LocationLookup() error {
|
func (c *Context) LocationLookup() error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
geoipDir := utils.GeoIPDir(c.Home)
|
if err = c.MaybeDownloadDataFiles(); err != nil {
|
||||||
|
log.WithError(err).Error("failed to download data files")
|
||||||
|
}
|
||||||
|
|
||||||
|
geoipDir := utils.GeoIPDir(c.Home)
|
||||||
c.Location, err = utils.GeoIPLookup(geoipDir)
|
c.Location, err = utils.GeoIPLookup(geoipDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -77,6 +81,24 @@ func (c *Context) MaybeOnboarding() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MaybeDownloadDataFiles will download geoip data files if they are not present
|
||||||
|
func (c *Context) MaybeDownloadDataFiles() error {
|
||||||
|
geoipDir := utils.GeoIPDir(c.Home)
|
||||||
|
if _, err := os.Stat(path.Join(geoipDir, "GeoLite2-Country.mmdb")); os.IsNotExist(err) {
|
||||||
|
log.Debugf("Downloading GeoIP database files")
|
||||||
|
if err := utils.DownloadGeoIPDatabaseFiles(geoipDir); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if _, err := os.Stat(path.Join(geoipDir, "GeoIP.dat")); os.IsNotExist(err) {
|
||||||
|
log.Debugf("Downloading legacy GeoIP database Files")
|
||||||
|
if err := utils.DownloadLegacyGeoIPDatabaseFiles(geoipDir); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// Init the OONI manager
|
// Init the OONI manager
|
||||||
func (c *Context) Init() error {
|
func (c *Context) Init() error {
|
||||||
var err error
|
var err error
|
||||||
|
@ -128,28 +150,13 @@ func NewContext(configPath string, homePath string) *Context {
|
||||||
|
|
||||||
// MaybeInitializeHome does the setup for a new OONI Home
|
// MaybeInitializeHome does the setup for a new OONI Home
|
||||||
func MaybeInitializeHome(home string) error {
|
func MaybeInitializeHome(home string) error {
|
||||||
firstRun := false
|
|
||||||
for _, d := range utils.RequiredDirs(home) {
|
for _, d := range utils.RequiredDirs(home) {
|
||||||
if _, e := os.Stat(d); e != nil {
|
if _, e := os.Stat(d); e != nil {
|
||||||
firstRun = true
|
|
||||||
if err := os.MkdirAll(d, 0700); err != nil {
|
if err := os.MkdirAll(d, 0700); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if firstRun == true {
|
|
||||||
log.Info("This is the first time you are running OONI Probe. Downloading some files.")
|
|
||||||
geoipDir := utils.GeoIPDir(home)
|
|
||||||
log.Debugf("Downloading GeoIP database files")
|
|
||||||
if err := utils.DownloadGeoIPDatabaseFiles(geoipDir); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
log.Debugf("Downloading legacy GeoIP database Files")
|
|
||||||
if err := utils.DownloadLegacyGeoIPDatabaseFiles(geoipDir); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user