一款go语言的IP查询工具

admin 2023年3月23日08:02:57评论61 views字数 1182阅读3分56秒阅读模式
0x00 项目编译
项目是开源的,地址在此
https://github.com/SleepingBag945/IPSearch
直接下载IP.zip文件和exe文件,本机运行发现错误。
一款go语言的IP查询工具
具体错误消息
Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub

下载项目源码后,windows系统本地运行,发现系统不存在GCC编译器,无法顺利编译。
因此考虑在Ubuntu下,编译。此时就需要安装ubuntu的go环境。
ubuntu上的环境apt安装的go版本过低,需要手动安装并且配置环境变量。
下载go的文件包 go1.20.linux-amd64.tar.gz之后使用tar命令解压缩,并且将文件放到/usr/local路径下。
修改环境变量文件添加path等路径
export GOROOT=/usr/local/goexport PATH=$GOROOT/bin:$PATH

之后执行go mod tidy命令,但是网络中断,此时需要配置goproxy,使用代理
export GOPROXY=https://proxy.golang.com.cn,direct

之后因为平台运行目标为win,需要编译符合windows平台64的exe程序。
继续配置编译需要的环境变量:
export CGO_ENABLED=1export GOOS=windowsexport GOARCH=amd64

具体执行go build,发现新的错误
gcc: error: unrecognized command line option ‘-mthreads’; did you mean ‘-pthread’?

查询后发现需要安装两个组件
apt-get install gcc-mingw-w64apt-get install gcc-multilib
之后配置
CC=x86_64-w64-mingw32-gccgo build
发现文件成功生成。
本地测试 可以正常运行。
一款go语言的IP查询工具
0x01 代码解读
项目整体的结构也较为简单,IP.db是一个sqlite3格式的数据库文件,可以直接导入打开。
其他代码中定义了两个函数,直接查询IP相关信息
queryInfoByIPqueryInfoByKey
主要的逻辑也即为查询语句,然后显示结果,无其他特殊内容。
  query := "select inetnum,netname,country,descr,status,"last-modified" from ipseg where start <= %d and end >= %d order by end-start ASC limit 0,1;"  query = fmt.Sprintf(query, ip, ip)  rows, err := db.Query(query)


原文始发于微信公众号(here404):一款go语言的IP查询工具

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月23日08:02:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一款go语言的IP查询工具http://cn-sec.com/archives/1622927.html

发表评论

匿名网友 填写信息