Giter VIP home page Giter VIP logo

v2fly / geoip Goto Github PK

View Code? Open in Web Editor NEW
591.0 23.0 99.0 9.48 MB

GeoIP for V2Ray. Generate and release GeoIP files such as geoip.dat and geoip-only-cn-private.dat for V2Ray automatically every Thursday.

Home Page: https://www.v2fly.org

License: Creative Commons Attribution Share Alike 4.0 International

Go 100.00%
v2ray geoip v2fly geolite2 geolite2-country ipv4 ipv6 maxmind routing v2ray-core

geoip's Introduction

GeoIP for V2Ray

This project releases GeoIP files automatically every Thursday for routing purpose in Project V. It also provides a command line interface(CLI) tool for users to customize their own GeoIP files.

Download links

For all GeoIP files released by this project, see the release branch. Below are download URLs for some GeoIP files:

GeoIP usage example in V2Ray

"routing": {
  "rules": [
    {
      "type": "field",
      "outboundTag": "Direct",
      "ip": [
        "223.5.5.5/32",
        "119.29.29.29/32",
        "180.76.76.76/32",
        "114.114.114.114/32",
        "geoip:cn",
        "geoip:private",
        "ext:cn.dat:cn",
        "ext:private.dat:private",
        "ext:geoip-only-cn-private.dat:cn",
        "ext:geoip-only-cn-private.dat:private"
      ]
    },
    {
      "type": "field",
      "outboundTag": "Proxy-1",
      "ip": [
        "1.1.1.1/32",
        "1.0.0.1/32",
        "8.8.8.8/32",
        "8.8.4.4/32"
      ]
    },
    {
      "type": "field",
      "outboundTag": "Proxy-2",
      "ip": [
        "geoip:us",
        "geoip:ca"
      ]
    },
    {
      "type": "field",
      "outboundTag": "Proxy-3",
      "ip": [
        "geoip:hk",
        "geoip:mo",
        "geoip:tw",
        "geoip:jp",
        "geoip:sg"
      ]
    }
  ]
}

Customize GeoIP files

Concept explanation

These two concepts are notable: input and output. The input is the data source and its input format, whereas the output is the destination of the converted data and its output format. What the CLI does is to aggregate all input format data, then convert them to output format and write them to GeoIP files by using the options in the config file.

Supported formats

Supported input formats:

  • cutter: Remove data from previous steps
  • maxmindGeoLite2CountryCSV: Convert MaxMind GeoLite2 country CSV data to other formats
  • maxmindMMDB: Convert MaxMind mmdb database to other formats
  • private: Convert LAN and private network CIDR to other formats
  • text: Convert plaintext IP and CIDR to other formats
  • v2rayGeoIPDat: Convert V2Ray GeoIP dat to other formats

Supported output formats:

  • text: Convert data to plaintext CIDR format
  • v2rayGeoIPDat: Convert data to V2Ray GeoIP dat format

Steps

  1. Install golang and git
  2. Clone project code: git clone https://github.com/v2fly/geoip.git
  3. Navigate to project root directory: cd geoip
  4. Install project dependencies: go mod download
  5. Edit config file config.json by referencing the configuration options in configuration.md
  6. Generate files: go run ./

Notices

  • If input format maxmindGeoLite2CountryCSV is specified in config file, you must first download GeoLite2-Country-CSV.zip from MaxMind, then unzip it to geolite2 directory.
  • go run ./ will use config.json in current directory as the default config file, or use go run ./ -c /path/to/your/own/config/file.json to specify your own config file.
  • The generated files are located at output directory by default.
  • Run go run ./ -h for more usage information.
  • See configuration.md for all configuration options.

CLI showcase

You can run go install -v github.com/v2fly/geoip@latest to install the CLI tool directly.

Show help information

$ ./geoip -h
Usage of ./geoip:
  -c string
    	Path to the config file (default "config.json")
  -l	List all available input and output formats

Generate GeoIP files

$ ./geoip -c config.json
2021/09/02 00:26:12 ✅ [v2rayGeoIPDat] geoip.dat --> output/dat
2021/09/02 00:26:12 ✅ [v2rayGeoIPDat] geoip-only-cn-private.dat --> output/dat
2021/09/02 00:26:12 ✅ [v2rayGeoIPDat] cn.dat --> output/dat
2021/09/02 00:26:12 ✅ [v2rayGeoIPDat] private.dat --> output/dat
2021/09/02 00:26:12 ✅ [v2rayGeoIPDat] test.dat --> output/dat
2021/09/02 00:26:12 ✅ [text] cn.txt --> output/text

List all supported formats

$ ./geoip -l
All available input formats:
  - cutter (Remove data from previous steps)
  - maxmindGeoLite2CountryCSV (Convert MaxMind GeoLite2 country CSV data to other formats)
  - maxmindMMDB (Convert MaxMind mmdb database to other formats)
  - private (Convert LAN and private network CIDR to other formats)
  - test (Convert specific CIDR to other formats (for test only))
  - text (Convert plaintext IP and CIDR to other formats)
  - v2rayGeoIPDat (Convert V2Ray GeoIP dat to other formats)

All available output formats:
  - text (Convert data to plaintext CIDR format)
  - v2rayGeoIPDat (Convert data to V2Ray GeoIP dat format)

Notice

This product includes GeoLite2 data created by MaxMind, available from MaxMind.

License

CC-BY-SA-4.0

geoip's People

Contributors

dependabot[bot] avatar katexochen avatar kslr avatar loyalsoldier avatar mzz2017 avatar yin1999 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

geoip's Issues

建议增加 `geoip:cloudflare` 类别

有些 VPS 的 IP 被 Cloudflare 重点关照,老是触发 challenge,可能有分流需求。在 geoip 加上 cloudflare 的 IP 段可以方便分流。

若有需要也能加上其他 ASN 的 IP 段如 geoip:google-cloudgeoip:amazon-cloud

2022/03/25 22:32:14 unknown config type

i made this config, but program show me an exception: unknown config type

thats my config.json:

{
  "input": [
    {
      "type": "text",
      "action": "add",
      "args": {
          "name": "ipv4",
          "uri": "blacklisted_ipv4",
          "onlyIPType": "ipv4"
      }
    },
    {
      "type": "text",
      "action": "add",
          "args": {
          "name": "ipv6",
          "uri": "blacklisted_ipv6",
          "onlyIPType": "ipv6"
      }
    }
  ],
  "output": [
    {
      "type": "v2rayGeoIPDat",
      "action": "output",
      "args": {
        "outputName": "russia_ips.dat",
        "wantedList": ["ipv4", "ipv6"]
      }
    }
  ]
}

I can't understand something? Advise me, please:)

怎么利用这个工具生成自定义的dat文件?

这是我的config.json文件

{
  "input": [
    {
    "type": "text",
      "action": "add",
      "args": {
        "name": "mylist",
        "uri": "./whilelist.txt",
        "onlyIPType": "ipv4"
      }
    }
  ],
  "output": [
    {
      "type": "v2rayGeoIPDat",
      "action": "output",
      "args": {
        "outputDir": "./",
        "wantedList": ["mylist"],
        "onlyIPType": "ipv4"
      }
    }
  ]
}

这是whilelist.txt文件

1.9.250.37/32
1.9.250.38/32
101.226.26.239/32
101.226.26.241/32
101.226.26.244/32
101.226.26.248/32
104.116.243.161/32
104.116.243.72/32
104.16.70.81/32
104.18.230.100/32
108.177.125.188/32
108.177.97.188/32
120.76.116.246/32
121.36.20.53/32
13.224.167.13/32
13.224.167.55/32
13.224.167.59/32
13.224.167.73/32

运行结果

user@user-PC:~/Downloads/geoip$ ./geoip -c config.json 
2023/01/29 11:24:15 unknown config type
user@user-PC:~/Downloads/geoip$ 

希望能指出什么地方不对,谢谢!!

有限承認國家IP資料

資料庫中是否包含有線承認國家的IP位置?(例:科索沃)或者是將其劃入主權聲索國之IP範圍?

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.