-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
121 additions
and
110 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,110 +1,121 @@ | ||
# geo | ||
|
||
🗺An easy way to manage all your Geo resources. | ||
|
||
Support GeoIP/GeoSite code lookup and converting among all popular GeoIP/GeoSite databases. | ||
|
||
## Install | ||
|
||
Requirements: | ||
|
||
- [Go](https://go.dev) 1.20+ | ||
|
||
```shell | ||
go install -v github.com/metacubex/geo/cmd/geo@master | ||
``` | ||
|
||
## Usage | ||
|
||
Type `geo help` for more details. | ||
|
||
### Look up codes from existing Geo databases | ||
|
||
The default directory to find Geo databases is | ||
`~/.geo`. You can specify it through `-D` argument. | ||
|
||
#### IP | ||
|
||
```shell | ||
geo look 223.5.5.5 | ||
``` | ||
|
||
```shell | ||
geo look 2001:250:: | ||
``` | ||
|
||
#### Site | ||
|
||
```shell | ||
geo look example.com | ||
``` | ||
|
||
```shell | ||
geo look --no-resolve example.com | ||
``` | ||
|
||
Supported databases for `look` command: | ||
|
||
- MaxMind MMDB | ||
- V2Ray dat GeoIP/GeoSite | ||
- sing-geosite | ||
- sing-geoip MMDB | ||
- Meta-geoip MMDB | ||
|
||
### Convert | ||
|
||
#### IP | ||
|
||
```shell | ||
geo convert ip -i <input_type> -o <output_type> -f [output_filename] input_filename | ||
``` | ||
|
||
```shell | ||
geo convert ip -i v2ray -o meta ./geoip.dat | ||
``` | ||
|
||
Available types: | ||
|
||
- [MaxMind](https://github.com/Dreamacro/maxmind-geoip) (MMDB) | ||
- [V2Ray-geoip](https://github.com/v2fly/geoip) (dat) | ||
- [sing-geoip](https://github.com/SagerNet/sing-geoip) (MMDB) | ||
- [Meta-geoip](https://github.com/MetaCubeX/meta-rules-dat) (MMDB) | ||
|
||
Supported conversion pairs: (Column=From, Row=To) | ||
|
||
| | MaxMind | V2Ray-geoip | sing-geoip | Meta-geoip | | ||
| ---------- | :-----: | :---------: | :--------: | :--------: | | ||
| MaxMind | - | | | | | ||
| V2Ray | | - | | | | ||
| sing-geoip | ✅ | ✅ | - | ✅ | | ||
| Meta-geoip | | ✅ | | - | | ||
|
||
Conversion to MaxMind is not available for legal reasons. | ||
Conversion to V2Ray is on the TODO list. | ||
|
||
#### Site | ||
|
||
```shell | ||
geo convert site -i <input_type> -o <output_type> -f [output_filename] -c [country code] input_filename | ||
``` | ||
|
||
```shell | ||
geo convert site -i v2ray -o sing ./geosite.dat | ||
``` | ||
|
||
Only v2ray -> sing conversion is supported for GeoSite. | ||
|
||
## Frequently Asked Questions (FAQ) | ||
|
||
### Why conversion MaxMind/sing-geoip -> Meta-geoip is not available? | ||
|
||
Meta-geoip is designed to support IP with multiple results, | ||
which will help users who use GeoIP functionality as IPList or IPSet. | ||
|
||
For sources such as MaxMind and sing-geoip, which only have a single possible result, | ||
according to the principle of Occam's razor, there is no need to convert to Meta-geoip database. | ||
In the other hand, when there is only a single result, | ||
the data structure of Meta-geoip and sing-geoip is completely consistent, | ||
and even compatible with the parsing logic. | ||
|
||
Clash.Meta supports all of these databases, so everything is well. :-) | ||
# geo | ||
|
||
🗺An easy way to manage all your Geo resources. | ||
|
||
Support GeoIP/GeoSite code lookup and converting among all popular GeoIP/GeoSite databases. | ||
|
||
## Install | ||
|
||
Requirements: | ||
|
||
- [Go](https://go.dev) 1.20+ | ||
|
||
```shell | ||
go install -v github.com/metacubex/geo/cmd/geo@master | ||
``` | ||
|
||
## Usage | ||
|
||
Type `geo help` for more details. | ||
|
||
### Look up codes from existing Geo databases | ||
|
||
The default directory to find Geo databases is | ||
`~/.geo`. You can specify it through `-D` argument. | ||
|
||
#### IP | ||
|
||
```shell | ||
geo look 223.5.5.5 | ||
``` | ||
|
||
```shell | ||
geo look 2001:250:: | ||
``` | ||
|
||
#### Site | ||
|
||
```shell | ||
geo look example.com | ||
``` | ||
|
||
```shell | ||
geo look --no-resolve example.com | ||
``` | ||
|
||
Supported databases for `look` command: | ||
|
||
- MaxMind MMDB | ||
- V2Ray dat GeoIP/GeoSite | ||
- sing-geosite | ||
- sing-geoip MMDB | ||
- Meta-geoip MMDB | ||
|
||
### Convert | ||
|
||
#### IP | ||
|
||
```shell | ||
geo convert ip -i <input_type> -o <output_type> -f [output_filename] input_filename | ||
``` | ||
|
||
```shell | ||
geo convert ip -i v2ray -o meta ./geoip.dat | ||
``` | ||
|
||
Available types: | ||
|
||
- [MaxMind](https://github.com/Dreamacro/maxmind-geoip) (MMDB) | ||
- [V2Ray-geoip](https://github.com/v2fly/geoip) (dat) | ||
- [sing-geoip](https://github.com/SagerNet/sing-geoip) (MMDB) | ||
- [Meta-geoip](https://github.com/MetaCubeX/meta-rules-dat) (MMDB) | ||
|
||
Supported conversion pairs: (Column=From, Row=To) | ||
|
||
| | MaxMind | V2Ray-geoip | sing-geoip | Meta-geoip | | ||
| ---------- | :-----: | :---------: | :--------: | :--------: | | ||
| MaxMind | - | | | | | ||
| V2Ray | | - | | | | ||
| sing-geoip | ✅ | ✅ | - | ✅ | | ||
| Meta-geoip | | ✅ | | - | | ||
|
||
Conversion to MaxMind is not available for legal reasons. | ||
Conversion to V2Ray is on the TODO list. | ||
|
||
#### Site | ||
|
||
```shell | ||
geo convert site -i <input_type> -o <output_type> -f [output_filename] -c [country code] input_filename | ||
``` | ||
|
||
```shell | ||
geo convert site -i v2ray -o sing ./geosite.dat | ||
``` | ||
|
||
Only v2ray -> sing conversion is supported for GeoSite. | ||
|
||
### Unpack | ||
|
||
#### site | ||
|
||
```shell | ||
geo unpack site ./geosite.dat -d output -c cn | ||
``` | ||
|
||
- -d output dir | ||
- -c code, unpack all geosite if not set | ||
|
||
## Frequently Asked Questions (FAQ) | ||
|
||
### Why conversion MaxMind/sing-geoip -> Meta-geoip is not available? | ||
|
||
Meta-geoip is designed to support IP with multiple results, | ||
which will help users who use GeoIP functionality as IPList or IPSet. | ||
|
||
For sources such as MaxMind and sing-geoip, which only have a single possible result, | ||
according to the principle of Occam's razor, there is no need to convert to Meta-geoip database. | ||
In the other hand, when there is only a single result, | ||
the data structure of Meta-geoip and sing-geoip is completely consistent, | ||
and even compatible with the parsing logic. | ||
|
||
Clash.Meta supports all of these databases, so everything is well. :-) |