From f455f4ffec96c5838de6f10b7b2959c860485be1 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@iotlink.com> Date: 星期五, 02 四月 2021 14:47:51 +0800 Subject: [PATCH] 添加试用期校验 --- machine.go | 38 ++++++++++++++++++++++++++++---------- 1 files changed, 28 insertions(+), 10 deletions(-) diff --git a/machine.go b/machine.go index 82966df..ad91766 100644 --- a/machine.go +++ b/machine.go @@ -1,6 +1,9 @@ package licence import ( + "os/exec" + "sort" + "strconv" "strings" "github.com/shirou/gopsutil/cpu" @@ -10,12 +13,15 @@ ) func GetMachineCode() string { - var machineCode string + var machineInfo []string // CPU - if cpu, err := cpu.Info(); err == nil { - for _, c := range cpu { - machineCode = strings.Join([]string{machineCode, c.String()}, "-cpu-") + if cnt, err := cpu.Counts(true); err == nil { + machineInfo = append(machineInfo, "cpuCounts:"+strconv.Itoa(cnt)) + if cnt > 0 { + if c, err := cpu.Info(); err == nil { + machineInfo = append(machineInfo, "cpuModelName:"+c[0].ModelName) + } } } @@ -23,25 +29,36 @@ if diskInfo, err := disk.Partitions(false); err == nil { for _, d := range diskInfo { diskSerialNumber := disk.GetDiskSerialNumber(d.Device) - strings.Join([]string{machineCode, diskSerialNumber}, "-") + machineInfo = append(machineInfo, diskSerialNumber) } } // Host if host, err := host.Info(); err == nil { - machineCode = strings.Join([]string{machineCode, host.HostID}, "-host-") + machineInfo = append(machineInfo, host.HostID) }*/ // Net + if net, err := psnet.Interfaces(); err == nil { - for _, n := range net { - if n.MTU == 1500 && !VNetFilter(&n) { - machineCode = strings.Join([]string{machineCode, n.HardwareAddr}, "-mac-") + + // 鑾峰彇铏氭嫙缃戝崱 + cmd := exec.Command("/bin/sh", "-c", "ls /sys/devices/virtual/net/") + cmdResult, _ := cmd.Output() + vNets := string(cmdResult) + + for _, iface := range net { + // 鎺掗櫎lo, 鍜岃櫄鎷熸帴鍙� + if iface.MTU == 1500 && !VNetFilter(&iface) && !strings.Contains(vNets, iface.Name) { + machineInfo = append(machineInfo, "mac:"+iface.HardwareAddr) } } } - return GetMd5String(machineCode, true, false) + sort.Strings(machineInfo) + + // fmt.Println("machineInfo", machineInfo) + return GetMd5String(strings.Join(machineInfo, "-|-"), true, false) } func VNetFilter(iface *psnet.InterfaceStat) bool { @@ -55,6 +72,7 @@ "veth", "Npcap", "VirtualBox", + "dummy", } for _, v := range vNetNamePrefix { -- Gitblit v1.8.0