move to ubiquiti-clients, add edgeos
This commit is contained in:
100
pkg/edgeos/types.go
Normal file
100
pkg/edgeos/types.go
Normal file
@@ -0,0 +1,100 @@
|
||||
package edgeos
|
||||
|
||||
// AuthResponse represents the authentication response from login2 endpoint.
|
||||
type AuthResponse struct {
|
||||
Username string `json:"username"`
|
||||
PoE bool `json:"poe"`
|
||||
StatsURL string `json:"statsUrl"`
|
||||
Features Features `json:"features"`
|
||||
Level string `json:"level"`
|
||||
Authenticated bool `json:"authenticated"`
|
||||
Model string `json:"model"`
|
||||
IsLicenseAccepted bool `json:"isLicenseAccepted"`
|
||||
ModelName string `json:"model_name"`
|
||||
Ports int `json:"ports"`
|
||||
}
|
||||
|
||||
// Features contains device feature information.
|
||||
type Features struct {
|
||||
Model string `json:"model"`
|
||||
PoECap map[string]string `json:"poe_cap"`
|
||||
Switch SwitchFeatures `json:"switch"`
|
||||
SwitchIsVLANCapable bool `json:"switchIsVLANCapable"`
|
||||
PoE bool `json:"poe"`
|
||||
Ports int `json:"ports"`
|
||||
}
|
||||
|
||||
// SwitchFeatures contains switch-specific features.
|
||||
type SwitchFeatures struct {
|
||||
Ports []string `json:"ports"`
|
||||
}
|
||||
|
||||
// ConfigResponse represents the response from /api/edge/get.json.
|
||||
type ConfigResponse struct {
|
||||
SessionID string `json:"SESSION_ID"`
|
||||
GET ConfigData `json:"GET"`
|
||||
Success bool `json:"success"`
|
||||
}
|
||||
|
||||
// ConfigData contains the full device configuration.
|
||||
type ConfigData struct {
|
||||
Interfaces InterfacesConfig `json:"interfaces"`
|
||||
System SystemConfig `json:"system"`
|
||||
}
|
||||
|
||||
// InterfacesConfig represents the interfaces configuration.
|
||||
type InterfacesConfig struct {
|
||||
Ethernet map[string]EthernetConfig `json:"ethernet,omitempty"`
|
||||
Switch map[string]SwitchConfig `json:"switch,omitempty"`
|
||||
}
|
||||
|
||||
// EthernetConfig represents an ethernet interface configuration.
|
||||
type EthernetConfig struct {
|
||||
Description string `json:"description,omitempty"`
|
||||
Duplex string `json:"duplex,omitempty"`
|
||||
Speed string `json:"speed,omitempty"`
|
||||
PoE *PoEState `json:"poe,omitempty"`
|
||||
}
|
||||
|
||||
// PoEState represents PoE output state.
|
||||
type PoEState struct {
|
||||
Output string `json:"output,omitempty"`
|
||||
}
|
||||
|
||||
// SwitchConfig represents a switch interface configuration.
|
||||
type SwitchConfig struct {
|
||||
Address []string `json:"address,omitempty"`
|
||||
MTU string `json:"mtu,omitempty"`
|
||||
SwitchPort *SwitchPortConfig `json:"switch-port,omitempty"`
|
||||
VIF map[string]VIFConfig `json:"vif,omitempty"`
|
||||
}
|
||||
|
||||
// SwitchPortConfig represents switch port configuration with VLAN awareness.
|
||||
type SwitchPortConfig struct {
|
||||
Interface map[string]InterfaceVLAN `json:"interface,omitempty"`
|
||||
VLANAware string `json:"vlan-aware,omitempty"`
|
||||
}
|
||||
|
||||
// InterfaceVLAN represents VLAN configuration for an interface.
|
||||
type InterfaceVLAN struct {
|
||||
VLAN VLANConfig `json:"vlan,omitempty"`
|
||||
}
|
||||
|
||||
// VLANConfig represents VLAN ID configuration.
|
||||
type VLANConfig struct {
|
||||
PVID string `json:"pvid,omitempty"`
|
||||
VID []string `json:"vid,omitempty"`
|
||||
}
|
||||
|
||||
// VIFConfig represents a virtual interface (VLAN) configuration.
|
||||
type VIFConfig struct {
|
||||
Address []string `json:"address,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
MTU string `json:"mtu,omitempty"`
|
||||
}
|
||||
|
||||
// SystemConfig contains system configuration.
|
||||
type SystemConfig struct {
|
||||
HostName string `json:"host-name,omitempty"`
|
||||
DomainName string `json:"domain-name,omitempty"`
|
||||
}
|
||||
Reference in New Issue
Block a user