From 82519d6f8739e484a8f0b6abef5b9a62f895650a Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@iotlink.com>
Date: 星期二, 19 十一月 2019 19:24:59 +0800
Subject: [PATCH] fix: machine code
---
licence.go | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 53 insertions(+), 3 deletions(-)
diff --git a/licence.go b/licence.go
index 6469996..14ed41c 100644
--- a/licence.go
+++ b/licence.go
@@ -6,8 +6,9 @@
"time"
"github.com/shirou/gopsutil/cpu"
- // "github.com/shirou/gopsutil/disk"
"github.com/shirou/gopsutil/host"
+ psnet "github.com/shirou/gopsutil/net"
+ // "github.com/shirou/gopsutil/disk"
)
type Licence struct {
@@ -27,7 +28,7 @@
// CPU
if cpu, err := cpu.Info(); err == nil {
for _, c := range cpu {
- strings.Join([]string{machineCode, c.String()}, "-")
+ machineCode = strings.Join([]string{machineCode, c.String()}, "-cpu-")
}
}
@@ -41,12 +42,61 @@
// Host
if host, err := host.Info(); err == nil {
- strings.Join([]string{machineCode, host.HostID}, "-")
+ machineCode = strings.Join([]string{machineCode, host.HostID}, "-host-")
+ }
+
+ // 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-")
+ }
+ }
}
return GetMd5String(machineCode, true, false)
}
+func VNetFilter(iface *psnet.InterfaceStat) bool {
+ vNetNamePrefix := [...]string{
+ "docker",
+ "br-",
+ "veth",
+ "Npcap",
+ "VirtualBox",
+ }
+
+ vNetAddrPrefix := [...]string{
+ "00:05:69", //vmware1
+ "00:0C:29", //vmware2
+ "00:50:56", //vmware3
+ "00:1c:14", //vmware4
+ "00:1C:42", //parallels1
+ "00:03:FF", //microsoft virtual pc
+ "00:0F:4B", //virtual iron 4
+ "00:16:3E", //red hat xen , oracle vm , xen source, novell xen
+ "08:00:27", //virtualbox
+ }
+
+ if iface.HardwareAddr == "" {
+ return true
+ }
+
+ for _, v := range vNetAddrPrefix {
+ if strings.HasPrefix(iface.HardwareAddr, v) {
+ return true
+ }
+ }
+
+ for _, v := range vNetNamePrefix {
+ if strings.HasPrefix(iface.Name, v) {
+ return true
+ }
+ }
+
+ return false
+}
+
func GenerateLicence(machineCode, timeOut, key string) string {
timeLayout := "2006-01-02 15:04:05" //杞寲鎵�闇�妯℃澘
loc, _ := time.LoadLocation("Local") //鑾峰彇鏃跺尯
--
Gitblit v1.8.0