-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
重新实现了 wry 格式数据库解析,包括 qqwry 和 zxipv6wry,支持并发查询
修复wry文件不完整时crash的问题 对 nali 的数据库和配置文件目录进行了规范,具体见 [文档-工作目录](https://github.com/zu1k/nali#%E5%B7%A5%E4%BD%9C%E7%9B%AE%E5%BD%95) 优先使用环境变量 NALI_HOME、NALI_CONFIG_HOME、NALI_DB_HOME 指定的目录 未指定 nali 特定环境变量的情况下默认使用 XDG 规范,配置文件目录在 $XDG_CONFIG_HOME/nali,数据库文件目录在 $XDG_DATA_HOME/nali 若未检测到 XDG 相关环境变量,将根据平台使用默认目录,具体见 XDG Base Directory 中 XDG_CONFIG_HOME 和 XDG_DATA_HOME 部分 初次运行此版本将会进行目录和数据的迁移,将 ~/.nali 下的配置文件和数据库转移到相应目录,并删除 ~/.nali 目录 支持使用环境变量指定的代理下载数据库,thanks to @jingjingxyk zu1k#126 修复了 pipe mtr 时无法获取内容和格式错乱的问题,thanks to @mzz2017 zu1k#132 , fix zu1k#12, zu1k#61, zu1k#85, zu1k#115, zu1k#123. cache map 使用并发安全的版本,thanks to @lhcn zu1k#125 升级 Go 版本到 1.19,更新了依赖 不再支持 ip2region 旧数据库格式,目前仅支持 ip2region xdb 格式 去除了已过时的数据库下载代码 从 git 历史记录中去除了数据库文件 修复自动迁移导致生成空配置文件的bug 更新纯真IP数据库的下载地址
- Loading branch information
Showing
44 changed files
with
2,008 additions
and
1,953 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,91 +1,93 @@ | ||
package cmd | ||
|
||
import ( | ||
"bufio" | ||
"fmt" | ||
"log" | ||
"os" | ||
"strings" | ||
|
||
"github.com/fatih/color" | ||
"github.com/spf13/cobra" | ||
"golang.org/x/text/encoding/simplifiedchinese" | ||
"golang.org/x/text/transform" | ||
|
||
"github.com/zu1k/nali/internal/constant" | ||
"github.com/zu1k/nali/pkg/entity" | ||
) | ||
|
||
var rootCmd = &cobra.Command{ | ||
Use: "nali", | ||
Short: "An offline tool for querying IP geographic information", | ||
Long: `An offline tool for querying IP geographic information. | ||
Find document on: https://github.com/zu1k/nali | ||
#1 Query a simple IP address | ||
$ nali 1.2.3.4 | ||
or use pipe | ||
$ echo IP 6.6.6.6 | nali | ||
#2 Query multiple IP addresses | ||
$ nali 1.2.3.4 4.3.2.1 123.23.3.0 | ||
#3 Interactive query | ||
$ nali | ||
123.23.23.23 | ||
123.23.23.23 [越南 越南邮电集团公司] | ||
quit | ||
#4 Use with dig | ||
$ dig nali.zu1k.com +short | nali | ||
#5 Use with nslookup | ||
$ nslookup nali.zu1k.com 8.8.8.8 | nali | ||
#6 Use with any other program | ||
bash abc.sh | nali | ||
#7 IPV6 support | ||
`, | ||
Version: constant.Version, | ||
Args: cobra.MinimumNArgs(0), | ||
Run: func(cmd *cobra.Command, args []string) { | ||
gbk, _ := cmd.Flags().GetBool("gbk") | ||
|
||
if len(args) == 0 { | ||
stdin := bufio.NewScanner(os.Stdin) | ||
for stdin.Scan() { | ||
line := stdin.Text() | ||
if gbk { | ||
line, _, _ = transform.String(simplifiedchinese.GBK.NewDecoder(), line) | ||
} | ||
if line == "quit" || line == "exit" { | ||
return | ||
} | ||
_, _ = fmt.Fprintf(color.Output, "%s\n", entity.ParseLine(line).ColorString()) | ||
} | ||
} else { | ||
_, _ = fmt.Fprintf(color.Output, "%s\n", entity.ParseLine(strings.Join(args, " ")).ColorString()) | ||
} | ||
}, | ||
} | ||
|
||
// Execute parse subcommand and run | ||
func Execute() { | ||
if err := rootCmd.Execute(); err != nil { | ||
log.Fatal(err.Error()) | ||
} | ||
} | ||
|
||
func init() { | ||
rootCmd.Flags().Bool("gbk", false, "Use GBK decoder") | ||
} | ||
package cmd | ||
|
||
import ( | ||
"bufio" | ||
"fmt" | ||
"log" | ||
"os" | ||
"strings" | ||
|
||
"github.com/fatih/color" | ||
"github.com/spf13/cobra" | ||
"golang.org/x/text/encoding/simplifiedchinese" | ||
"golang.org/x/text/transform" | ||
|
||
"github.com/zu1k/nali/internal/constant" | ||
"github.com/zu1k/nali/pkg/common" | ||
"github.com/zu1k/nali/pkg/entity" | ||
) | ||
|
||
var rootCmd = &cobra.Command{ | ||
Use: "nali", | ||
Short: "An offline tool for querying IP geographic information", | ||
Long: `An offline tool for querying IP geographic information. | ||
Find document on: https://github.com/zu1k/nali | ||
#1 Query a simple IP address | ||
$ nali 1.2.3.4 | ||
or use pipe | ||
$ echo IP 6.6.6.6 | nali | ||
#2 Query multiple IP addresses | ||
$ nali 1.2.3.4 4.3.2.1 123.23.3.0 | ||
#3 Interactive query | ||
$ nali | ||
123.23.23.23 | ||
123.23.23.23 [越南 越南邮电集团公司] | ||
quit | ||
#4 Use with dig | ||
$ dig nali.zu1k.com +short | nali | ||
#5 Use with nslookup | ||
$ nslookup nali.zu1k.com 8.8.8.8 | nali | ||
#6 Use with any other program | ||
bash abc.sh | nali | ||
#7 IPV6 support | ||
`, | ||
Version: constant.Version, | ||
Args: cobra.MinimumNArgs(0), | ||
Run: func(cmd *cobra.Command, args []string) { | ||
gbk, _ := cmd.Flags().GetBool("gbk") | ||
|
||
if len(args) == 0 { | ||
stdin := bufio.NewScanner(os.Stdin) | ||
stdin.Split(common.ScanLines) | ||
for stdin.Scan() { | ||
line := stdin.Text() | ||
if gbk { | ||
line, _, _ = transform.String(simplifiedchinese.GBK.NewDecoder(), line) | ||
} | ||
if line := strings.TrimSpace(line); line == "quit" || line == "exit" { | ||
return | ||
} | ||
_, _ = fmt.Fprintf(color.Output, "%s", entity.ParseLine(line).ColorString()) | ||
} | ||
} else { | ||
_, _ = fmt.Fprintf(color.Output, "%s\n", entity.ParseLine(strings.Join(args, " ")).ColorString()) | ||
} | ||
}, | ||
} | ||
|
||
// Execute parse subcommand and run | ||
func Execute() { | ||
if err := rootCmd.Execute(); err != nil { | ||
log.Fatal(err.Error()) | ||
} | ||
} | ||
|
||
func init() { | ||
rootCmd.Flags().Bool("gbk", false, "Use GBK decoder") | ||
} |
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
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,30 +1,30 @@ | ||
package cmd | ||
|
||
import ( | ||
"strings" | ||
|
||
"github.com/zu1k/nali/internal/db" | ||
|
||
"github.com/spf13/cobra" | ||
) | ||
|
||
// updateCmd represents the update command | ||
var updateCmd = &cobra.Command{ | ||
Use: "update", | ||
Short: "update qqwry, zxipv6wry, ip2region ip database and cdn", | ||
Long: `update qqwry, zxipv6wry, ip2region ip database and cdn. Use commas to separate`, | ||
Example: "nali update --db qqwry,cdn", | ||
Run: func(cmd *cobra.Command, args []string) { | ||
DBs, _ := cmd.Flags().GetString("db") | ||
var DBNameArray []string | ||
if DBs != "" { | ||
DBNameArray = strings.Split(DBs, ",") | ||
} | ||
db.UpdateDB(DBNameArray...) | ||
}, | ||
} | ||
|
||
func init() { | ||
rootCmd.AddCommand(updateCmd) | ||
rootCmd.PersistentFlags().String("db", "", "choose db you want to update") | ||
} | ||
package cmd | ||
|
||
import ( | ||
"strings" | ||
|
||
"github.com/zu1k/nali/internal/db" | ||
|
||
"github.com/spf13/cobra" | ||
) | ||
|
||
// updateCmd represents the update command | ||
var updateCmd = &cobra.Command{ | ||
Use: "update", | ||
Short: "update qqwry, zxipv6wry, ip2region ip database and cdn", | ||
Long: `update qqwry, zxipv6wry, ip2region ip database and cdn. Use commas to separate`, | ||
Example: "nali update --db qqwry,cdn", | ||
Run: func(cmd *cobra.Command, args []string) { | ||
DBs, _ := cmd.Flags().GetString("db") | ||
var DBNameArray []string | ||
if DBs != "" { | ||
DBNameArray = strings.Split(DBs, ",") | ||
} | ||
db.UpdateDB(DBNameArray...) | ||
}, | ||
} | ||
|
||
func init() { | ||
rootCmd.AddCommand(updateCmd) | ||
rootCmd.PersistentFlags().String("db", "", "choose db you want to update") | ||
} |
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
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
Oops, something went wrong.