mirror of
https://github.com/nxtrace/nali
synced 2024-11-22 00:58:38 +00:00
move db to ~/.nali
This commit is contained in:
parent
de8496a281
commit
b71b39f1f0
@ -2,6 +2,8 @@ package cmd
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
|
||||||
"github.com/zu1k/nali/internal/app"
|
"github.com/zu1k/nali/internal/app"
|
||||||
|
|
||||||
@ -27,7 +29,8 @@ var rootCmd = &cobra.Command{
|
|||||||
// This is called by main.main(). It only needs to happen once to the rootCmd.
|
// This is called by main.main(). It only needs to happen once to the rootCmd.
|
||||||
func Execute() {
|
func Execute() {
|
||||||
if err := rootCmd.Execute(); err != nil {
|
if err := rootCmd.Execute(); err != nil {
|
||||||
panic(err)
|
log.Fatal(err.Error())
|
||||||
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
5
constant/path.go
Normal file
5
constant/path.go
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package constant
|
||||||
|
|
||||||
|
var (
|
||||||
|
HomePath string
|
||||||
|
)
|
1
go.mod
1
go.mod
@ -3,6 +3,7 @@ module github.com/zu1k/nali
|
|||||||
go 1.14
|
go 1.14
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/mitchellh/go-homedir v1.1.0
|
||||||
github.com/oschwald/geoip2-golang v1.4.0
|
github.com/oschwald/geoip2-golang v1.4.0
|
||||||
github.com/spf13/cobra v1.0.0
|
github.com/spf13/cobra v1.0.0
|
||||||
github.com/spf13/pflag v1.0.5 // indirect
|
github.com/spf13/pflag v1.0.5 // indirect
|
||||||
|
@ -2,6 +2,9 @@ package app
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
|
"github.com/zu1k/nali/constant"
|
||||||
|
|
||||||
"github.com/zu1k/nali/internal/ipdb"
|
"github.com/zu1k/nali/internal/ipdb"
|
||||||
|
|
||||||
@ -15,9 +18,9 @@ var (
|
|||||||
geoip geoip2.GeoIP
|
geoip geoip2.GeoIP
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func InitIPDB() {
|
||||||
qqip = qqwry.NewQQwry("db/qqwry.dat")
|
qqip = qqwry.NewQQwry(filepath.Join(constant.HomePath, "qqwry.dat"))
|
||||||
geoip = geoip2.NewGeoIP("db/GeoLite2-City.mmdb")
|
//geoip = geoip2.NewGeoIP(filepath.Join(constant.HomePath, "GeoLite2-City.mmdb"))
|
||||||
db = qqip
|
db = qqip
|
||||||
}
|
}
|
||||||
|
|
||||||
|
48
main.go
48
main.go
@ -1,28 +1,32 @@
|
|||||||
/*
|
|
||||||
Copyright © 2020 zu1k
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import "github.com/zu1k/nali/cmd"
|
import (
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
|
"github.com/zu1k/nali/internal/app"
|
||||||
|
|
||||||
|
"github.com/zu1k/nali/cmd"
|
||||||
|
"github.com/zu1k/nali/constant"
|
||||||
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
setHomePath()
|
||||||
|
app.InitIPDB()
|
||||||
cmd.Execute()
|
cmd.Execute()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setHomePath() {
|
||||||
|
homeDir, err := os.UserHomeDir()
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
homePath := filepath.Join(homeDir, ".nali")
|
||||||
|
constant.HomePath = homePath
|
||||||
|
if _, err := os.Stat(homePath); os.IsNotExist(err) {
|
||||||
|
if err := os.MkdirAll(homePath, 0777); err != nil {
|
||||||
|
log.Fatal("can not create", homePath, ", use bin dir instead")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -2,16 +2,14 @@ package qqwry
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"compress/zlib"
|
"compress/zlib"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
||||||
|
|
||||||
// @ref https://zhangzifan.com/update-qqwry-dat.html
|
|
||||||
|
|
||||||
func getKey() (uint32, error) {
|
func getKey() (uint32, error) {
|
||||||
resp, err := http.Get("http://update.cz88.net/ip/copywrite.rar")
|
resp, err := http.Get("https://qqwry.mirror.noc.one/copywrite.rar")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
@ -20,13 +18,12 @@ func getKey() (uint32, error) {
|
|||||||
if body, err := ioutil.ReadAll(resp.Body); err != nil {
|
if body, err := ioutil.ReadAll(resp.Body); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
} else {
|
} else {
|
||||||
// @see https://stackoverflow.com/questions/34078427/how-to-read-packed-binary-data-in-go
|
|
||||||
return binary.LittleEndian.Uint32(body[5*4:]), nil
|
return binary.LittleEndian.Uint32(body[5*4:]), nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetOnline() ([]byte, error) {
|
func GetOnline() ([]byte, error) {
|
||||||
resp, err := http.Get("http://update.cz88.net/ip/qqwry.rar")
|
resp, err := http.Get("https://qqwry.mirror.noc.one/qqwry.rar")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user