Coder Social home page Coder Social logo

zu1k / nali Goto Github PK

View Code? Open in Web Editor NEW
3.7K 27.0 332.0 36.59 MB

An offline tool for querying IP geographic information and CDN provider. 一个查询IP地理信息和CDN服务提供商的离线终端工具.

Home Page: https://github.com/zu1k/nali

License: MIT License

Dockerfile 0.47% Makefile 4.47% Go 95.06%
nali nali-cli ip geoip2 chunzhen qqwry qqwry-ip-database geoip golang cli

nali's People

Contributors

datebro avatar dependabot[bot] avatar fengdelan avatar hezhizhen avatar huyz-git avatar hyliang96 avatar jasonttu avatar jingjingxyk avatar lgtm-migrator avatar lh1xc avatar m09ic avatar mzz2017 avatar oldshensheep avatar oldthreefeng avatar wisecsj avatar zpcc avatar zu1k 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  avatar  avatar  avatar  avatar

nali's Issues

win10 update ipv6 总是报错,重启也不行。

image

win10 update ipv6 总是报错,重启也不行。

centos下没问题。
[root@localhost bin]# /usr/local/bin/nali update
2022/04/08 23:34:57 正在下载最新 纯真 IPv4数据库...
2022/04/08 23:35:02 已将最新的 纯真IP库 保存到本地: [/root/.nali/qqwry.dat]
2022/04/08 23:35:02 正在下载最新 ZX IPv6数据库...
2022/04/08 23:35:03 已将最新的 ZX IPv6数据库 保存到本地: [/root/.nali/zxipv6wry.db]
ll2022/04/08 23:35:07 已将最新的 ip2region 保存到本地: [/root/.nali/ip2region.db]
2022/04/08 23:35:07 正在下载最新 CDN服务提供商数据库...

2022/04/08 23:35:08 已将最新的 CDN数据库 保存到本地: [/root/.nali/cdn.yml]

nali-linux-amd64-v0.2.2.gz: not in gzip format

所以,这到底是个什么格式?

➜  shell ls nali-linux-amd64-v0.2.2.gz -l
-rw-r--r-- 1 GoGoogle GoGoogle 8130560 7月  30 07:37 nali-linux-amd64-v0.2.2.gz
➜  shell gzip ./nali-linux-amd64-v0.2.2.gz -d ./nali/

gzip: ./nali-linux-amd64-v0.2.2.gz: not in gzip format
gzip: ./nali/ is a directory -- ignored
➜  shell

go get 安装不成功,命令执行后没有执行文件!

以下是 go get -u -v github.com/zu1k/nali 执行返回。然后当前目录下没有文件产生。
请求指导!

root@Armbian:/tmp/temp# go get -u -v github.com/zu1k/nali go: downloading github.com/zu1k/nali v0.2.4 go: downloading github.com/spf13/cobra v1.1.3 go: downloading golang.org/x/text v0.3.6 go: downloading github.com/saracen/go7z v0.0.0-20191010121135-9c09b6bd7fda go: downloading github.com/oschwald/geoip2-golang v1.5.0 go: downloading github.com/ipipdotnet/ipdb-go v1.3.1 go: downloading github.com/inconshreveable/mousetrap v1.0.0 go: downloading github.com/spf13/pflag v1.0.5 go: downloading github.com/saracen/solidblock v0.0.0-20190426153529-45df20abab6f go: downloading github.com/ulikunitz/xz v0.5.7 go: downloading github.com/oschwald/maxminddb-golang v1.8.0 go: downloading golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae go: downloading github.com/ulikunitz/xz v0.5.10 go: downloading golang.org/x/sys v0.0.0-20210415045647-66c3f260301c github.com/zu1k/nali/constant golang.org/x/sys/internal/unsafeheader github.com/ulikunitz/xz/internal/hash golang.org/x/text/encoding/internal/identifier golang.org/x/text/transform golang.org/x/sys/unix github.com/zu1k/nali/internal/ipdb github.com/spf13/pflag github.com/zu1k/nali/internal/tools github.com/zu1k/nali/pkg/common github.com/ipipdotnet/ipdb-go github.com/zu1k/nali/pkg/cdn golang.org/x/text/encoding github.com/zu1k/nali/pkg/ipip golang.org/x/text/encoding/internal github.com/saracen/go7z/filters golang.org/x/text/encoding/simplifiedchinese github.com/saracen/go7z/headers github.com/saracen/solidblock github.com/ulikunitz/xz/internal/xlog github.com/ulikunitz/xz/lzma github.com/spf13/cobra github.com/oschwald/maxminddb-golang github.com/zu1k/nali/pkg/qqwry github.com/oschwald/geoip2-golang github.com/saracen/go7z github.com/zu1k/nali/pkg/geoip github.com/zu1k/nali/pkg/zxipv6wry github.com/zu1k/nali/internal/app github.com/zu1k/nali/cmd github.com/zu1k/nali

部分 CNAM 匹配失败

nslookup img.vodjk.com 114.114.114.114 | nali
Server:		114.114.114.114 [114DNS.COM 114DNS.COM]
Address:	114.114.114.114 [114DNS.COM 114DNS.COM]#53

Non-authoritative answer:
img.vodjk.com	canonical name = img.vodjk.com.s.galileo.jcloud-cdn.com.
img.vodjk.com.s.galileo.jcloud-cdn.com	canonical name = mfn-sched.jcloud-cdn.com.
Name:	mfn-sched.jcloud-cdn.com
Address: 180.97.189.3 [** 江苏 扬州]

jcloud-cdn.com 在 cdn.json 里 https://github.com/zu1k/nali/blob/master/db/cdn.json#L530

类似格式百度的可以正常显示

nslookup www.baidu.com 114.114.114.114 | nali
Server:		114.114.114.114 [114DNS.COM 114DNS.COM]
Address:	114.114.114.114 [114DNS.COM 114DNS.COM]#53

Non-authoritative answer:
www.baidu.com	canonical name = www.a.shifen.com.
Name:	www.a.shifen.com [百度旗下业务地域负载均衡系统]
Address: 14.215.177.38 [** 广东 广州]
Name:	www.a.shifen.com [百度旗下业务地域负载均衡系统]
Address: 14.215.177.39 [** 广东 广州]

单独查询这个 CNAME 可以匹配 CDN 信息

nslookup mfn-sched.jcloud-cdn.com 114.114.114.114 | nali
Server:		114.114.114.114 [114DNS.COM 114DNS.COM]
Address:	114.114.114.114 [114DNS.COM 114DNS.COM]#53

Non-authoritative answer:
Name:	mfn-sched.jcloud-cdn.com [京东云 CDN]
Address: 111.123.242.3 [** 贵州 遵义]

CDN 数据库获取为 404 无法使用

 nali update
2022/05/01 17:48:38 正在下载最新 纯真 IPv4数据库...
2022/05/01 17:48:41 已将最新的 纯真IP库 保存到本地: C:\Users\...\.nali\qqwry.dat
2022/05/01 17:48:41 正在下载最新 ZX IPv6数据库...
2022/05/01 17:48:45 已将最新的 ZX IPv6数据库 保存到本地: C:\Users\...\.nali\ipv6wry.db
2022/05/01 17:48:45 正在下载最新 CDN服务提供商数据库...
2022/05/01 17:48:47 已将最新的 CDN数据库 保存到本地: C:\Users\...\.nali\cdn.json

虽然执行 update 成功,但 cdn.json 内容是:

404: Not Found

自此之后执行任何命令都会报错:

ping www.ddnsto.com | nali
panic: cdn data parse failed!

goroutine 1 [running]:
github.com/zu1k/nali/pkg/cdn.NewCDN(0xc000550060, 0x1e, 0x0)
        C:/Users/legend/go/pkg/mod/github.com/zu1k/[email protected]/pkg/cdn/cdn.go:47 +0x326
github.com/zu1k/nali/internal/app.InitCDNDB()
        C:/Users/legend/go/pkg/mod/github.com/zu1k/[email protected]/internal/app/cdn.go:25 +0x9d
github.com/zu1k/nali/cmd.glob..func3(0x102d660, 0x1078198, 0x0, 0x0)
        C:/Users/legend/go/pkg/mod/github.com/zu1k/[email protected]/cmd/root.go:57 +0x33
github.com/spf13/cobra.(*Command).execute(0x102d660, 0xc000036210, 0x0, 0x0, 0x102d660, 0xc000036210)
        C:/Users/legend/go/pkg/mod/github.com/spf13/[email protected]/command.go:860 +0x2c2
github.com/spf13/cobra.(*Command).ExecuteC(0x102d660, 0x95668b, 0xc000048058, 0x96b801)
        C:/Users/legend/go/pkg/mod/github.com/spf13/[email protected]/command.go:974 +0x375
github.com/spf13/cobra.(*Command).Execute(...)
        C:/Users/legend/go/pkg/mod/github.com/spf13/[email protected]/command.go:902
github.com/zu1k/nali/cmd.Execute()
        C:/Users/legend/go/pkg/mod/github.com/zu1k/[email protected]/cmd/root.go:64 +0x38
main.main()
        C:/Users/legend/go/pkg/mod/github.com/zu1k/[email protected]/main.go:14 +0x2c

请问是否可以加入启用特定数据库的选项以及修复一下 CDN 的数据库源地址?

parseBaseCname Error

parseBaseCname() may be error. eg:www.ucloud.cn.ucloud.com.cn

func parseBaseCname(url string) (string, error) {
extract, err := tldextract.New(TldCachePath, false)
if err != nil {
return "", err
}
res := extract.Extract(url)
rootDomain := res.Root + "." + res.Tld
return rootDomain, nil
}

使用 Scoop 从 0.3.9 升级到 0.3.10 出错

之前安装时没这个问题,升级时发现 Windows Security 弹了个通知然后下载的文件被删了导致升级失败。
不知道你是否有空分析一下原因?

系统环境
Edition Windows 11 Pro
Version 21H2
Installed on ‎11/‎23/‎2021
OS build 22000.675
Experience Windows Feature Experience Pack 1000.22000.675.0

ofc0ATMRDn

数据库目录存放建议

希望支持数据库存放在和程序同目录,或可指定存储目录,Linux下不同用户使用都需要单独下载一次不是很合理,希望采纳,谢谢!

dig 匹配失败

nslookup 正常

nslookup img.vodjk.com 114.114.114.114 | nali
Server:		114.114.114.114 [114DNS.COM 114DNS.COM]
Address:	114.114.114.114 [114DNS.COM 114DNS.COM]#53

Non-authoritative answer:
img.vodjk.com	canonical name = img.vodjk.com.s.galileo.jcloud-cdn.com.
img.vodjk.com.s.galileo.jcloud-cdn.com [京东云 CDN]	canonical name = mfn-sched.jcloud-cdn.com.
Name:	mfn-sched.jcloud-cdn.com [京东云 CDN]
Address: 180.97.189.3 [** 江苏 扬州]

dig 没有匹配 CNAME 信息

dig img.vodjk.com @114.114.114.114 +short | nali
img.vodjk.com.s.galileo.jcloud-cdn.com.
mfn-sched.jcloud-cdn.com.
180.97.189.3 [** 江苏 扬州]

移除尾部的 . 后正常显示,域名尾部的 . 是符合 RFC 规范的

dig img.vodjk.com @114.114.114.114 +short  | sed 's/\.$//' | nali
img.vodjk.com.s.galileo.jcloud-cdn.com [京东云 CDN]
mfn-sched.jcloud-cdn.com [京东云 CDN]
180.97.189.3 [** 江苏 扬州]

SIGSEGV when using geoip database to query ipv6

$ NALI_DB=geoip nali-go
::1
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x70091f]

goroutine 1 [running]:
github.com/zu1k/nali/internal/app.ReplaceIPInString(0xc000029e88, 0x3, 0xc000029e88, 0x3)
        github.com/zu1k/nali/internal/app/parse.go:100 +0x67f
github.com/zu1k/nali/internal/app.Root(0xae6098, 0x0, 0x0)
        github.com/zu1k/nali/internal/app/command.go:31 +0xcb
github.com/zu1k/nali/cmd.glob..func3(0xab1aa0, 0xae6098, 0x0, 0x0)
        github.com/zu1k/nali/cmd/root.go:58 +0x51
github.com/spf13/cobra.(*Command).execute(0xab1aa0, 0xc000020210, 0x0, 0x0, 0xab1aa0, 0xc000020210)
        github.com/spf13/[email protected]/command.go:856 +0x2c2
github.com/spf13/cobra.(*Command).ExecuteC(0xab1aa0, 0x407de5, 0xc0000261d8, 0x401260)
        github.com/spf13/[email protected]/command.go:960 +0x375
github.com/spf13/cobra.(*Command).Execute(...)
        github.com/spf13/[email protected]/command.go:897
github.com/zu1k/nali/cmd.Execute()
        github.com/zu1k/nali/cmd/root.go:64 +0x31
main.main()
        github.com/zu1k/nali/main.go:14 +0x2a

version 0.2.3

匹配某种形式的地址会出错。

比如::ffff这种地址

~ nslookup chdbits.co 223.5.5.5
Server:  public1.alidns.com
Address:  223.5.5.5

Name:    chdbits.co
Addresses:  ::ffff:104.26.11.119
          104.26.11.119

~ nslookup chdbits.co 223.5.5.5 | nali
Server:  public1.alidns.com
Address:  223.5.5.5 [浙江省杭州市 阿里巴巴阿里云AliDNS服务器]

Name:    chdbits.co
Addresses:  ::ffff:104 [IANA保留地址] .26.11.119
          104.26.11.119 [美国 CloudFlare公司CDN节点]

使用 正则匹配 判断是否为ipv4/6的性能和算法实现的性能差别还是挺大的

推荐一个leecode上的大佬写的.

func isIPV4(IP string) bool {
    arr := strings.Split(IP, ".")
    if len(arr) != 4 {
        return false
    }
    for _, elem := range arr {
        if elem == "" {
            return false
        }
        if len(elem) > 1 && elem[0] == '0' {
            return false
        }
        num := 0
        for _, c := range elem {
            if c >= '0' && c <= '9' {
                num = num*10 + int(c - '0')
            }else{
                return false
            }
        }
        if num > 255 {
            return false
        }
    }
    return true
}

//IPV6地址的判断:
//1. 用“:”分割字符串,若长度不等于8,则return Neither
//2. 遍历每一个数组的每一个元素,若元素的长度大于4,则return Neither
//3. 判断每一个元素的字符,若出现非0-9,A-F的字符,则return Neither
func isIPV6(IP string) bool {
    IP = strings.ToUpper(IP)
    arr := strings.Split(IP, ":")
    if len(arr) != 8 {
        return false
    }
    for _, elem := range arr {
        if elem == "" || len(elem) > 4{
            return false
        }
        
        for _, c := range elem {
            if (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F'){
                continue
            }else{
                return false
            }
        }
    }
    return true
}

go install报错

go install github.com/zu1k/nali

go: 'go install' requires a version when current directory is not in a module
	Try 'go install github.com/zu1k/nali@latest' to install the latest version

后面要加上版本

通配符规则没有解析

https://github.com/zu1k/nali/blob/master/db/cdn.json#L482

  "kunlun(.*).com": {
    "name": "阿里云 CDN",
    "link": "https://www.aliyun.com/product/cdn"
  }

一个例子
nslookup asset.watsons.com.cn | nali
Server: 192.168.1.1 [局域网 局域网]
Address: 192.168.1.1 [局域网 局域网]#53

Non-authoritative answer:
asset.watsons.com.cn canonical name = asset.watsons.com.cn.w.kunlunno.com.
Name: asset.watsons.com.cn.w.kunlunno.com
Address: 125.36.136.244 [** 天津 天津]
Name: asset.watsons.com.cn.w.kunlunno.com
Address: 125.36.180.241 [** 天津 天津]

确认程序是正常工作的
nslookup playe.atnxty.com | nali
Server: 192.168.1.1 [局域网 局域网]
Address: 192.168.1.1 [局域网 局域网]#53

Non-authoritative answer:
playe.atnxty.com canonical name = playe.atnxty.com.w.cdngslb.com [阿里云 CDN].
Name: playe.atnxty.com.w.cdngslb.com [阿里云 CDN]
Address: 222.186.16.239 [** 江苏 镇江]
Name: playe.atnxty.com.w.cdngslb.com [阿里云 CDN]
Address: 58.215.158.239 [** 江苏 无锡]

Windows下nslookup nali.lgf.im 8.8.8.8 | nali 回显字符异常

在Windows terminal下面输入会有异常

D:\Tools\nali>nslookup nali.lgf.im 8.8.8.8 | nali
非权威应答:
������:  dns.google
Address:  8.8.8.8 [美国 加利福尼亚州圣克拉拉县山景市谷歌公司DNS服务器]

����:    nali.lgf.im
Addresses:  104.21.6.190 [美国 CloudFlare公司CDN节点]
          172.67.135.48 [美国 CloudFlare节点]

很方便的工具,可不可以增加点提示和新的功能

  1. 当提示【文件不存在,尝试从网络获取最新数据库】时,显示下载进度条,否则网络差的时候,看起来像是程序卡住了
  2. 设置NALI_DB_IP4=geoip:chunzhen:ipip时,可以同时显示多个IP库的结果
  3. 是否可以支持mtr呢,例如: mtr -n baidu.com | ./nali 。traceroute命令显示正常,而mtr是动态的,界面都乱掉了
  4. 除了pipeline,也支持直接读取普通文件或gz文件,例如 nali /var/log/nginx/access.log,nali /var/log/nginx/login.access.log-20181220.gz
  5. 增加一个选项,启用后可以直接支持查询域名和URL(截取域名并解析成IP),类似下面这样
    image

需要支持通配符或者正则

可能需要引入字符串 glob 或者正则来处理。

阿里云全局流量管理,https://help.aliyun.com/document_detail/283229.html

通过 ICP 备案查询,阿里云注册了 63 个域名

gtm-a1b1.com  ~ gtm-a1b9.com
...
gtm-a7b1.com  ~ gtm-a7b9.com

添加设置 4ft35t/cdn@47fa60c

gtm-a[1-7]b[1-9].com:
  name: 阿里云全局流量管理
  link: https://help.aliyun.com/document_detail/283229.html

可测试域名

nslookup exp.leuke.cn 114.114.114.114
Server:         114.114.114.114
Address:        114.114.114.114#53

Non-authoritative answer:
exp.leuke.cn    canonical name = gtm-cn-zvp2nicnw08.gtm-a2b2.com.
Name:   gtm-cn-zvp2nicnw08.gtm-a2b2.com
Address: 59.110.23.54

[help wanted] nali will destroy mtr output format

✘ ⚡ root@tx-HK-Debian10  /aabin  nali --version       
nali version 0.3.7

 ? root@tx-HK-Debian10 ? /aabin ? lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 10 (buster)
Release:	10
Codename:	buster


 ⚡ root@tx-HK-Debian10  /aabin  mtr baidu.com |nali

结果出现排版很多错位的
image

如果不用nali,mtr同一个,如下图
image

about Releases and Tags

The releases and tags were mistakenly deleted by a gitea mirror push, I'm contacting GitHub staff to undo it.

一行多个IP会导致只有部分显示结果

目前状况:

167.71.18.94 207.154.224.242 [美国 纽约市DigitalOcean云公司]  47.106.88.234 120.246.107.20 [** 移动]  111.59.153.137 118.123.213.221 172.105.90.107 207.180.236.214 [美国 ]  143.198.50.119 [美国 ]  165.232.161.232 182.150.48.140 [四川省成都市 电信]

分析:看了一下代码,正则匹配是正常的。出错的原因是ip同时命中了ipv4和domain的正则,sort之后有的ip在数组中是ipv4匹配在前,有的是domain在前,ipv4在前的结果就被domain的覆盖了,而domain查询结果为空,导致最终结果为空。

Element[0] = &{[%!s(int=0) %!s(int=12)] %!s(entity.EntityType=2) 167.71.18.94 }
Element[1] = &{[%!s(int=0) %!s(int=12)] %!s(entity.EntityType=0) 167.71.18.94 }
Element[2] = &{[%!s(int=13) %!s(int=28)] %!s(entity.EntityType=0) 207.154.224.242 }
Element[3] = &{[%!s(int=13) %!s(int=28)] %!s(entity.EntityType=2) 207.154.224.242 }

解决方案:
核心原因是正则问题,所以我的修复方式是修改正则,增加domain匹配的时候匹配一级域名,一级域名是在cdn.json里找出来的
`[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})*.(cc|cloud|com.cn|com|co|cn|io|me|net|org|tv)``
ps:其实改成同个ip多次匹配返回非空那个比较合理,但不会写go。。。。
pps:正则改成这样肯定也会有问题,但我一般不查cdn问题不大

结果:

➜  nali git:(master) ✗ go run . 167.71.18.94 207.154.224.242 47.106.88.234 120.246.107.20 111.59.153.137 118.123.213.221 172.105.90.107 207.180.236.214 143.198.50.119 165.232.161.232 182.150.48.140
167.71.18.94 [美国 ]  207.154.224.242 [美国 纽约市DigitalOcean云公司]  47.106.88.234 [广东省深圳市 阿里云]  120.246.107.20 [** 移动]  111.59.153.137 [广西南宁市 移动]  118.123.213.221 [四川省成都市 电信]  172.105.90.107 [德国 黑森州法兰克福Linode数据中心]  207.180.236.214 [美国 ]  143.198.50.119 [美国 ]  165.232.161.232 [美国 ]  182.150.48.140 [四川省成都市 电信]

请求添加显示版本的命令

nali versionnali -Vnali --version,输出后可查询当前nali的版本,后两种是比较常见的用法。方便脚本检测并自动更新。

查询IP出错

2020/08/24 17:19:42 文件不存在,尝试从网络获取最新ZX IPv6数据库
panic: invalid signature header

goroutine 1 [running]:
github.com/zu1k/nali/pkg/zxipv6wry.Un7z(0xc0000225c0, 0xe, 0x0, 0x0, 0x0, 0x8f83e0, 0xc0000a1670)
/home/xxxxxx/go/pkg/mod/github.com/zu1k/[email protected]/pkg/zxipv6wry/update.go:57 +0x61e
github.com/zu1k/nali/pkg/zxipv6wry.getData(0x0, 0x0, 0x0, 0x0, 0x0)
/home/xxxxxx/go/pkg/mod/github.com/zu1k/[email protected]/pkg/zxipv6wry/update.go:49 +0x2ca
github.com/zu1k/nali/pkg/zxipv6wry.Download(0xc000024120, 0x1f, 0x1, 0xc0000a00e0, 0x8f8a01, 0xc0000a2210, 0x1f)
/home/xxxxxx/go/pkg/mod/github.com/zu1k/[email protected]/pkg/zxipv6wry/update.go:16 +0x34
github.com/zu1k/nali/pkg/zxipv6wry.NewZXwry(0xc000024120, 0x1f, 0x0, 0x0)
/home/xxxxxx/go/pkg/mod/github.com/zu1k/[email protected]/pkg/zxipv6wry/zxipv6wry.go:27 +0xfa
github.com/zu1k/nali/internal/app.InitIPDB(0x1)
/home/xxxxxx/go/pkg/mod/github.com/zu1k/[email protected]/internal/app/parse.go:30 +0x480
github.com/zu1k/nali/cmd.glob..func3(0xbcd0c0, 0xc0000a1a70, 0x1, 0x1)
/home/xxxxxx/go/pkg/mod/github.com/zu1k/[email protected]/cmd/root.go:59 +0x39
github.com/spf13/cobra.(*Command).execute(0xbcd0c0, 0xc0000ae030, 0x1, 0x1, 0xbcd0c0, 0xc0000ae030)
/home/xxxxxx/go/pkg/mod/github.com/spf13/[email protected]/command.go:846 +0x29d
github.com/spf13/cobra.(*Command).ExecuteC(0xbcd0c0, 0x40748f, 0xc000096058, 0x0)
/home/xxxxxx/go/pkg/mod/github.com/spf13/[email protected]/command.go:950 +0x349
github.com/spf13/cobra.(*Command).Execute(...)
/home/xxxxxx/go/pkg/mod/github.com/spf13/[email protected]/command.go:887
github.com/zu1k/nali/cmd.Execute()
/home/xxxxxx/go/pkg/mod/github.com/zu1k/[email protected]/cmd/root.go:79 +0x31
main.main()
/home/xxxxxx/go/pkg/mod/github.com/zu1k/[email protected]/main.go:14 +0x25

执行nslookup报错

nslookup nali.zu1k.com 8.8.8.8 | nali
Server: 8.8.8.8 [美国 加利福尼亚州圣克拉拉县山景市谷歌公司DNS服务器]
Address: 8.8.8.8 [美国 加利福尼亚州圣克拉拉县山景市谷歌公司DNS服务器] #53

Non-authoritative answer:
panic: cdn data parse failed!

goroutine 1 [running]:
github.com/zu1k/nali/pkg/cdn.NewCDN({0xc0001c8120, 0x1b})
/Users/frank/go/pkg/mod/github.com/zu1k/[email protected]/pkg/cdn/cdn.go:54 +0x24d
github.com/zu1k/nali/internal/db.GetDB(0x2)
/Users/frank/go/pkg/mod/github.com/zu1k/[email protected]/internal/db/db.go:73 +0x1bd
github.com/zu1k/nali/internal/db.Find(0x147c310?, {0xc0001ac330, 0xd})
/Users/frank/go/pkg/mod/github.com/zu1k/[email protected]/internal/db/db.go:105 +0x5e
github.com/zu1k/nali/internal/entity.ParseLine({0xc0001ac330, 0x2e})
/Users/frank/go/pkg/mod/github.com/zu1k/[email protected]/internal/entity/parse.go:54 +0x389
github.com/zu1k/nali/internal/app.Root({0x16ee130?, 0x13d5abb?, 0x0?}, 0x0)
/Users/frank/go/pkg/mod/github.com/zu1k/[email protected]/internal/app/command.go:25 +0x105
github.com/zu1k/nali/cmd.glob..func1(0x16b8500?, {0x16ee130, 0x0, 0x0})
/Users/frank/go/pkg/mod/github.com/zu1k/[email protected]/cmd/root.go:56 +0x4f
github.com/spf13/cobra.(*Command).execute(0x16b8500, {0xc0001901e0, 0x0, 0x0})
/Users/frank/go/pkg/mod/github.com/spf13/[email protected]/command.go:860 +0x663
github.com/spf13/cobra.(*Command).ExecuteC(0x16b8500)
/Users/frank/go/pkg/mod/github.com/spf13/[email protected]/command.go:974 +0x3b4
github.com/spf13/cobra.(*Command).Execute(...)
/Users/frank/go/pkg/mod/github.com/spf13/[email protected]/command.go:902
github.com/zu1k/nali/cmd.Execute()
/Users/frank/go/pkg/mod/github.com/zu1k/[email protected]/cmd/root.go:62 +0x25
main.main()
/Users/frank/go/pkg/mod/github.com/zu1k/[email protected]/main.go:8 +0x17

版本号命名方式修改通知 0.3.8 => v0.3.8

因为 go install 仅会将 v0.3.8 类型的 tag 作为有效的版本号,而不会识别 0.3.8,我决定从 0.4 版本开始,版本号将恢复 v 开头的版本号命名方式,提前通知

WIN10 cmd输出乱码

C:\Users\user>tracert -d 208.54.80.99 |nali

ͨ������ 30 ��Ծ�����ٵ� 208.54.80.99 [美国] ��·��

1 1 ms <1 ���� <1 ���� 192.168.2.4 [局域网 对方和您在同一内部网]
2 240 ms 319 ms 320 ms 172.16.1.1 [局域网 对方和您在同一内部网]
3 270 ms 319 ms 226 ms 140.91.194.153 [美国]
4 264 ms 319 ms 219 ms 128.241.7.147 [美国 日本NTT通讯美洲公司]
5 278 ms 321 ms 315 ms 128.241.7.146 [美国 日本NTT通讯美洲公司]
6 245 ms 343 ms * 129.250.3.237 [日本 NTT通信公司骨干网]
7 253 ms 326 ms 311 ms 129.250.2.160 [日本 东京都NTT通信公司国际互联节点]
8 272 ms 226 ms 228 ms 144.232.0.193 [美国 Sprint电信公司网络]
9 349 ms 327 ms 312 ms 144.232.22.162 [美国 Sprint电信公司网络]
10 254 ms 319 ms 319 ms 144.232.22.95 [美国 Sprint电信公司网络]
11 273 ms 320 ms 240 ms 144.232.15.238 [美国 Sprint电信公司网络]
12 276 ms 312 ms 321 ms 144.232.15.166 [美国 Sprint电信公司网络]
13 594 ms 318 ms 318 ms 144.232.22.87 [美国 Sprint电信公司网络]
14 595 ms 278 ms 271 ms 144.232.23.145 [美国 Sprint电信公司网络]
15 * * * ������ʱ��
16 * * * ������ʱ��

C:\Users\user>ping 208.67.220.220 | nali

���� Ping 208.67.220.220 [美国 加利福尼亚州旧金山市OpenDNS有限公司公众DNS服务器] ���� 32 �ֽڵ�����:
���� 208.67.220.220 [美国 加利福尼亚州旧金山市OpenDNS有限公司公众DNS服务器] �Ļظ�: �ֽ�=32 ʱ��=57ms TTL=52
���� 208.67.220.220 [美国 加利福尼亚州旧金山市OpenDNS有限公司公众DNS服务器] �Ļظ�: �ֽ�=32 ʱ��=47ms TTL=52
���� 208.67.220.220 [美国 加利福尼亚州旧金山市OpenDNS有限公司公众DNS服务器] �Ļظ�: �ֽ�=32 ʱ��=59ms TTL=52
���� 208.67.220.220 [美国 加利福尼亚州旧金山市OpenDNS有限公司公众DNS服务器] �Ļظ�: �ֽ�=32 ʱ��=57ms TTL=52

208.67.220.220 [美国 加利福尼亚州旧金山市OpenDNS有限公司公众DNS服务器] �� Ping ͳ����Ϣ:
���ݰ�: �ѷ��� = 4���ѽ��� = 4����ʧ = 0 (0% ��ʧ)��
�����г̵Ĺ���ʱ��(�Ժ���Ϊ��λ):
���� = 47ms��� = 59ms��ƽ�� = 55ms

Not work with *.com.*.com

Some CDN providers use the source domain as the prefix of CNAME, like a.com.qiniudns.com.

Nali does not work with that:

$ echo a.a.qiniudns.com | nali
a.a.qiniudns.com [七牛云]

$ echo a.com.qiniudns.com | nali
a.com.qiniudns.com

封装API

请问如何封装API调用呢,感谢

output error when the ip is repeated as a entire or as a substring

  1. When then an ip is repeated like n times in a line, then in the output of nali for this line, the geological location will be repeated n times after everywhere the ip appears.

For example:

> echo '127.0.0.1 aaa' | nali
127.0.0.1 [本机地址] aaa

> echo '127.0.0.1 aaa 127.0.0.1' | nali
127.0.0.1 [本机地址] [本机地址] aaa 127.0.0.1 [本机地址] [本机地址]

> echo '127.0.0.1 aaa 127.0.0.1 bbbb 127.0.0.1' | nali
127.0.0.1 [本机地址] [本机地址] [本机地址] aaa 127.0.0.1 [本机地址] [本机地址] [本机地址] bbbb 127.0.0.1 [本机地址] [本机地址] [本机地址]

> echo '127.0.0.1 aa 127.0.0.2 aaaaa 127.0.0.1' | nali
127.0.0.1 [本机地址] [本机地址] aa 127.0.0.2 [局域网 IP] aaaaa 127.0.0.1 [本机地址] [本机地址]
  1. When a line contains more than ips, where one ip is a subtring of another ip, the ips will be parsed incorrectly. For example:
# ipxxxx   ip
> echo '127.0.0.12 aa 127.0.0.1 bbb' | nali
127.0.0.1 [本机地址]2 [局域网 IP] aa 127.0.0.1 [本机地址] bbb

# ip  ipxxxx
> echo '127.0.0.1 aa 127.0.0.12 bbb' | nali
127.0.0.1 [本机地址] aa 127.0.0.1 [本机地址]2 bbb

# ip  xxxip
> echo '27.0.0.1 aa 127.0.0.1 bbb' | nali
27.0.0.1 [日本 东京都Amazon数据中心] aa 127.0.0.1 [本机地址] [日本 东京都Amazon数据中心] bbb

# xxxip   ip
> echo '127.0.0.1 aa 27.0.0.1 bbb' | nali
127.0.0.1 [日本 东京都Amazon数据中心] [本机地址] aa 27.0.0.1 [日本 东京都Amazon数据中心] bbb

# xxxipxxx ip
> echo '127.0.0.12 aa 27.0.0.1 bbb' | nali
127.0.0.1 [日本 东京都Amazon数据中心]2 [局域网 IP] aa 27.0.0.1 [日本 东京都Amazon数据中心] bbb

# ip    xxxxipxxxx
> echo '27.0.0.1 aa 127.0.0.12 bbb' | nali
27.0.0.1 [日本 东京都Amazon数据中心] aa 127.0.0.1 [日本 东京都Amazon数据中心]2 bbb

For different the aforementioned cases of the relations between the two ips, the fault is different.

qqwry手动解压错误

➜  doc nali 8.8.8.8
panic: runtime error: slice bounds out of range [:4] with capacity 0

goroutine 1 [running]:
github.com/zu1k/nali/pkg/qqwry.(*QQwry).searchIndex(0x4000097b28, 0x8080808, 0x10)
        github.com/zu1k/nali/pkg/qqwry/qqwry.go:124 +0x360
github.com/zu1k/nali/pkg/qqwry.QQwry.Find(0x400002d170, 0x1ae419277acaa757, 0x7fcaa9e413, 0x7, 0x0, 0x0)
        github.com/zu1k/nali/pkg/qqwry/qqwry.go:66 +0xb0
github.com/zu1k/nali/internal/app.ParseIPs(0x400005da80, 0x1, 0x1)
        github.com/zu1k/nali/internal/app/parse.go:48 +0xe0
github.com/zu1k/nali/cmd.glob..func3(0x76bce0, 0x400005da80, 0x1, 0x1)
        github.com/zu1k/nali/cmd/root.go:72 +0x1d0
github.com/spf13/cobra.(*Command).execute(0x76bce0, 0x400000c090, 0x1, 0x1, 0x76bce0, 0x400000c090)
        github.com/spf13/[email protected]/command.go:846 +0x1c4
github.com/spf13/cobra.(*Command).ExecuteC(0x76bce0, 0x42d1c, 0x40000240b8, 0x0)
        github.com/spf13/[email protected]/command.go:950 +0x260
github.com/spf13/cobra.(*Command).Execute(...)
        github.com/spf13/[email protected]/command.go:887
github.com/zu1k/nali/cmd.Execute()
        github.com/zu1k/nali/cmd/root.go:79 +0x30
main.main()
        github.com/zu1k/nali/main.go:14 +0x24
➜  doc

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.