zhangzengfei
2019-11-19 82519d6f8739e484a8f0b6abef5b9a62f895650a
fix: machine code
1个文件已修改
56 ■■■■■ 已修改文件
licence.go 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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") //获取时区