diff options
| author | Loyalsoldier <[email protected]> | 2024-08-13 11:30:39 +0800 |
|---|---|---|
| committer | Loyalsoldier <[email protected]> | 2024-08-13 11:31:05 +0800 |
| commit | d3d84fd33727fb323eec832adf6f5897997fd84e (patch) | |
| tree | fb050cc6eda2a90862ad504e71927d8949e19fb9 /plugin | |
| parent | 50ed45ced0f436f1a2817390df46f85a953af675 (diff) | |
Feat: support remote URL in maxmindGeoLite2ASNCSV & maxmindGeoLite2CountryCSV
Diffstat (limited to 'plugin')
| -rw-r--r-- | plugin/maxmind/asn_csv.go | 14 | ||||
| -rw-r--r-- | plugin/maxmind/country_csv.go | 28 |
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 { |
