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