summaryrefslogtreecommitdiff
path: root/plugin/maxmind
diff options
context:
space:
mode:
authorLoyalsoldier <[email protected]>2024-08-13 11:30:39 +0800
committerLoyalsoldier <[email protected]>2024-08-13 11:31:05 +0800
commitd3d84fd33727fb323eec832adf6f5897997fd84e (patch)
treefb050cc6eda2a90862ad504e71927d8949e19fb9 /plugin/maxmind
parent50ed45ced0f436f1a2817390df46f85a953af675 (diff)
Feat: support remote URL in maxmindGeoLite2ASNCSV & maxmindGeoLite2CountryCSV
Diffstat (limited to 'plugin/maxmind')
-rw-r--r--plugin/maxmind/asn_csv.go14
-rw-r--r--plugin/maxmind/country_csv.go28
2 files changed, 33 insertions, 9 deletions
diff --git a/plugin/maxmind/asn_csv.go b/plugin/maxmind/asn_csv.go
index 73cd052b..e738a44b 100644
--- a/plugin/maxmind/asn_csv.go
+++ b/plugin/maxmind/asn_csv.go
@@ -163,13 +163,21 @@ func (g *geoLite2ASNCSV) process(file string, entries map[string]*lib.Entry) err
entries = make(map[string]*lib.Entry)
}
- fReader, err := os.Open(file)
+ var f io.ReadCloser
+ var err error
+ switch {
+ case strings.HasPrefix(strings.ToLower(file), "http://"), strings.HasPrefix(strings.ToLower(file), "https://"):
+ f, err = lib.GetRemoteURLReader(file)
+ default:
+ f, err = os.Open(file)
+ }
+
if err != nil {
return err
}
- defer fReader.Close()
+ defer f.Close()
- reader := csv.NewReader(fReader)
+ reader := csv.NewReader(f)
reader.Read() // skip header
for {
diff --git a/plugin/maxmind/country_csv.go b/plugin/maxmind/country_csv.go
index 4aa02975..090de13a 100644
--- a/plugin/maxmind/country_csv.go
+++ b/plugin/maxmind/country_csv.go
@@ -153,13 +153,21 @@ func (g *geoLite2CountryCSV) Input(container lib.Container) (lib.Container, erro
}
func (g *geoLite2CountryCSV) getCountryCode() (map[string]string, error) {
- ccReader, err := os.Open(g.CountryCodeFile)
+ var f io.ReadCloser
+ var err error
+ switch {
+ case strings.HasPrefix(strings.ToLower(g.CountryCodeFile), "http://"), strings.HasPrefix(strings.ToLower(g.CountryCodeFile), "https://"):
+ f, err = lib.GetRemoteURLReader(g.CountryCodeFile)
+ default:
+ f, err = os.Open(g.CountryCodeFile)
+ }
+
if err != nil {
return nil, err
}
- defer ccReader.Close()
+ defer f.Close()
- reader := csv.NewReader(ccReader)
+ reader := csv.NewReader(f)
lines, err := reader.ReadAll()
if err != nil {
return nil, err
@@ -199,13 +207,21 @@ func (g *geoLite2CountryCSV) process(file string, ccMap map[string]string, entri
entries = make(map[string]*lib.Entry, len(ccMap))
}
- fReader, err := os.Open(file)
+ var f io.ReadCloser
+ var err error
+ switch {
+ case strings.HasPrefix(strings.ToLower(file), "http://"), strings.HasPrefix(strings.ToLower(file), "https://"):
+ f, err = lib.GetRemoteURLReader(file)
+ default:
+ f, err = os.Open(file)
+ }
+
if err != nil {
return err
}
- defer fReader.Close()
+ defer f.Close()
- reader := csv.NewReader(fReader)
+ reader := csv.NewReader(f)
reader.Read() // skip header
for {