修改项目结构

This commit is contained in:
zeaslity
2025-03-18 14:40:03 +08:00
parent 6abb488622
commit 58b470e95f
9 changed files with 253 additions and 9 deletions

View File

@@ -0,0 +1,77 @@
package services
import (
"cmii-uav-watchdog-common/models"
"fmt"
"net"
"strings"
)
// getMACAddress 获取指定接口的 MAC 地址
func getMACAddress(iface net.Interface) (string, error) {
_, err := iface.Addrs()
if err != nil {
return "", err
}
// 获取 MAC 地址
return iface.HardwareAddr.String(), nil
}
// getNetworkInterfaces 获取网卡信息
func GetNetworkInterfaces() []models.NetworkInterfaceInfo {
var interfaces []models.NetworkInterfaceInfo
// 获取所有网络接口
ifaces, err := net.Interfaces()
if err != nil {
fmt.Println("Error getting network interfaces:", err)
return []models.NetworkInterfaceInfo{{Name: "unknown", MACAddress: "00:00:00:00:00:00", IPAddresses: []string{}}}
}
for _, iface := range ifaces {
// 过滤掉 Docker 和 Kubernetes 网络插件创建的网卡
if strings.HasPrefix(iface.Name, "docker") || strings.HasPrefix(iface.Name, "cali") ||
strings.HasPrefix(iface.Name, "flannel") || strings.HasPrefix(iface.Name, "br") ||
strings.HasPrefix(iface.Name, "lo") || strings.HasPrefix(iface.Name, "tunl0") {
continue
}
// 获取 MAC 地址
macAddress, err := getMACAddress(iface)
if err != nil {
fmt.Println("Error getting MAC address for", iface.Name, ":", err)
continue
}
// 获取有效的 IP 地址
var ipAddresses []string
addrs, err := iface.Addrs()
if err != nil {
fmt.Println("Error getting addresses for", iface.Name, ":", err)
continue
}
for _, addr := range addrs {
if ipNet, ok := addr.(*net.IPNet); ok && ipNet.IP.To4() != nil {
ipAddresses = append(ipAddresses, ipNet.IP.String())
}
}
// 仅在有 IP 地址时才添加到接口列表
if len(ipAddresses) > 0 {
interfaces = append(interfaces, models.NetworkInterfaceInfo{
Name: iface.Name,
MACAddress: macAddress,
IPAddresses: ipAddresses,
})
}
}
// 如果没有找到任何有效的接口,返回默认值
if len(interfaces) == 0 {
return []models.NetworkInterfaceInfo{{Name: "unknown", MACAddress: "00:00:00:00:00:00", IPAddresses: []string{}}}
}
return interfaces
}