From d3d84fd33727fb323eec832adf6f5897997fd84e Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Tue, 13 Aug 2024 11:30:39 +0800 Subject: Feat: support remote URL in maxmindGeoLite2ASNCSV & maxmindGeoLite2CountryCSV --- plugin/maxmind/asn_csv.go | 14 +++++++++++--- plugin/maxmind/country_csv.go | 28 ++++++++++++++++++++++------ 2 files changed, 33 insertions(+), 9 deletions(-) (limited to 'plugin/maxmind') 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 { -- cgit v1.3.1