⚡️ 优化Agent体积和逻辑
This commit is contained in:
		
							parent
							
								
									e08585b4aa
								
							
						
					
					
						commit
						42b6768979
					
				@ -24,7 +24,6 @@ import (
 | 
			
		||||
	"github.com/naiba/nezha/model"
 | 
			
		||||
	"github.com/naiba/nezha/pkg/utils"
 | 
			
		||||
	pb "github.com/naiba/nezha/proto"
 | 
			
		||||
	"github.com/naiba/nezha/service/dao"
 | 
			
		||||
	"github.com/naiba/nezha/service/rpc"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@ -37,6 +36,7 @@ var (
 | 
			
		||||
	server       string
 | 
			
		||||
	clientSecret string
 | 
			
		||||
	version      string
 | 
			
		||||
	debug        bool
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
@ -60,19 +60,14 @@ const (
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	// 来自于 GoReleaser 的版本号
 | 
			
		||||
	dao.Version = version
 | 
			
		||||
	monitor.Version = version
 | 
			
		||||
 | 
			
		||||
	var debug bool
 | 
			
		||||
	flag.String("i", "", "unused 旧Agent配置兼容")
 | 
			
		||||
	flag.BoolVar(&debug, "d", false, "开启调试信息")
 | 
			
		||||
	flag.StringVar(&server, "s", "localhost:5555", "管理面板RPC端口")
 | 
			
		||||
	flag.StringVar(&clientSecret, "p", "", "Agent连接Secret")
 | 
			
		||||
	flag.Parse()
 | 
			
		||||
 | 
			
		||||
	dao.Conf = &model.Config{
 | 
			
		||||
		Debug: debug,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if server == "" || clientSecret == "" {
 | 
			
		||||
		flag.Usage()
 | 
			
		||||
		return
 | 
			
		||||
@ -310,7 +305,7 @@ func doSelfUpdate() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func println(v ...interface{}) {
 | 
			
		||||
	if dao.Conf.Debug {
 | 
			
		||||
	if debug {
 | 
			
		||||
		log.Println(v...)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -14,9 +14,9 @@ import (
 | 
			
		||||
	"github.com/shirou/gopsutil/v3/net"
 | 
			
		||||
 | 
			
		||||
	"github.com/naiba/nezha/model"
 | 
			
		||||
	"github.com/naiba/nezha/service/dao"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var Version string = "debug"
 | 
			
		||||
var netInSpeed, netOutSpeed, netInTransfer, netOutTransfer, lastUpdate uint64
 | 
			
		||||
var expectDiskFsTypes = []string{
 | 
			
		||||
	"apfs", "ext4", "ext3", "ext2", "f2fs", "reiserfs", "jfs", "btrfs", "fuseblk", "zfs", "simfs", "ntfs", "fat32", "exfat", "xfs",
 | 
			
		||||
@ -59,7 +59,7 @@ func GetHost() *model.Host {
 | 
			
		||||
		BootTime:        hi.BootTime,
 | 
			
		||||
		IP:              cachedIP,
 | 
			
		||||
		CountryCode:     strings.ToLower(cachedCountry),
 | 
			
		||||
		Version:         dao.Version,
 | 
			
		||||
		Version:         Version,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -13,18 +13,17 @@ import (
 | 
			
		||||
type geoIP struct {
 | 
			
		||||
	CountryCode string `json:"country_code,omitempty"`
 | 
			
		||||
	IP          string `json:"ip,omitempty"`
 | 
			
		||||
	Query       string `json:"query,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	ipv4Servers = []string{
 | 
			
		||||
		"https://api.ip.sb/geoip",
 | 
			
		||||
		"https://ip.seeip.org/geoip",
 | 
			
		||||
		"https://ipapi.co/json",
 | 
			
		||||
	}
 | 
			
		||||
	ipv6Servers = []string{
 | 
			
		||||
	geoIPApiList = []string{
 | 
			
		||||
		"https://api.ip.sb/geoip",
 | 
			
		||||
		"https://ip.seeip.org/geoip",
 | 
			
		||||
		"https://ipapi.co/json",
 | 
			
		||||
		"https://freegeoip.app/json/",
 | 
			
		||||
		"http://ip-api.com/json/",
 | 
			
		||||
		"https://extreme-ip-lookup.com/json/",
 | 
			
		||||
	}
 | 
			
		||||
	cachedIP, cachedCountry string
 | 
			
		||||
	httpClientV4            = utils.NewSingleStackHTTPClient(time.Second*20, time.Second*5, time.Second*10, false)
 | 
			
		||||
@ -33,8 +32,8 @@ var (
 | 
			
		||||
 | 
			
		||||
func UpdateIP() {
 | 
			
		||||
	for {
 | 
			
		||||
		ipv4 := fetchGeoIP(ipv4Servers, false)
 | 
			
		||||
		ipv6 := fetchGeoIP(ipv6Servers, true)
 | 
			
		||||
		ipv4 := fetchGeoIP(geoIPApiList, false)
 | 
			
		||||
		ipv6 := fetchGeoIP(geoIPApiList, true)
 | 
			
		||||
		cachedIP = fmt.Sprintf("ip(v4:%s,v6:[%s])", ipv4.IP, ipv6.IP)
 | 
			
		||||
		if ipv4.CountryCode != "" {
 | 
			
		||||
			cachedCountry = ipv4.CountryCode
 | 
			
		||||
@ -65,6 +64,9 @@ func fetchGeoIP(servers []string, isV6 bool) geoIP {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			if ip.IP == "" && ip.Query != "" {
 | 
			
		||||
				ip.IP = ip.Query
 | 
			
		||||
			}
 | 
			
		||||
			return ip
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user