Files
Your Name 2a97f458a9 prod
2026-04-26 22:00:03 +08:00

111 wiersze
3.6 KiB
Go

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package models
import "time"
// DeviceType 设备类型
type DeviceType string
const (
DeviceTypeCisco DeviceType = "cisco"
DeviceTypeHuawei DeviceType = "huawei"
DeviceTypeH3C DeviceType = "h3c"
DeviceTypeASA DeviceType = "asa"
DeviceTypeLinux DeviceType = "linux"
DeviceTypeWindows DeviceType = "windows"
)
// Device 网络设备
type Device struct {
ID string `json:"id"`
IP string `json:"ip"`
Type DeviceType `json:"type"`
Hostname string `json:"hostname"`
OSVersion string `json:"os_version"`
Uptime string `json:"uptime"`
Interfaces []Interface `json:"interfaces"`
Neighbors []Neighbor `json:"neighbors"`
MACAddresses []string `json:"mac_addresses,omitempty"` // 设备的所有MAC地址(用于邻居匹配)
LastScanned time.Time `json:"last_scanned"`
ScanStatus string `json:"scan_status"` // success, failed, pending
ErrorMessage string `json:"error_message,omitempty"`
}
// Interface 网络接口
type Interface struct {
Name string `json:"name"`
Description string `json:"description"`
IP string `json:"ip"`
Mask string `json:"mask"`
MAC string `json:"mac"`
Status string `json:"status"` // up, down, admin down
Speed string `json:"speed"`
Duplex string `json:"duplex"`
MTU int `json:"mtu"`
VLAN string `json:"vlan"` // VLAN信息(PVID/Access/Trunk
InBytes int64 `json:"in_bytes"`
OutBytes int64 `json:"out_bytes"`
InPackets int64 `json:"in_packets"`
OutPackets int64 `json:"out_packets"`
}
// Neighbor 邻居设备信息
type Neighbor struct {
LocalInterface string `json:"local_interface"`
RemoteDevice string `json:"remote_device"`
RemoteIP string `json:"remote_ip"`
RemoteMAC string `json:"remote_mac,omitempty"` // MAC地址(用于拓扑匹配)
RemoteInterface string `json:"remote_interface"`
Protocol string `json:"protocol"` // CDP, LLDP, ARP
}
// ScanTask 扫描任务
type ScanTask struct {
ID string `json:"id"`
Status string `json:"status"` // running, completed, failed
Progress int `json:"progress"`
TotalDevices int `json:"total_devices"`
ScannedDevices int `json:"scanned_devices"`
StartTime time.Time `json:"start_time"`
EndTime time.Time `json:"end_time"`
Devices []Device `json:"devices"`
ErrorMessage string `json:"error_message,omitempty"`
}
// TopologyGraph 拓扑图数据
type TopologyGraph struct {
Nodes []TopologyNode `json:"nodes"`
Edges []TopologyEdge `json:"edges"`
}
// TopologyNode 拓扑节点
type TopologyNode struct {
ID string `json:"id"`
IP string `json:"ip"`
Hostname string `json:"hostname"`
Type string `json:"type"`
Icon string `json:"icon"`
}
// TopologyEdge 拓扑边
type TopologyEdge struct {
ID string `json:"id"`
Source string `json:"source"`
Target string `json:"target"`
SourceInterface string `json:"source_interface"`
TargetInterface string `json:"target_interface"`
Protocol string `json:"protocol"`
}
// Topology 网络拓扑(一个拓扑包含多个设备)
type Topology struct {
ID string `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
ScanRange string `json:"scan_range"`
SSHPort int `json:"ssh_port"`
Username string `json:"username"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DeviceCount int `json:"device_count"`
}