diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index fea5de3..5de895f 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -13,7 +13,7 @@ jobs: stable: 'false' - name: Check out code into the Go module directory - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Cache go module uses: actions/cache@v2 diff --git a/cmd/root.go b/cmd/root.go index e1bca2d..d959e14 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -1,12 +1,19 @@ package cmd import ( + "bufio" + "fmt" "log" "os" + "strings" + "github.com/zu1k/nali/pkg/entity" + + "github.com/fatih/color" "github.com/spf13/cobra" - "github.com/zu1k/nali/internal/app" "github.com/zu1k/nali/internal/constant" + "golang.org/x/text/encoding/simplifiedchinese" + "golang.org/x/text/transform" ) var rootCmd = &cobra.Command{ @@ -55,7 +62,22 @@ Find document on: https://github.com/zu1k/nali Args: cobra.MinimumNArgs(0), Run: func(cmd *cobra.Command, args []string) { gbk, _ := cmd.Flags().GetBool("gbk") - app.Root(args, 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()) + } }, } diff --git a/cmd/update.go b/cmd/update.go index beab8da..ee27e07 100644 --- a/cmd/update.go +++ b/cmd/update.go @@ -1,14 +1,9 @@ package cmd import ( - "log" - "path/filepath" + "github.com/zu1k/nali/internal/db" "github.com/spf13/cobra" - "github.com/zu1k/nali/internal/constant" - "github.com/zu1k/nali/pkg/cdn" - "github.com/zu1k/nali/pkg/qqwry" - "github.com/zu1k/nali/pkg/zxipv6wry" ) // updateCmd represents the update command @@ -17,32 +12,8 @@ var updateCmd = &cobra.Command{ Short: "update chunzhen ip database", Long: `update chunzhen ip database`, Run: func(cmd *cobra.Command, args []string) { - // Chunzhen ipv4 - filePath := filepath.Join(constant.HomePath, "qqwry.dat") - log.Println("正在下载最新 纯真 IPv4数据库...") - _, err := qqwry.Download(filePath) - if err != nil { - log.Fatalln("下载失败", err.Error()) - return - } + db.UpdateAllDB() - // ZX ipv6 - filePath = filepath.Join(constant.HomePath, "ipv6wry.database") - log.Println("正在下载最新 ZX IPv6数据库...") - _, err = zxipv6wry.Download(filePath) - if err != nil { - log.Fatalln("下载失败", err.Error()) - return - } - - // cdn - filePath = filepath.Join(constant.HomePath, "cdn.json") - log.Println("正在下载最新 CDN服务提供商数据库...") - _, err = cdn.Download(filePath) - if err != nil { - log.Fatalln("下载失败", err.Error()) - return - } }, } diff --git a/internal/app/command.go b/internal/app/command.go deleted file mode 100644 index 6aa4b09..0000000 --- a/internal/app/command.go +++ /dev/null @@ -1,31 +0,0 @@ -package app - -import ( - "bufio" - "fmt" - "os" - "strings" - - "github.com/fatih/color" - "github.com/zu1k/nali/internal/entity" - "golang.org/x/text/encoding/simplifiedchinese" - "golang.org/x/text/transform" -) - -func Root(args []string, needTransform bool) { - if len(args) == 0 { - stdin := bufio.NewScanner(os.Stdin) - for stdin.Scan() { - line := stdin.Text() - if needTransform { - 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()) - } -} diff --git a/internal/db/db.go b/internal/db/db.go index 2ac381d..97dcccf 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -104,18 +104,27 @@ func GetIPDBbyName(name string) (dbif.DB, error) { } } -func Update() { +func UpdateAllDB() { + log.Println("正在下载最新 纯真 IPv4数据库...") _, err := qqwry.Download(QQWryPath) if err != nil { - log.Fatalln("Database QQWry download failed:", err) + log.Fatalln("数据库 QQWry 下载失败:", err) } + + log.Println("正在下载最新 ZX IPv6数据库...") _, err = zxipv6wry.Download(ZXIPv6WryPath) if err != nil { - log.Fatalln("Database ZXIPv6Wry download failed:", err) + log.Fatalln("数据库 ZXIPv6Wry 下载失败:", err) } + _, err = ip2region.Download(Ip2RegionPath) + if err != nil { + log.Fatalln("数据库 Ip2Region 下载失败:", err) + } + + log.Println("正在下载最新 CDN服务提供商数据库...") _, err = cdn.Download(CDNPath) if err != nil { - log.Fatalln("Database CDN download failed:", err) + log.Fatalln("数据库 CDN 下载失败:", err) } } diff --git a/internal/entity/entity.go b/pkg/entity/entity.go similarity index 100% rename from internal/entity/entity.go rename to pkg/entity/entity.go diff --git a/internal/entity/parse.go b/pkg/entity/parse.go similarity index 97% rename from internal/entity/parse.go rename to pkg/entity/parse.go index 9738339..0238004 100644 --- a/internal/entity/parse.go +++ b/pkg/entity/parse.go @@ -4,8 +4,9 @@ import ( "net/netip" "sort" + "github.com/zu1k/nali/pkg/re" + "github.com/zu1k/nali/internal/db" - "github.com/zu1k/nali/internal/re" "github.com/zu1k/nali/pkg/dbif" ) diff --git a/internal/entity/parse_test.go b/pkg/entity/parse_test.go similarity index 100% rename from internal/entity/parse_test.go rename to pkg/entity/parse_test.go diff --git a/pkg/ip2region/update.go b/pkg/ip2region/update.go index af7fe38..b5a5750 100644 --- a/pkg/ip2region/update.go +++ b/pkg/ip2region/update.go @@ -21,7 +21,7 @@ func Download(filePath ...string) (data []byte, err error) { if len(filePath) == 1 { if err := common.SaveFile(filePath[0], data); err == nil { - log.Println("已将最新的 ip2region 保存到本地:", filePath[0]) + log.Println("已将最新的 ip2region 保存到本地:", filePath) } } return diff --git a/internal/re/re.go b/pkg/re/re.go similarity index 100% rename from internal/re/re.go rename to pkg/re/re.go diff --git a/internal/re/re_test.go b/pkg/re/re_test.go similarity index 100% rename from internal/re/re_test.go rename to pkg/re/re_test.go diff --git a/pkg/zxipv6wry/update.go b/pkg/zxipv6wry/update.go index 44c75cf..64dc748 100644 --- a/pkg/zxipv6wry/update.go +++ b/pkg/zxipv6wry/update.go @@ -20,7 +20,7 @@ func Download(filePath ...string) (data []byte, err error) { if len(filePath) == 1 { if err := common.SaveFile(filePath[0], data); err == nil { - log.Println("已将最新的 ZX IPv6数据库 保存到本地:", filePath[0]) + log.Println("已将最新的 ZX IPv6数据库 保存到本地:", filePath) } } return