Giter Club home page Giter Club logo

Comments (8)

Loyalsoldier avatar Loyalsoldier commented on August 26, 2024 1

确实是更新了,见:https://github.com/v2fly/v2ray-core/blob/master/app/router/routercommon/common.proto

from geoip.

Loyalsoldier avatar Loyalsoldier commented on August 26, 2024 1

我试了一下,proto 文件写成这样就可以了:

syntax = "proto3";

package v2ray_config;

// Domain for routing decision.
message Domain {
  // Type of domain value.
  enum Type {
    // The value is used as is.
    Plain = 0;
    // The value is used as a regular expression.
    Regex = 1;
    // The value is a root domain.
    RootDomain = 2;
    // The value is a domain.
    Full = 3;
  }

  // Domain matching type.
  Type type = 1;

  // Domain value.
  string value = 2;

  message Attribute {
    string key = 1;

    oneof typed_value {
      bool bool_value = 2;
      int64 int_value = 3;
    }
  }

  // Attributes of this domain. May be used for filtering.
  repeated Attribute attribute = 3;
}

// IP for routing decision, in CIDR form.
message CIDR {
  // IP address, should be either 4 or 16 bytes.
  bytes ip = 1;

  // Number of leading ones in the network mask.
  uint32 prefix = 2;
}

message GeoIP {
  string country_code = 1;
  repeated CIDR cidr = 2;
  bool inverse_match = 3;
}

message GeoIPList {
  repeated GeoIP entry = 1;
}

message GeoSite {
  string country_code = 1;
  repeated Domain domain = 2;
}

message GeoSiteList {
  repeated GeoSite entry = 1;
}

from geoip.

Loyalsoldier avatar Loyalsoldier commented on August 26, 2024

什么意思?把 geoip.dat 文件下载下来,放到 v2ray 目录下,在配置文件中添加诸如 geoip:cn 的规则就可以使用啊。

from geoip.

kitty-eu-org avatar kitty-eu-org commented on August 26, 2024

我写了一个解析dat的项目,我copy的v2ray-core的proto文件:https://github.com/hezhaozhao-git/kitty_proxy/tree/main/src/protoes
但是解析不了大佬你提供的这个dat文件,用v2ray-core提供的dat文件就可以

from geoip.

kitty-eu-org avatar kitty-eu-org commented on August 26, 2024

没事了,我用xray-core的proto文件可以解析,但是v2ray-core的不行,多谢了,也就是现在的dat文件跟v2ray-core项目不兼容

from geoip.

kitty-eu-org avatar kitty-eu-org commented on August 26, 2024

是的,我用了xray-core的proto文件可以解析大佬提供的dat 文件

from geoip.

Loyalsoldier avatar Loyalsoldier commented on August 26, 2024

本项目也写了解析代码啊,不是这样吗?

func (g *geoIPDatIn) generateEntries(reader io.Reader, entries map[string]*lib.Entry) error {
geoipBytes, err := io.ReadAll(reader)
if err != nil {
return err
}
var geoipList router.GeoIPList
if err := proto.Unmarshal(geoipBytes, &geoipList); err != nil {
return err
}
for _, geoip := range geoipList.Entry {
var entry *lib.Entry
name := geoip.CountryCode
if theEntry, found := entries[name]; found {
fmt.Printf("⚠️ [type %s | action %s] found duplicated entry: %s. Process anyway\n", typeGeoIPdatIn, g.Action, name)
entry = theEntry
} else {
entry = lib.NewEntry(name)
}
for _, v2rayCIDR := range geoip.Cidr {
ipStr := net.IP(v2rayCIDR.GetIp()).String() + "/" + fmt.Sprint(v2rayCIDR.GetPrefix())
switch g.Action {
case lib.ActionAdd:
if err := entry.AddPrefix(ipStr); err != nil {
return err
}
case lib.ActionRemove:
if err := entry.RemovePrefix(ipStr); err != nil {
return err
}
}
}
entries[name] = entry
}
return nil
}

from geoip.

kitty-eu-org avatar kitty-eu-org commented on August 26, 2024

本项目也写了解析代码啊,不是这样吗?

func (g *geoIPDatIn) generateEntries(reader io.Reader, entries map[string]*lib.Entry) error {
geoipBytes, err := io.ReadAll(reader)
if err != nil {
return err
}
var geoipList router.GeoIPList
if err := proto.Unmarshal(geoipBytes, &geoipList); err != nil {
return err
}
for _, geoip := range geoipList.Entry {
var entry *lib.Entry
name := geoip.CountryCode
if theEntry, found := entries[name]; found {
fmt.Printf("⚠️ [type %s | action %s] found duplicated entry: %s. Process anyway\n", typeGeoIPdatIn, g.Action, name)
entry = theEntry
} else {
entry = lib.NewEntry(name)
}
for _, v2rayCIDR := range geoip.Cidr {
ipStr := net.IP(v2rayCIDR.GetIp()).String() + "/" + fmt.Sprint(v2rayCIDR.GetPrefix())
switch g.Action {
case lib.ActionAdd:
if err := entry.AddPrefix(ipStr); err != nil {
return err
}
case lib.ActionRemove:
if err := entry.RemovePrefix(ipStr); err != nil {
return err
}
}
}
entries[name] = entry
}
return nil
}

是这样的,但是我没看到你的proto文件,,,你应该是copy protoc生成后的go代码吧,我是用proto生成rust代码

from geoip.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.