diff options
| author | Loyalsoldier <[email protected]> | 2024-10-08 06:23:47 +0800 |
|---|---|---|
| committer | Loyalsoldier <[email protected]> | 2024-10-08 06:23:47 +0800 |
| commit | f3bb9c0328795b413884c1baddbcb8de5a39b93f (patch) | |
| tree | 5ab6dc5c45a10172bbb6097d87322566399762d2 /plugin/v2ray/dat_out.go | |
| parent | 1e4cb746b9ca67b9d9dabdc65f42f495eb4cfbcd (diff) | |
Chore: get rid of v2ray-core & update dependencies
Diffstat (limited to 'plugin/v2ray/dat_out.go')
| -rw-r--r-- | plugin/v2ray/dat_out.go | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/plugin/v2ray/dat_out.go b/plugin/v2ray/dat_out.go index 771d4e27..1e64ede3 100644 --- a/plugin/v2ray/dat_out.go +++ b/plugin/v2ray/dat_out.go @@ -4,14 +4,13 @@ import ( "encoding/json" "fmt" "log" + "net/netip" "os" "path/filepath" "sort" "strings" "github.com/Loyalsoldier/geoip/lib" - router "github.com/v2fly/v2ray-core/v5/app/router/routercommon" - "github.com/v2fly/v2ray-core/v5/infra/conf/rule" "google.golang.org/protobuf/proto" ) @@ -101,8 +100,8 @@ func (g *geoIPDatOut) GetDescription() string { } func (g *geoIPDatOut) Output(container lib.Container) error { - geoIPList := new(router.GeoIPList) - geoIPList.Entry = make([]*router.GeoIP, 0, 300) + geoIPList := new(GeoIPList) + geoIPList.Entry = make([]*GeoIP, 0, 300) updated := false switch len(g.Want) { @@ -188,32 +187,31 @@ func (g *geoIPDatOut) Output(container lib.Container) error { return nil } -func (g *geoIPDatOut) generateGeoIP(entry *lib.Entry) (*router.GeoIP, error) { - var entryCidr []string +func (g *geoIPDatOut) generateGeoIP(entry *lib.Entry) (*GeoIP, error) { + var entryCidr []netip.Prefix var err error switch g.OnlyIPType { case lib.IPv4: - entryCidr, err = entry.MarshalText(lib.IgnoreIPv6) + entryCidr, err = entry.MarshalPrefix(lib.IgnoreIPv6) case lib.IPv6: - entryCidr, err = entry.MarshalText(lib.IgnoreIPv4) + entryCidr, err = entry.MarshalPrefix(lib.IgnoreIPv4) default: - entryCidr, err = entry.MarshalText() + entryCidr, err = entry.MarshalPrefix() } if err != nil { return nil, err } - v2rayCIDR := make([]*router.CIDR, 0, 1024) - for _, cidrStr := range entryCidr { - cidr, err := rule.ParseIP(cidrStr) - if err != nil { - return nil, err - } - v2rayCIDR = append(v2rayCIDR, cidr) + v2rayCIDR := make([]*CIDR, 0, len(entryCidr)) + for _, prefix := range entryCidr { + v2rayCIDR = append(v2rayCIDR, &CIDR{ + Ip: prefix.Addr().AsSlice(), + Prefix: uint32(prefix.Bits()), + }) } if len(v2rayCIDR) > 0 { - return &router.GeoIP{ + return &GeoIP{ CountryCode: entry.GetName(), Cidr: v2rayCIDR, }, nil @@ -223,7 +221,7 @@ func (g *geoIPDatOut) generateGeoIP(entry *lib.Entry) (*router.GeoIP, error) { } // Sort by country code to make reproducible builds -func (g *geoIPDatOut) sort(list *router.GeoIPList) { +func (g *geoIPDatOut) sort(list *GeoIPList) { sort.SliceStable(list.Entry, func(i, j int) bool { return list.Entry[i].CountryCode < list.Entry[j].CountryCode }) |
