🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Sign inDemoInstall
Socket

github.com/v2fly/geoip

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/v2fly/geoip

v0.0.0-20250328142103-7cba21fc3b1e
Source
Go
Version published
Created
Source

GeoIP for V2Ray

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

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 country mmdb database to other formats
  • dbipCountryMMDB: Convert DB-IP lite country 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

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

Notices

  • 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)
  - dbipCountryMMDB (Convert DB-IP lite country mmdb database to other formats)
  - maxmindGeoLite2CountryCSV (Convert MaxMind GeoLite2 country CSV data to other formats)
  - maxmindMMDB (Convert MaxMind GeoLite2 country 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)

License

This project is licensed under CC-BY-SA-4.0 license.

The free IP Geolocation data by DB-IP is licensed under CC-BY-4.0 license.

FAQs

Package last updated on 28 Mar 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts