From d3669f25aba9bc852a510644a65f4352eaacf8be Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@iotlink.com>
Date: 星期五, 21 八月 2020 14:01:06 +0800
Subject: [PATCH] 排除内核虚拟网卡dummy-

---
 machine.go |   24 ++++++++++++++++--------
 1 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/machine.go b/machine.go
index 82966df..186547f 100644
--- a/machine.go
+++ b/machine.go
@@ -1,6 +1,8 @@
 package licence
 
 import (
+	"sort"
+	"strconv"
 	"strings"
 
 	"github.com/shirou/gopsutil/cpu"
@@ -10,12 +12,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 +28,27 @@
 	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-")
+				machineInfo = append(machineInfo, "mac:"+n.HardwareAddr)
 			}
 		}
 	}
 
-	return GetMd5String(machineCode, true, false)
+	sort.Strings(machineInfo)
+
+	return GetMd5String(strings.Join(machineInfo, "-|-"), true, false)
 }
 
 func VNetFilter(iface *psnet.InterfaceStat) bool {
@@ -55,6 +62,7 @@
 		"veth",
 		"Npcap",
 		"VirtualBox",
+		"dummy",
 	}
 
 	for _, v := range vNetNamePrefix {

--
Gitblit v1.8.0