Documentation ¶
Overview ¶
Package unifi provides a set of types to unload (unmarshal) Ubiquiti UniFi controller data. Also provided are methods to easily get data for devices - things like access points and switches, and for clients - the things connected to those access points and switches. As a bonus, each device and client type provided has an attached method to create InfluxDB datapoints.
Index ¶
- Constants
- Variables
- type Alarm
- type Anomaly
- type Ap
- type Client
- type Config
- type ConfigNetwork
- type ConfigNetworkLan
- type DPIClient
- type DPIData
- type DPIMap
- type DPITable
- type Devices
- type DownlinkTable
- type EthernetOverrides
- type EthernetTable
- type Event
- type FlexBool
- type FlexInt
- type GeoInfo
- type Gw
- type IDS
- type IPGeo
- type LedState
- type Logger
- type MacTable
- type Network
- type NetworkTable
- type Port
- type PortDelta
- type RadioTable
- type RadioTableStats
- type RogueAP
- type Site
- func (s *Site) Adopt(mac string) error
- func (s *Site) CancelMigrate(mac string) error
- func (s *Site) Locate(mac string) error
- func (s *Site) Migrate(mac string, url string) error
- func (s *Site) Provision(mac string) error
- func (s *Site) Restart(mac string) error
- func (s *Site) SpeedTest() error
- func (s *Site) SpeedTestStatus() ([]byte, error)
- func (s *Site) Unlocate(mac string) error
- func (s *Site) Upgrade(mac string, url string) error
- type SpeedtestServer
- type SpeedtestStatus
- type Storage
- type Sw
- type SwitchCaps
- type SysStats
- type SystemStats
- type Temperature
- type UAP
- type UAPStat
- type UDM
- type UDMStat
- type USG
- type USGStat
- type USW
- type USWStat
- type UXG
- type UXGStat
- type Unifi
- func (u *Unifi) GetAlarms(sites []*Site) ([]*Alarm, error)
- func (u *Unifi) GetAlarmsSite(site *Site) ([]*Alarm, error)
- func (u *Unifi) GetAnomalies(sites []*Site, timeRange ...time.Time) ([]*Anomaly, error)
- func (u *Unifi) GetAnomaliesSite(site *Site, timeRange ...time.Time) ([]*Anomaly, error)
- func (u *Unifi) GetClients(sites []*Site) ([]*Client, error)
- func (u *Unifi) GetClientsDPI(sites []*Site) ([]*DPITable, error)
- func (u *Unifi) GetData(apiPath string, v interface{}, params ...string) error
- func (u *Unifi) GetDevices(sites []*Site) (*Devices, error)
- func (u *Unifi) GetEvents(sites []*Site, hours time.Duration) ([]*Event, error)
- func (u *Unifi) GetIDS(sites []*Site, timeRange ...time.Time) ([]*IDS, error)
- func (u *Unifi) GetIDSSite(site *Site, timeRange ...time.Time) ([]*IDS, error)
- func (u *Unifi) GetJSON(apiPath string, params ...string) ([]byte, error)
- func (u *Unifi) GetNetworks(sites []*Site) ([]Network, error)
- func (u *Unifi) GetRogueAPs(sites []*Site) ([]*RogueAP, error)
- func (u *Unifi) GetRogueAPsSite(site *Site) ([]*RogueAP, error)
- func (u *Unifi) GetServerData() error
- func (u *Unifi) GetSiteDPI(sites []*Site) ([]*DPITable, error)
- func (u *Unifi) GetSiteEvents(site *Site, hours time.Duration) ([]*Event, error)
- func (u *Unifi) GetSites() ([]*Site, error)
- func (u *Unifi) GetUAPs(site *Site) ([]*UAP, error)
- func (u *Unifi) GetUDMs(site *Site) ([]*UDM, error)
- func (u *Unifi) GetUSGs(site *Site) ([]*USG, error)
- func (u *Unifi) GetUSWs(site *Site) ([]*USW, error)
- func (u *Unifi) GetUXGs(site *Site) ([]*UXG, error)
- func (u *Unifi) GetUsers(sites []*Site, hours int) ([]*User, error)
- func (u *Unifi) Login() error
- func (u *Unifi) Logout() error
- func (u *Unifi) PostJSON(apiPath string, params ...string) ([]byte, error)
- func (u *Unifi) PutData(apiPath string, v interface{}, params ...string) error
- func (u *Unifi) PutJSON(apiPath string, params ...string) ([]byte, error)
- func (u *Unifi) UniReq(apiPath string, params string) (*http.Request, error)
- func (u *Unifi) UniReqPost(apiPath string, params string) (*http.Request, error)
- func (u *Unifi) UniReqPut(apiPath string, params string) (*http.Request, error)
- type Uplink
- type UptimeStats
- type User
- type VapTable
- type Wan
Constants ¶
const ( DevMgrPowerCycle = "power-cycle" // mac = switch mac (required), port_idx = PoE port to cycle (required) DevMgrAdopt = "adopt" // mac = device mac (required) DevMgrRestart = "restart" // mac = device mac (required) DevMgrForceProvision = "force-provision" // mac = device mac (required) DevMgrSpeedTest = "speedtest" // Start a speed test DevMgrSpeedTestStatus = "speedtest-status" // Get current state of the speed test DevMgrSetLocate = "set-locate" // mac = device mac (required): blink unit to locate DevMgrUnsetLocate = "unset-locate" // mac = device mac (required): led to normal state DevMgrUpgrade = "upgrade" // mac = device mac (required): upgrade firmware DevMgrUpgradeExternal = "upgrade-external" // mac = device mac (required), url = firmware URL (required) DevMgrMigrate = "migrate" // mac = device mac (required), inform_url = New Inform URL for device (required) DevMgrCancelMigrate = "cancel-migrate" // mac = device mac (required) DevMgrSpectrumScan = "spectrum-scan" // mac = AP mac (required): trigger RF scan )
Known commands that can be sent to device manager. All of these are implemented.
const ( // APIRogueAP shows your neighbors' wifis. APIRogueAP string = "/api/s/%s/stat/rogueap" // APIStatusPath shows Controller version. APIStatusPath string = "/status" // APIEventPath contains UniFi Event data. APIEventPath string = "/api/s/%s/stat/event" // APISiteList is the path to the api site list. APISiteList string = "/api/stat/sites" // APISiteDPI is site DPI data. APISiteDPI string = "/api/s/%s/stat/sitedpi" // APISiteDPI is site DPI data. APIClientDPI string = "/api/s/%s/stat/stadpi" // APIClientPath is Unifi Clients API Path. APIClientPath string = "/api/s/%s/stat/sta" // APIAllUserPath is Unifi Insight all previous Clients API Path. APIAllUserPath string = "/api/s/%s/stat/alluser" // APINetworkPath is where we get data about Unifi networks. APINetworkPath string = "/api/s/%s/rest/networkconf" // APIDevicePath is where we get data about Unifi devices. APIDevicePath string = "/api/s/%s/stat/device" // APILoginPath is Unifi Controller Login API Path. APILoginPath string = "/api/login" // APILoginPathNew is how we log into UDM 5.12.55+. APILoginPathNew string = "/api/auth/login" // APILogoutPath is how we logout from UDM. APILogoutPath string = "/api/logout" // APIEventPathIDS returns Intrusion Detection/Prevention Systems Events. APIEventPathIDS string = "/api/s/%s/stat/ips/event" // APIEventPathAlarms contains the site alarms. APIEventPathAlarms string = "/api/s/%s/list/alarm" // APIPrefixNew is the prefix added to the new API paths; except login. duh. APIPrefixNew string = "/proxy/network" // APIAnomaliesPath returns site anomalies. APIAnomaliesPath string = "/api/s/%s/stat/anomalies" APICommandPath string = "/api/s/%s/cmd" APIDevMgrPath string = APICommandPath + "/devmgr" )
This is a list of unifi API paths. The %s in each string must be replaced with a Site.Name.
Variables ¶
var ( ErrNoSiteProvided = fmt.Errorf("site must not be nil or empty") ErrInvalidTimeRange = fmt.Errorf("only 0, 1 or 2 times may be provided to timeRange") )
var ( ErrAuthenticationFailed = fmt.Errorf("authentication failed") ErrInvalidStatusCode = fmt.Errorf("invalid status code from server") ErrNoParams = fmt.Errorf("requested PUT with no parameters") ErrInvalidSignature = fmt.Errorf("certificate signature does not match") )
var DPIApps = DPIMap{}/* 2279 elements not displayed */
DPIApps maps the applications to names. From: https://fw-download.ubnt.com/data/usg-dpi/1628-debian-v1.442.0-05f5a57eaef344358bd5a8e84a184c18.tar
var DPICats = DPIMap{
0: "Instant Messengers",
1: "Peer-to-Peer Networks",
3: "File Sharing",
4: "Media Streaming",
5: "Email Messaging",
6: "VoIP Services",
7: "Database Tools",
8: "Online Games",
9: "Management Protocols",
10: "Remote Access",
11: "Tunneling and Proxy",
12: "Investment Platforms",
13: "Web Services",
14: "Security Updates",
15: "Web IM",
17: "Business Tools",
18: "Network Protocols_18",
19: "Network Protocols_19",
20: "Network Protocols_20",
23: "Private Protocols",
24: "Social Networks",
255: "Unknown_255",
}
DPICats maps the categories to descriptions. From: https://fw-download.ubnt.com/data/usg-dpi/1628-debian-v1.442.0-05f5a57eaef344358bd5a8e84a184c18.tar
var ErrCannotUnmarshalFlexInt = fmt.Errorf("cannot unmarshal to FlexInt")
var ErrDPIDataBug = fmt.Errorf("dpi data table contains more than 1 item; please open a bug report")
Functions ¶
This section is empty.
Types ¶
type Alarm ¶
type Alarm struct { Archived FlexBool `json:"archived"` DestPort int `json:"dest_port"` SrcPort int `json:"src_port"` FlowID int64 `json:"flow_id"` InnerAlertGID int64 `json:"inner_alert_gid"` InnerAlertRev int64 `json:"inner_alert_rev"` InnerAlertSeverity int64 `json:"inner_alert_severity"` InnerAlertSignatureID int64 `json:"inner_alert_signature_id"` Time int64 `json:"time"` Timestamp int64 `json:"timestamp"` Datetime time.Time `json:"datetime"` HandledTime time.Time `json:"handled_time,omitempty"` AppProto string `json:"app_proto,omitempty"` Catname string `json:"catname"` DestIP string `json:"dest_ip"` DstMAC string `json:"dst_mac"` DstIPASN string `json:"dstipASN,omitempty"` DstIPCountry string `json:"dstipCountry,omitempty"` EventType string `json:"event_type"` HandledAdminID string `json:"handled_admin_id,omitempty"` Host string `json:"host"` ID string `json:"_id"` InIface string `json:"in_iface"` InnerAlertAction string `json:"inner_alert_action"` InnerAlertCategory string `json:"inner_alert_category"` InnerAlertSignature string `json:"inner_alert_signature"` Key string `json:"key"` Msg string `json:"msg"` Proto string `json:"proto"` SiteID string `json:"site_id"` SiteName string `json:"-"` SourceName string `json:"-"` SrcIP string `json:"src_ip"` SrcIPASN string `json:"srcipASN,omitempty"` SrcIPCountry string `json:"srcipCountry,omitempty"` SrcMAC string `json:"src_mac"` Subsystem string `json:"subsystem"` UniqueAlertID string `json:"unique_alertid"` USGIP string `json:"usgip"` USGIPASN string `json:"usgipASN"` USGIPCountry string `json:"usgipCountry"` TxID FlexInt `json:"tx_id,omitempty"` DestIPGeo IPGeo `json:"dstipGeo"` SourceIPGeo IPGeo `json:"usgipGeo"` USGIPGeo IPGeo `json:"srcipGeo,omitempty"` }
type Anomaly ¶
type Anomaly struct { Datetime time.Time SourceName string SiteName string Anomaly string DeviceMAC string }
Anomaly is the reformatted data type that this library returns.
type Ap ¶
type Ap struct { SiteID string `json:"site_id"` O string `json:"o"` Oid string `json:"oid"` Ap string `json:"ap"` Time FlexInt `json:"time"` Datetime time.Time `json:"datetime"` Bytes FlexInt `json:"bytes"` Duration FlexInt `json:"duration"` WifiTxDropped FlexInt `json:"wifi_tx_dropped"` RxErrors FlexInt `json:"rx_errors"` RxDropped FlexInt `json:"rx_dropped"` RxFrags FlexInt `json:"rx_frags"` RxCrypts FlexInt `json:"rx_crypts"` TxPackets FlexInt `json:"tx_packets"` TxBytes FlexInt `json:"tx_bytes"` TxErrors FlexInt `json:"tx_errors"` TxDropped FlexInt `json:"tx_dropped"` TxRetries FlexInt `json:"tx_retries"` RxPackets FlexInt `json:"rx_packets"` RxBytes FlexInt `json:"rx_bytes"` UserRxDropped FlexInt `json:"user-rx_dropped"` GuestRxDropped FlexInt `json:"guest-rx_dropped"` UserRxErrors FlexInt `json:"user-rx_errors"` GuestRxErrors FlexInt `json:"guest-rx_errors"` UserRxPackets FlexInt `json:"user-rx_packets"` GuestRxPackets FlexInt `json:"guest-rx_packets"` UserRxBytes FlexInt `json:"user-rx_bytes"` GuestRxBytes FlexInt `json:"guest-rx_bytes"` UserRxCrypts FlexInt `json:"user-rx_crypts"` GuestRxCrypts FlexInt `json:"guest-rx_crypts"` UserRxFrags FlexInt `json:"user-rx_frags"` GuestRxFrags FlexInt `json:"guest-rx_frags"` UserTxPackets FlexInt `json:"user-tx_packets"` GuestTxPackets FlexInt `json:"guest-tx_packets"` UserTxBytes FlexInt `json:"user-tx_bytes"` GuestTxBytes FlexInt `json:"guest-tx_bytes"` UserTxErrors FlexInt `json:"user-tx_errors"` GuestTxErrors FlexInt `json:"guest-tx_errors"` UserTxDropped FlexInt `json:"user-tx_dropped"` GuestTxDropped FlexInt `json:"guest-tx_dropped"` UserTxRetries FlexInt `json:"user-tx_retries"` GuestTxRetries FlexInt `json:"guest-tx_retries"` MacFilterRejections FlexInt `json:"mac_filter_rejections"` UserMacFilterRejections FlexInt `json:"user-mac_filter_rejections"` GuestMacFilterRejections FlexInt `json:"guest-mac_filter_rejections"` WifiTxAttempts FlexInt `json:"wifi_tx_attempts"` UserWifiTxDropped FlexInt `json:"user-wifi_tx_dropped"` GuestWifiTxDropped FlexInt `json:"guest-wifi_tx_dropped"` UserWifiTxAttempts FlexInt `json:"user-wifi_tx_attempts"` GuestWifiTxAttempts FlexInt `json:"guest-wifi_tx_attempts"` }
Ap is a subtype of UAPStat to make unmarshalling of different controller versions possible.
type Client ¶
type Client struct { SourceName string `json:"-"` Anomalies int64 `json:"anomalies,omitempty"` ApMac string `json:"ap_mac"` ApName string `json:"-"` AssocTime int64 `json:"assoc_time"` Blocked bool `json:"blocked,omitempty"` Bssid string `json:"bssid"` BytesR int64 `json:"bytes-r"` Ccq int64 `json:"ccq"` Channel FlexInt `json:"channel"` DevCat FlexInt `json:"dev_cat"` DevFamily FlexInt `json:"dev_family"` DevID FlexInt `json:"dev_id"` DevVendor FlexInt `json:"dev_vendor,omitempty"` DhcpendTime FlexInt `json:"dhcpend_time,omitempty"` Satisfaction FlexInt `json:"satisfaction,omitempty"` Essid string `json:"essid"` FirstSeen int64 `json:"first_seen"` FixedIP string `json:"fixed_ip"` GwMac string `json:"gw_mac"` GwName string `json:"-"` Hostname string `json:"hostname"` ID string `json:"_id"` IP string `json:"ip"` IdleTime int64 `json:"idle_time"` Is11R FlexBool `json:"is_11r"` IsGuest FlexBool `json:"is_guest"` IsGuestByUAP FlexBool `json:"_is_guest_by_uap"` IsGuestByUGW FlexBool `json:"_is_guest_by_ugw"` IsGuestByUSW FlexBool `json:"_is_guest_by_usw"` IsWired FlexBool `json:"is_wired"` LastSeen int64 `json:"last_seen"` LastSeenByUAP int64 `json:"_last_seen_by_uap"` LastSeenByUGW int64 `json:"_last_seen_by_ugw"` LastSeenByUSW int64 `json:"_last_seen_by_usw"` LatestAssocTime int64 `json:"latest_assoc_time"` Mac string `json:"mac"` Name string `json:"name"` Network string `json:"network"` NetworkID string `json:"network_id"` Noise int64 `json:"noise"` Note string `json:"note"` Noted FlexBool `json:"noted"` OsClass FlexInt `json:"os_class"` OsName FlexInt `json:"os_name"` Oui string `json:"oui"` PowersaveEnabled FlexBool `json:"powersave_enabled"` QosPolicyApplied FlexBool `json:"qos_policy_applied"` Radio string `json:"radio"` RadioName string `json:"radio_name"` RadioProto string `json:"radio_proto"` RadioDescription string `json:"-"` RoamCount int64 `json:"roam_count"` Rssi int64 `json:"rssi"` RxBytes int64 `json:"rx_bytes"` RxBytesR int64 `json:"rx_bytes-r"` RxPackets int64 `json:"rx_packets"` RxRate int64 `json:"rx_rate"` Signal int64 `json:"signal"` SiteID string `json:"site_id"` SiteName string `json:"-"` SwDepth int `json:"sw_depth"` SwMac string `json:"sw_mac"` SwName string `json:"-"` SwPort FlexInt `json:"sw_port"` TxBytes int64 `json:"tx_bytes"` TxBytesR int64 `json:"tx_bytes-r"` TxPackets int64 `json:"tx_packets"` TxRetries int64 `json:"tx_retries"` TxPower int64 `json:"tx_power"` TxRate int64 `json:"tx_rate"` Uptime int64 `json:"uptime"` UptimeByUAP int64 `json:"_uptime_by_uap"` UptimeByUGW int64 `json:"_uptime_by_ugw"` UptimeByUSW int64 `json:"_uptime_by_usw"` UseFixedIP FlexBool `json:"use_fixedip"` UserGroupID string `json:"usergroup_id"` UserID string `json:"user_id"` Vlan FlexInt `json:"vlan"` WifiTxAttempts int64 `json:"wifi_tx_attempts"` WiredRxBytes int64 `json:"wired-rx_bytes"` WiredRxBytesR int64 `json:"wired-rx_bytes-r"` WiredRxPackets int64 `json:"wired-rx_packets"` WiredTxBytes int64 `json:"wired-tx_bytes"` WiredTxBytesR int64 `json:"wired-tx_bytes-r"` WiredTxPackets int64 `json:"wired-tx_packets"` }
Client defines all the data a connected-network client contains.
type Config ¶
type Config struct { User string Pass string URL string SSLCert [][]byte ErrorLog Logger DebugLog Logger Timeout time.Duration // how long to wait for replies, default: forever. VerifySSL bool }
Config is the data passed into our library. This configures things and allows us to connect to a controller and write log messages. Optional SSLCert is used for ssl cert pinning; provide the content of a PEM to validate the server's cert.
type ConfigNetwork ¶
ConfigNetwork comes from gateways.
type ConfigNetworkLan ¶
ConfigNetworkLan is part of a UXG, maybe others.
type DPIClient ¶
type DPIClient struct { Mac string `json:"mac"` RxBytes FlexInt `json:"rx_bytes"` TxBytes FlexInt `json:"tx_bytes"` RxPackets FlexInt `json:"rx_packets"` TxPackets FlexInt `json:"tx_packets"` }
DPIClient data is sometimes included in ByApp output.
type DPIData ¶
type DPIData struct { Cat int `json:"cat"` App int `json:"app"` RxBytes int64 `json:"rx_bytes"` TxBytes int64 `json:"tx_bytes"` RxPackets int64 `json:"rx_packets"` TxPackets int64 `json:"tx_packets"` Clients []*DPIClient `json:"clients,omitempty"` KnownClients FlexInt `json:"known_clients,omitempty"` }
DPIData is the DPI data in the DPI table.
type DPIMap ¶
DPIMap allows binding methods to the DPICat and DPIApps variables.
type DPITable ¶
type DPITable struct { SourceName string `json:"-"` SiteName string `json:"-"` Name string `json:"-"` MAC string `json:"mac"` ByCat []DPIData `json:"by_cat"` ByApp []DPIData `json:"by_app"` LastUpdated int64 `json:"last_updated"` }
DPITable contains DPI data for clients or sites, or .. things.
type Devices ¶
Devices contains a list of all the unifi devices from a controller. Contains Access points, security gateways and switches.
type DownlinkTable ¶
type DownlinkTable struct { PortIdx FlexInt `json:"port_idx"` Speed FlexInt `json:"speed"` FullDuplex FlexBool `json:"full_duplex"` Mac string `json:"mac"` }
DownlinkTable is part of a UXG and UDM output.
type EthernetOverrides ¶
type EthernetTable ¶
type Event ¶
type Event struct { IsAdmin FlexBool `json:"is_admin"` DestPort int `json:"dest_port"` SrcPort int `json:"src_port"` Bytes FlexInt `json:"bytes"` Duration FlexInt `json:"duration"` FlowID FlexInt `json:"flow_id"` InnerAlertGID FlexInt `json:"inner_alert_gid"` InnerAlertRev FlexInt `json:"inner_alert_rev"` InnerAlertSeverity FlexInt `json:"inner_alert_severity"` InnerAlertSignatureID FlexInt `json:"inner_alert_signature_id"` Channel FlexInt `json:"channel"` ChannelFrom FlexInt `json:"channel_from"` ChannelTo FlexInt `json:"channel_to"` Time int64 `json:"time"` Timestamp int64 `json:"timestamp"` Datetime time.Time `json:"datetime"` Admin string `json:"admin"` Ap string `json:"ap"` ApFrom string `json:"ap_from"` ApName string `json:"ap_name"` ApTo string `json:"ap_to"` AppProto string `json:"app_proto"` Catname string `json:"catname"` DestIP string `json:"dest_ip"` DstMAC string `json:"dst_mac"` EventType string `json:"event_type"` Guest string `json:"guest"` Gw string `json:"gw"` GwName string `json:"gw_name"` Host string `json:"host"` Hostname string `json:"hostname"` ID string `json:"_id"` IP string `json:"ip"` InIface string `json:"in_iface"` InnerAlertAction string `json:"inner_alert_action"` InnerAlertCategory string `json:"inner_alert_category"` InnerAlertSignature string `json:"inner_alert_signature"` Key string `json:"key"` Msg string `json:"msg"` Network string `json:"network"` Proto string `json:"proto"` Radio string `json:"radio"` RadioFrom string `json:"radio_from"` RadioTo string `json:"radio_to"` SiteID string `json:"site_id"` SiteName string `json:"-"` SourceName string `json:"-"` SrcIP string `json:"src_ip"` SrcMAC string `json:"src_mac"` SrcIPASN string `json:"srcipASN"` SrcIPCountry string `json:"srcipCountry"` SSID string `json:"ssid"` Subsystem string `json:"subsystem"` Sw string `json:"sw"` SwName string `json:"sw_name"` UniqueAlertID string `json:"unique_alertid"` User string `json:"user"` USGIP string `json:"usgip"` USGIPASN string `json:"usgipASN"` USGIPCountry string `json:"usgipCountry"` DestIPGeo IPGeo `json:"dstipGeo"` SourceIPGeo IPGeo `json:"srcipGeo"` USGIPGeo IPGeo `json:"usgipGeo"` }
Event describes a UniFi Event. API Path: /api/s/default/stat/event.
type FlexBool ¶
FlexBool provides a container and unmarshalling for fields that may be boolean or strings in the Unifi API.
func (*FlexBool) UnmarshalJSON ¶
UnmarshalJSON method converts armed/disarmed, yes/no, active/inactive or 0/1 to true/false. Really it converts ready, ok, up, t, armed, yes, active, enabled, 1, true to true. Anything else is false.
type FlexInt ¶
FlexInt provides a container and unmarshalling for fields that may be numbers or strings in the Unifi API.
func (*FlexInt) UnmarshalJSON ¶
UnmarshalJSON converts a string or number to an integer. Generally, do call this directly, it's used in the json interface.
type GeoInfo ¶
type GeoInfo struct { Accuracy FlexInt `json:"accuracy"` Address string `json:"address"` Asn FlexInt `json:"asn"` City string `json:"city"` ContinentCode string `json:"continent_code"` CountryCode string `json:"country_code"` CountryName string `json:"country_name"` IspName string `json:"isp_name"` IspOrganization string `json:"isp_organization"` Latitude FlexInt `json:"latitude"` Longitude FlexInt `json:"longitude"` Timezone string `json:"timezone"` }
GeoInfo is incuded with certain devices.
type Gw ¶
type Gw struct { SiteID string `json:"site_id"` O string `json:"o"` Oid string `json:"oid"` Gw string `json:"gw"` Time FlexInt `json:"time"` Datetime time.Time `json:"datetime"` Duration FlexInt `json:"duration"` WanRxPackets FlexInt `json:"wan-rx_packets"` WanRxBytes FlexInt `json:"wan-rx_bytes"` WanRxDropped FlexInt `json:"wan-rx_dropped"` WanTxPackets FlexInt `json:"wan-tx_packets"` WanTxBytes FlexInt `json:"wan-tx_bytes"` LanRxPackets FlexInt `json:"lan-rx_packets"` LanRxBytes FlexInt `json:"lan-rx_bytes"` LanTxPackets FlexInt `json:"lan-tx_packets"` LanTxBytes FlexInt `json:"lan-tx_bytes"` LanRxDropped FlexInt `json:"lan-rx_dropped"` WanRxErrors FlexInt `json:"wan-rx_errors,omitempty"` LanRxErrors FlexInt `json:"lan-rx_errors,omitempty"` }
Gw is a subtype of USGStat to make unmarshalling of different controller versions possible.
type IDS ¶
type IDS struct { Archived FlexBool `json:"archived"` DestPort int `json:"dest_port,omitempty"` SrcPort int `json:"src_port,omitempty"` FlowID int64 `json:"flow_id"` InnerAlertRev int64 `json:"inner_alert_rev"` InnerAlertSeverity int64 `json:"inner_alert_severity"` InnerAlertGID int64 `json:"inner_alert_gid"` InnerAlertSignatureID int64 `json:"inner_alert_signature_id"` Time int64 `json:"time"` Timestamp int64 `json:"timestamp"` Datetime time.Time `json:"datetime"` AppProto string `json:"app_proto,omitempty"` Catname string `json:"catname"` DestIP string `json:"dest_ip"` DstMAC string `json:"dst_mac"` DstIPASN string `json:"dstipASN"` DstIPCountry string `json:"dstipCountry"` EventType string `json:"event_type"` Host string `json:"host"` ID string `json:"_id"` InIface string `json:"in_iface"` InnerAlertAction string `json:"inner_alert_action"` InnerAlertCategory string `json:"inner_alert_category"` InnerAlertSignature string `json:"inner_alert_signature"` Key string `json:"key"` Msg string `json:"msg"` Proto string `json:"proto"` SiteID string `json:"site_id"` SiteName string `json:"-"` SourceName string `json:"-"` SrcIP string `json:"src_ip"` SrcIPASN string `json:"srcipASN"` SrcIPCountry string `json:"srcipCountry"` SrcMAC string `json:"src_mac"` Subsystem string `json:"subsystem"` UniqueAlertID string `json:"unique_alertid"` USGIP string `json:"usgip"` USGIPASN string `json:"usgipASN"` USGIPCountry string `json:"usgipCountry"` DestIPGeo IPGeo `json:"dstipGeo"` SourceIPGeo IPGeo `json:"srcipGeo"` USGIPGeo IPGeo `json:"usgipGeo"` }
IDS holds an Intrusion Prevention System Event.
type IPGeo ¶
type IPGeo struct { Asn int64 `json:"asn"` Latitude float64 `json:"latitude"` Longitude float64 `json:"longitude"` City string `json:"city"` ContinentCode string `json:"continent_code"` CountryCode string `json:"country_code"` CountryName string `json:"country_name"` Organization string `json:"organization"` }
IPGeo is part of the UniFi Event data. Each event may have up to three of these. One for source, one for dest and one for the USG location.
func (*IPGeo) UnmarshalJSON ¶
UnmarshalJSON is required because sometimes the unifi api returns an empty array instead of a struct filled with data.
type Logger ¶
type Logger func(msg string, fmt ...interface{})
Logger is a base type to deal with changing log outputs. Create a logger that matches this interface to capture debug and error logs.
type MacTable ¶
type MacTable struct { Age int64 `json:"age"` Authorized FlexBool `json:"authorized"` Hostname string `json:"hostname"` IP string `json:"ip"` LastReachable int64 `json:"lastReachable"` Mac string `json:"mac"` }
MacTable is a newer feature on some switched ports.
type Network ¶
type Network struct { DhcpdDNSEnabled FlexBool `json:"dhcpd_dns_enabled"` DhcpdEnabled FlexBool `json:"dhcpd_enabled"` DhcpdGatewayEnabled FlexBool `json:"dhcpd_gateway_enabled"` DhcpdIP1 string `json:"dhcpd_ip_1"` DhcpdLeasetime FlexInt `json:"dhcpd_leasetime"` DhcpRelayEnabled FlexBool `json:"dhcp_relay_enabled"` DhcpdTimeOffsetEnabled FlexBool `json:"dhcpd_time_offset_enabled"` DhcpGuardEnabled FlexBool `json:"dhcpguard_enabled"` DomainName string `json:"domain_name"` Enabled FlexBool `json:"enabled"` ID string `json:"_id"` IPSubnet string `json:"ip_subnet"` IsNat FlexBool `json:"is_nat"` Name string `json:"name"` Networkgroup string `json:"networkgroup"` Purpose string `json:"purpose"` SiteID string `json:"site_id"` Vlan FlexInt `json:"vlan"` VlanEnabled FlexBool `json:"vlan_enabled"` }
Network is metadata about a network managed by a UniFi controller.
type NetworkTable ¶
type NetworkTable []struct { ID string `json:"_id"` AttrNoDelete FlexBool `json:"attr_no_delete"` AttrHiddenID string `json:"attr_hidden_id"` Name string `json:"name"` SiteID string `json:"site_id"` VlanEnabled FlexBool `json:"vlan_enabled"` Purpose string `json:"purpose"` IPSubnet string `json:"ip_subnet"` Ipv6InterfaceType string `json:"ipv6_interface_type"` DomainName string `json:"domain_name"` IsNat FlexBool `json:"is_nat"` DhcpdEnabled FlexBool `json:"dhcpd_enabled"` DhcpdStart string `json:"dhcpd_start"` DhcpdStop string `json:"dhcpd_stop"` Dhcpdv6Enabled FlexBool `json:"dhcpdv6_enabled"` Ipv6RaEnabled FlexBool `json:"ipv6_ra_enabled"` LteLanEnabled FlexBool `json:"lte_lan_enabled"` AutoScaleEnabled FlexBool `json:"auto_scale_enabled"` Networkgroup string `json:"networkgroup"` DhcpdLeasetime FlexInt `json:"dhcpd_leasetime"` DhcpdDNSEnabled FlexBool `json:"dhcpd_dns_enabled"` DhcpdGatewayEnabled FlexBool `json:"dhcpd_gateway_enabled"` DhcpdTimeOffsetEnabled FlexBool `json:"dhcpd_time_offset_enabled"` Ipv6PdStart string `json:"ipv6_pd_start"` Ipv6PdStop string `json:"ipv6_pd_stop"` DhcpdDNS1 string `json:"dhcpd_dns_1"` DhcpdDNS2 string `json:"dhcpd_dns_2"` DhcpdDNS3 string `json:"dhcpd_dns_3"` DhcpdDNS4 string `json:"dhcpd_dns_4"` Enabled FlexBool `json:"enabled"` DhcpRelayEnabled FlexBool `json:"dhcp_relay_enabled"` Mac string `json:"mac"` IsGuest FlexBool `json:"is_guest"` IP string `json:"ip"` Up FlexBool `json:"up"` ActiveDhcpLeaseCount int `json:"active_dhcp_lease_count"` GatewayInterfaceName string `json:"gateway_interface_name"` DPIStatsTable *DPITable `json:"dpistats_table"` NumSta FlexInt `json:"num_sta"` RxBytes FlexInt `json:"rx_bytes"` RxPackets FlexInt `json:"rx_packets"` TxBytes FlexInt `json:"tx_bytes"` TxPackets FlexInt `json:"tx_packets"` }
NetworkTable is the list of networks on a gateway. Not all gateways have all features.
type Port ¶
type Port struct { AggregatedBy FlexBool `json:"aggregated_by"` Autoneg FlexBool `json:"autoneg,omitempty"` BytesR FlexInt `json:"bytes-r"` DNS []string `json:"dns,omitempty"` Dot1XMode string `json:"dot1x_mode"` Dot1XStatus string `json:"dot1x_status"` Enable FlexBool `json:"enable"` FlowctrlRx FlexBool `json:"flowctrl_rx"` FlowctrlTx FlexBool `json:"flowctrl_tx"` FullDuplex FlexBool `json:"full_duplex"` IP string `json:"ip,omitempty"` Ifname string `json:"ifname,omitempty"` IsUplink FlexBool `json:"is_uplink"` Mac string `json:"mac,omitempty"` MacTable []MacTable `json:"mac_table,omitempty"` Jumbo FlexBool `json:"jumbo,omitempty"` Masked FlexBool `json:"masked"` Media string `json:"media"` Name string `json:"name"` NetworkName string `json:"network_name,omitempty"` Netmask string `json:"netmask,omitempty"` NumPort int `json:"num_port,omitempty"` OpMode string `json:"op_mode"` PoeCaps FlexInt `json:"poe_caps"` PoeClass string `json:"poe_class,omitempty"` PoeCurrent FlexInt `json:"poe_current,omitempty"` PoeEnable FlexBool `json:"poe_enable,omitempty"` PoeGood FlexBool `json:"poe_good,omitempty"` PoeMode string `json:"poe_mode,omitempty"` PoePower FlexInt `json:"poe_power,omitempty"` PoeVoltage FlexInt `json:"poe_voltage,omitempty"` PortDelta PortDelta `json:"port_delta,omitempty"` PortIdx FlexInt `json:"port_idx"` PortPoe FlexBool `json:"port_poe"` PortconfID string `json:"portconf_id"` RxBroadcast FlexInt `json:"rx_broadcast"` RxBytes FlexInt `json:"rx_bytes"` RxBytesR FlexInt `json:"rx_bytes-r"` RxDropped FlexInt `json:"rx_dropped"` RxErrors FlexInt `json:"rx_errors"` RxMulticast FlexInt `json:"rx_multicast"` RxPackets FlexInt `json:"rx_packets"` RxRate FlexInt `json:"rx_rate,omitempty"` Satisfaction FlexInt `json:"satisfaction,omitempty"` SatisfactionReason FlexInt `json:"satisfaction_reason"` SFPCompliance string `json:"sfp_compliance"` SFPCurrent FlexInt `json:"sfp_current"` SFPFound FlexBool `json:"sfp_found"` SFPPart string `json:"sfp_part"` SFPRev string `json:"sfp_rev"` SFPRxfault FlexBool `json:"sfp_rxfault"` SFPRxpower FlexInt `json:"sfp_rxpower"` SFPSerial string `json:"sfp_serial"` SFPTemperature FlexInt `json:"sfp_temperature"` SFPTxfault FlexBool `json:"sfp_txfault"` SFPTxpower FlexInt `json:"sfp_txpower"` SFPVendor string `json:"sfp_vendor"` SFPVoltage FlexInt `json:"sfp_voltage"` Speed FlexInt `json:"speed"` SpeedCaps FlexInt `json:"speed_caps"` StpPathcost FlexInt `json:"stp_pathcost"` StpState string `json:"stp_state"` TxBroadcast FlexInt `json:"tx_broadcast"` TxBytes FlexInt `json:"tx_bytes"` TxBytesR FlexInt `json:"tx_bytes-r"` TxDropped FlexInt `json:"tx_dropped"` TxErrors FlexInt `json:"tx_errors"` TxMulticast FlexInt `json:"tx_multicast"` TxPackets FlexInt `json:"tx_packets"` TxRate FlexInt `json:"tx_rate,omitempty"` Type string `json:"type,omitempty"` Up FlexBool `json:"up"` }
Port is a physical connection on a USW or Gateway. Not every port has the same capabilities.
type PortDelta ¶
type PortDelta struct { TimeDelta FlexInt `json:"time_delta"` TimeDeltaActivity FlexInt `json:"time_delta_activity"` }
PortDelta is part of a Port.
type RadioTable ¶
type RadioTable []struct { AntennaGain FlexInt `json:"antenna_gain"` BuiltinAntGain FlexInt `json:"builtin_ant_gain"` BuiltinAntenna FlexBool `json:"builtin_antenna"` Channel FlexInt `json:"channel"` CurrentAntennaGain FlexInt `json:"current_antenna_gain"` HasDfs FlexBool `json:"has_dfs"` HasFccdfs FlexBool `json:"has_fccdfs"` HasHt160 FlexBool `json:"has_ht160"` Ht FlexInt `json:"ht"` Is11Ac FlexBool `json:"is_11ac"` MaxTxpower FlexInt `json:"max_txpower"` MinRssi FlexInt `json:"min_rssi,omitempty"` MinRssiEnabled FlexBool `json:"min_rssi_enabled"` MinTxpower FlexInt `json:"min_txpower"` Name string `json:"name"` Nss FlexInt `json:"nss"` Radio string `json:"radio"` RadioCaps FlexInt `json:"radio_caps"` SensLevelEnabled FlexBool `json:"sens_level_enabled"` TxPower FlexInt `json:"tx_power"` TxPowerMode string `json:"tx_power_mode"` VwireEnabled FlexBool `json:"vwire_enabled"` WlangroupID string `json:"wlangroup_id"` }
RadioTable is part of the data for UAPs and UDMs.
type RadioTableStats ¶
type RadioTableStats []struct { Name string `json:"name"` Channel FlexInt `json:"channel"` Radio string `json:"radio"` AstTxto interface{} `json:"ast_txto"` AstCst interface{} `json:"ast_cst"` AstBeXmit FlexInt `json:"ast_be_xmit"` CuTotal FlexInt `json:"cu_total"` CuSelfRx FlexInt `json:"cu_self_rx"` CuSelfTx FlexInt `json:"cu_self_tx"` Gain FlexInt `json:"gain"` Satisfaction FlexInt `json:"satisfaction"` State string `json:"state"` Extchannel FlexInt `json:"extchannel"` TxPower FlexInt `json:"tx_power"` TxPackets FlexInt `json:"tx_packets"` TxRetries FlexInt `json:"tx_retries"` NumSta FlexInt `json:"num_sta"` GuestNumSta FlexInt `json:"guest-num_sta"` UserNumSta FlexInt `json:"user-num_sta"` }
RadioTableStats is part of the data shared between UAP and UDM.
type RogueAP ¶
type RogueAP struct { SourceName string `json:"-"` SiteName string `json:"-"` ID string `json:"_id"` ApMac string `json:"ap_mac"` Bssid string `json:"bssid"` SiteID string `json:"site_id"` Age FlexInt `json:"age"` Band string `json:"band"` Bw FlexInt `json:"bw"` CenterFreq FlexInt `json:"center_freq"` Channel int `json:"channel"` Essid string `json:"essid"` Freq FlexInt `json:"freq"` IsAdhoc FlexBool `json:"is_adhoc"` IsRogue FlexBool `json:"is_rogue"` IsUbnt FlexBool `json:"is_ubnt"` LastSeen FlexInt `json:"last_seen"` Noise FlexInt `json:"noise"` Radio string `json:"radio"` RadioName string `json:"radio_name"` ReportTime FlexInt `json:"report_time"` Rssi FlexInt `json:"rssi"` RssiAge FlexInt `json:"rssi_age"` Security string `json:"security"` Signal FlexInt `json:"signal"` Oui string `json:"oui"` }
RogueAP are your neighbors access points.
type Site ¶
type Site struct { SourceName string `json:"-"` ID string `json:"_id"` Name string `json:"name"` Desc string `json:"desc"` SiteName string `json:"-"` AttrHiddenID string `json:"attr_hidden_id"` AttrNoDelete FlexBool `json:"attr_no_delete"` Health []struct { Subsystem string `json:"subsystem"` NumUser FlexInt `json:"num_user,omitempty"` NumGuest FlexInt `json:"num_guest,omitempty"` NumIot FlexInt `json:"num_iot,omitempty"` TxBytesR FlexInt `json:"tx_bytes-r,omitempty"` RxBytesR FlexInt `json:"rx_bytes-r,omitempty"` Status string `json:"status"` NumAp FlexInt `json:"num_ap,omitempty"` NumAdopted FlexInt `json:"num_adopted,omitempty"` NumDisabled FlexInt `json:"num_disabled,omitempty"` NumDisconnected FlexInt `json:"num_disconnected,omitempty"` NumPending FlexInt `json:"num_pending,omitempty"` NumGw FlexInt `json:"num_gw,omitempty"` WanIP string `json:"wan_ip,omitempty"` Gateways []string `json:"gateways,omitempty"` Netmask string `json:"netmask,omitempty"` Nameservers []string `json:"nameservers,omitempty"` NumSta FlexInt `json:"num_sta,omitempty"` GwMac string `json:"gw_mac,omitempty"` GwName string `json:"gw_name,omitempty"` GwSystemStats struct { CPU FlexInt `json:"cpu"` Mem FlexInt `json:"mem"` Uptime FlexInt `json:"uptime"` } `json:"gw_system-stats,omitempty"` GwVersion string `json:"gw_version,omitempty"` Latency FlexInt `json:"latency,omitempty"` Uptime FlexInt `json:"uptime,omitempty"` Drops FlexInt `json:"drops,omitempty"` XputUp FlexInt `json:"xput_up,omitempty"` XputDown FlexInt `json:"xput_down,omitempty"` SpeedtestStatus string `json:"speedtest_status,omitempty"` SpeedtestLastrun FlexInt `json:"speedtest_lastrun,omitempty"` SpeedtestPing FlexInt `json:"speedtest_ping,omitempty"` LanIP string `json:"lan_ip,omitempty"` NumSw FlexInt `json:"num_sw,omitempty"` RemoteUserEnabled FlexBool `json:"remote_user_enabled,omitempty"` RemoteUserNumActive FlexInt `json:"remote_user_num_active,omitempty"` RemoteUserNumInactive FlexInt `json:"remote_user_num_inactive,omitempty"` RemoteUserRxBytes FlexInt `json:"remote_user_rx_bytes,omitempty"` RemoteUserTxBytes FlexInt `json:"remote_user_tx_bytes,omitempty"` RemoteUserRxPackets FlexInt `json:"remote_user_rx_packets,omitempty"` RemoteUserTxPackets FlexInt `json:"remote_user_tx_packets,omitempty"` SiteToSiteEnabled FlexBool `json:"site_to_site_enabled,omitempty"` } `json:"health"` NumNewAlarms FlexInt `json:"num_new_alarms"` // contains filtered or unexported fields }
Site represents a site's data.
func (*Site) CancelMigrate ¶
CancelMigrate stops a migration in progress. Probably does not work on devices with built-in controllers like UDM & UXG.
func (*Site) Migrate ¶
Migrate sends a device to another controller's URL. Probably does not work on devices with built-in controllers like UDM & UXG.
func (*Site) SpeedTestStatus ¶
SpeedTestStatus returns the raw response for the status of a speed test. XXX: marshal the response into a data structure. This method will change!
type SpeedtestServer ¶
type SpeedtestStatus ¶
type SpeedtestStatus struct { Latency FlexInt `json:"latency"` Rundate FlexInt `json:"rundate"` Runtime FlexInt `json:"runtime"` ServerDesc string `json:"server_desc,omitempty"` Server *SpeedtestServer `json:"server"` SourceInterface string `json:"source_interface"` StatusDownload FlexInt `json:"status_download"` StatusPing FlexInt `json:"status_ping"` StatusSummary FlexInt `json:"status_summary"` StatusUpload FlexInt `json:"status_upload"` XputDownload FlexInt `json:"xput_download"` XputUpload FlexInt `json:"xput_upload"` }
SpeedtestStatus is the speed test info on a USG or UDM.
type Storage ¶
type Storage struct { MountPoint string `json:"mount_point"` Name string `json:"name"` Size FlexInt `json:"size"` Type string `json:"type"` Used FlexInt `json:"used"` }
Storage is hard drive into for a device with storage.
type Sw ¶
type Sw struct { SiteID string `json:"site_id"` O string `json:"o"` Oid string `json:"oid"` Sw string `json:"sw"` Time FlexInt `json:"time"` Datetime time.Time `json:"datetime"` RxPackets FlexInt `json:"rx_packets"` RxBytes FlexInt `json:"rx_bytes"` RxErrors FlexInt `json:"rx_errors"` RxDropped FlexInt `json:"rx_dropped"` RxCrypts FlexInt `json:"rx_crypts"` RxFrags FlexInt `json:"rx_frags"` TxPackets FlexInt `json:"tx_packets"` TxBytes FlexInt `json:"tx_bytes"` TxErrors FlexInt `json:"tx_errors"` TxDropped FlexInt `json:"tx_dropped"` TxRetries FlexInt `json:"tx_retries"` RxMulticast FlexInt `json:"rx_multicast"` RxBroadcast FlexInt `json:"rx_broadcast"` TxMulticast FlexInt `json:"tx_multicast"` TxBroadcast FlexInt `json:"tx_broadcast"` Bytes FlexInt `json:"bytes"` Duration FlexInt `json:"duration"` }
Sw is a subtype of USWStat to make unmarshalling of different controller versions possible.
type SwitchCaps ¶
type SysStats ¶
type SysStats struct { Loadavg1 FlexInt `json:"loadavg_1"` Loadavg15 FlexInt `json:"loadavg_15"` Loadavg5 FlexInt `json:"loadavg_5"` MemBuffer FlexInt `json:"mem_buffer"` MemTotal FlexInt `json:"mem_total"` MemUsed FlexInt `json:"mem_used"` }
SysStats is load info for a UDM, USG, USW.
type SystemStats ¶
type SystemStats struct { CPU FlexInt `json:"cpu"` Mem FlexInt `json:"mem"` Uptime FlexInt `json:"uptime"` // This exists on at least USG4, may others, maybe not. // {"Board (CPU)":"51 C","Board (PHY)":"51 C","CPU":"72 C","PHY":"77 C"} Temps map[string]string `json:"temps,omitempty"` }
SystemStats is system info for a UDM, USG, USW.
type Temperature ¶
type UAP ¶
type UAP struct { SourceName string `json:"-"` ID string `json:"_id"` Adopted FlexBool `json:"adopted"` AntennaTable []struct { Default FlexBool `json:"default"` ID FlexInt `json:"id"` Name string `json:"name"` Wifi0Gain FlexInt `json:"wifi0_gain"` Wifi1Gain FlexInt `json:"wifi1_gain"` } `json:"antenna_table"` BandsteeringMode string `json:"bandsteering_mode,omitempty"` BoardRev int `json:"board_rev"` Cfgversion string `json:"cfgversion"` ConfigNetwork struct { Type string `json:"type"` IP string `json:"ip"` } `json:"config_network"` CountrycodeTable []int `json:"countrycode_table"` EthernetTable []struct { Mac string `json:"mac"` NumPort FlexInt `json:"num_port"` Name string `json:"name"` } `json:"ethernet_table"` FwCaps int `json:"fw_caps"` HasEth1 FlexBool `json:"has_eth1"` HasSpeaker FlexBool `json:"has_speaker"` InformIP string `json:"inform_ip"` InformURL string `json:"inform_url"` IP string `json:"ip"` LedOverride string `json:"led_override"` Mac string `json:"mac"` MeshStaVapEnabled FlexBool `json:"mesh_sta_vap_enabled"` Model string `json:"model"` Name string `json:"name"` OutdoorModeOverride string `json:"outdoor_mode_override"` PortTable []Port `json:"port_table"` RadioTable RadioTable `json:"radio_table"` ScanRadioTable []interface{} `json:"scan_radio_table"` Serial string `json:"serial"` SiteID string `json:"site_id"` SiteName string `json:"-"` Type string `json:"type"` Version string `json:"version"` VwireTable []interface{} `json:"vwire_table"` WifiCaps int `json:"wifi_caps"` WlangroupIDNa string `json:"wlangroup_id_na"` WlangroupIDNg string `json:"wlangroup_id_ng"` RequiredVersion string `json:"required_version"` HwCaps int `json:"hw_caps"` Unsupported FlexBool `json:"unsupported"` UnsupportedReason FlexInt `json:"unsupported_reason"` SysErrorCaps int `json:"sys_error_caps"` HasFan FlexBool `json:"has_fan"` HasTemperature FlexBool `json:"has_temperature"` DeviceID string `json:"device_id"` State FlexInt `json:"state"` LastSeen FlexInt `json:"last_seen"` Upgradable FlexBool `json:"upgradable"` AdoptableWhenUpgraded FlexBool `json:"adoptable_when_upgraded"` Rollupgrade FlexBool `json:"rollupgrade"` KnownCfgversion string `json:"known_cfgversion"` Uptime FlexInt `json:"uptime"` UUptime FlexInt `json:"_uptime"` Locating FlexBool `json:"locating"` ConnectRequestIP string `json:"connect_request_ip"` ConnectRequestPort string `json:"connect_request_port"` SysStats SysStats `json:"sys_stats"` SystemStats SystemStats `json:"system-stats"` SSHSessionTable []interface{} `json:"ssh_session_table"` Scanning FlexBool `json:"scanning"` SpectrumScanning FlexBool `json:"spectrum_scanning"` GuestToken string `json:"guest_token"` Meshv3PeerMac string `json:"meshv3_peer_mac"` Satisfaction FlexInt `json:"satisfaction"` Isolated FlexBool `json:"isolated"` RadioTableStats RadioTableStats `json:"radio_table_stats"` Uplink struct { FullDuplex FlexBool `json:"full_duplex"` IP string `json:"ip"` Mac string `json:"mac"` MaxVlan int `json:"max_vlan"` Name string `json:"name"` Netmask string `json:"netmask"` NumPort int `json:"num_port"` RxBytes FlexInt `json:"rx_bytes"` RxDropped FlexInt `json:"rx_dropped"` RxErrors FlexInt `json:"rx_errors"` RxMulticast FlexInt `json:"rx_multicast"` RxPackets FlexInt `json:"rx_packets"` Speed FlexInt `json:"speed"` TxBytes FlexInt `json:"tx_bytes"` TxDropped FlexInt `json:"tx_dropped"` TxErrors FlexInt `json:"tx_errors"` TxPackets FlexInt `json:"tx_packets"` Up FlexBool `json:"up"` MaxSpeed FlexInt `json:"max_speed"` Type string `json:"type"` TxBytesR FlexInt `json:"tx_bytes-r"` RxBytesR FlexInt `json:"rx_bytes-r"` UplinkMac string `json:"uplink_mac"` UplinkRemotePort int `json:"uplink_remote_port"` } `json:"uplink"` VapTable VapTable `json:"vap_table"` DownlinkTable []struct { PortIdx int `json:"port_idx"` Speed int `json:"speed"` FullDuplex bool `json:"full_duplex"` Mac string `json:"mac"` } `json:"downlink_table,omitempty"` VwireVapTable []interface{} `json:"vwire_vap_table"` BytesD FlexInt `json:"bytes-d"` TxBytesD FlexInt `json:"tx_bytes-d"` RxBytesD FlexInt `json:"rx_bytes-d"` BytesR FlexInt `json:"bytes-r"` LastUplink struct { UplinkMac string `json:"uplink_mac"` UplinkRemotePort int `json:"uplink_remote_port"` } `json:"last_uplink"` Stat UAPStat `json:"stat"` TxBytes FlexInt `json:"tx_bytes"` RxBytes FlexInt `json:"rx_bytes"` Bytes FlexInt `json:"bytes"` VwireEnabled FlexBool `json:"vwireEnabled"` UplinkTable []interface{} `json:"uplink_table"` NumSta FlexInt `json:"num_sta"` UserNumSta FlexInt `json:"user-num_sta"` GuestNumSta FlexInt `json:"guest-num_sta"` TwoPhaseAdopt FlexBool `json:"two_phase_adopt,omitempty"` // contains filtered or unexported fields }
UAP represents all the data from the Ubiquiti Controller for a Unifi Access Point. This was auto generated then edited by hand to get all the data types right.
func (*UAP) CancelMigrate ¶
CancelMigrate stops an access point migration in progress.
type UAPStat ¶
type UAPStat struct {
*Ap
}
UAPStat holds the "stat" data for an access point. This is split out because of a JSON data format change from 5.10 to 5.11.
func (*UAPStat) UnmarshalJSON ¶
UnmarshalJSON unmarshalls 5.10 or 5.11 formatted Access Point Stat data.
type UDM ¶
type UDM struct { SourceName string `json:"-"` SiteID string `json:"site_id"` SiteName string `json:"-"` Mac string `json:"mac"` Adopted FlexBool `json:"adopted"` Serial string `json:"serial"` IP string `json:"ip"` Uptime FlexInt `json:"uptime"` Model string `json:"model"` Version string `json:"version"` Name string `json:"name"` Default FlexBool `json:"default"` Locating FlexBool `json:"locating"` Type string `json:"type"` Unsupported FlexBool `json:"unsupported"` UnsupportedReason FlexInt `json:"unsupported_reason"` DiscoveredVia string `json:"discovered_via"` AdoptIP string `json:"adopt_ip"` AdoptURL string `json:"adopt_url"` State FlexInt `json:"state"` AdoptStatus FlexInt `json:"adopt_status"` UpgradeState FlexInt `json:"upgrade_state"` LastSeen FlexInt `json:"last_seen"` AdoptableWhenUpgraded FlexBool `json:"adoptable_when_upgraded"` Cfgversion string `json:"cfgversion"` ConfigNetwork *ConfigNetwork `json:"config_network"` VwireTable []interface{} `json:"vwire_table"` Dot1XPortctrlEnabled FlexBool `json:"dot1x_portctrl_enabled"` JumboframeEnabled FlexBool `json:"jumboframe_enabled"` FlowctrlEnabled FlexBool `json:"flowctrl_enabled"` StpVersion string `json:"stp_version"` StpPriority FlexInt `json:"stp_priority"` PowerSourceCtrlEnabled FlexBool `json:"power_source_ctrl_enabled"` LicenseState string `json:"license_state"` ID string `json:"_id"` DeviceID string `json:"device_id"` AdoptState FlexInt `json:"adopt_state"` AdoptTries FlexInt `json:"adopt_tries"` AdoptManual FlexBool `json:"adopt_manual"` InformURL string `json:"inform_url"` InformIP string `json:"inform_ip"` RequiredVersion string `json:"required_version"` BoardRev FlexInt `json:"board_rev"` EthernetTable []*EthernetTable `json:"ethernet_table"` PortTable []Port `json:"port_table"` EthernetOverrides []*EthernetOverrides `json:"ethernet_overrides"` UsgCaps FlexInt `json:"usg_caps"` HasSpeaker FlexBool `json:"has_speaker"` HasEth1 FlexBool `json:"has_eth1"` FwCaps FlexInt `json:"fw_caps"` HwCaps FlexInt `json:"hw_caps"` WifiCaps FlexInt `json:"wifi_caps"` SwitchCaps struct { MaxMirrorSessions FlexInt `json:"max_mirror_sessions"` MaxAggregateSessions FlexInt `json:"max_aggregate_sessions"` } `json:"switch_caps"` HasFan FlexBool `json:"has_fan"` Temperatures []Temperature `json:"temperatures,omitempty"` RulesetInterfaces interface{} `json:"ruleset_interfaces"` /* struct { Br0 string `json:"br0"` Eth0 string `json:"eth0"` Eth1 string `json:"eth1"` Eth2 string `json:"eth2"` Eth3 string `json:"eth3"` Eth4 string `json:"eth4"` Eth5 string `json:"eth5"` Eth6 string `json:"eth6"` Eth7 string `json:"eth7"` Eth8 string `json:"eth8"` } */ KnownCfgversion string `json:"known_cfgversion"` SysStats SysStats `json:"sys_stats"` SystemStats SystemStats `json:"system-stats"` GuestToken string `json:"guest_token"` Overheating FlexBool `json:"overheating"` SpeedtestStatus SpeedtestStatus `json:"speedtest-status"` SpeedtestStatusSaved FlexBool `json:"speedtest-status-saved"` Wan1 Wan `json:"wan1"` Wan2 Wan `json:"wan2"` Uplink Uplink `json:"uplink"` ConnectRequestIP string `json:"connect_request_ip"` ConnectRequestPort string `json:"connect_request_port"` DownlinkTable []*DownlinkTable `json:"downlink_table"` WlangroupIDNa string `json:"wlangroup_id_na"` WlangroupIDNg string `json:"wlangroup_id_ng"` BandsteeringMode string `json:"bandsteering_mode"` RadioTable *RadioTable `json:"radio_table,omitempty"` RadioTableStats *RadioTableStats `json:"radio_table_stats,omitempty"` VapTable *VapTable `json:"vap_table"` XInformAuthkey string `json:"x_inform_authkey"` NetworkTable NetworkTable `json:"network_table"` PortOverrides []struct { PortIdx FlexInt `json:"port_idx"` PortconfID string `json:"portconf_id"` } `json:"port_overrides"` Stat UDMStat `json:"stat"` Storage []*Storage `json:"storage"` TxBytes FlexInt `json:"tx_bytes"` RxBytes FlexInt `json:"rx_bytes"` Bytes FlexInt `json:"bytes"` BytesD FlexInt `json:"bytes-d"` TxBytesD FlexInt `json:"tx_bytes-d"` RxBytesD FlexInt `json:"rx_bytes-d"` BytesR FlexInt `json:"bytes-r"` NumSta FlexInt `json:"num_sta"` // USG WlanNumSta FlexInt `json:"wlan-num_sta"` // UAP LanNumSta FlexInt `json:"lan-num_sta"` // USW UserWlanNumSta FlexInt `json:"user-wlan-num_sta"` // UAP UserLanNumSta FlexInt `json:"user-lan-num_sta"` // USW UserNumSta FlexInt `json:"user-num_sta"` // USG GuestWlanNumSta FlexInt `json:"guest-wlan-num_sta"` // UAP GuestLanNumSta FlexInt `json:"guest-lan-num_sta"` // USW GuestNumSta FlexInt `json:"guest-num_sta"` // USG NumDesktop FlexInt `json:"num_desktop"` // USG NumMobile FlexInt `json:"num_mobile"` // USG NumHandheld FlexInt `json:"num_handheld"` // USG // contains filtered or unexported fields }
UDM represents all the data from the Ubiquiti Controller for a Unifi Dream Machine. The UDM shares several structs/type-data with USW and USG.
type UDMStat ¶
UDMStat holds the "stat" data for a dream machine. A dream machine is a USG + USW + Controller.
type USG ¶
type USG struct { SourceName string `json:"-"` ID string `json:"_id"` Adopted FlexBool `json:"adopted"` Cfgversion string `json:"cfgversion"` ConfigNetwork *ConfigNetwork `json:"config_network"` EthernetTable []*EthernetTable `json:"ethernet_table"` FwCaps FlexInt `json:"fw_caps"` InformIP string `json:"inform_ip"` InformURL string `json:"inform_url"` IP string `json:"ip"` LedOverride string `json:"led_override"` LicenseState string `json:"license_state"` Mac string `json:"mac"` Model string `json:"model"` Name string `json:"name"` OutdoorModeOverride string `json:"outdoor_mode_override"` Serial string `json:"serial"` SiteID string `json:"site_id"` SiteName string `json:"-"` Type string `json:"type"` UsgCaps FlexInt `json:"usg_caps"` Version string `json:"version"` RequiredVersion string `json:"required_version"` EthernetOverrides []*EthernetOverrides `json:"ethernet_overrides"` HwCaps FlexInt `json:"hw_caps"` BoardRev FlexInt `json:"board_rev"` Unsupported FlexBool `json:"unsupported"` UnsupportedReason FlexInt `json:"unsupported_reason"` DeviceID string `json:"device_id"` State FlexInt `json:"state"` LastSeen FlexInt `json:"last_seen"` Upgradable FlexBool `json:"upgradable"` AdoptableWhenUpgraded FlexBool `json:"adoptable_when_upgraded"` Rollupgrade FlexBool `json:"rollupgrade"` KnownCfgversion string `json:"known_cfgversion"` Uptime FlexInt `json:"uptime"` Locating FlexBool `json:"locating"` ConnectRequestIP string `json:"connect_request_ip"` ConnectRequestPort string `json:"connect_request_port"` SysStats SysStats `json:"sys_stats"` Temperatures []Temperature `json:"temperatures,omitempty"` SystemStats SystemStats `json:"system-stats"` GuestToken string `json:"guest_token"` SpeedtestStatus SpeedtestStatus `json:"speedtest-status"` SpeedtestStatusSaved FlexBool `json:"speedtest-status-saved"` Wan1 Wan `json:"wan1"` Wan2 Wan `json:"wan2"` PortTable []*Port `json:"port_table"` NetworkTable NetworkTable `json:"network_table"` Uplink Uplink `json:"uplink"` Stat USGStat `json:"stat"` TxBytes FlexInt `json:"tx_bytes"` RxBytes FlexInt `json:"rx_bytes"` Bytes FlexInt `json:"bytes"` NumSta FlexInt `json:"num_sta"` UserNumSta FlexInt `json:"user-num_sta"` GuestNumSta FlexInt `json:"guest-num_sta"` NumDesktop FlexInt `json:"num_desktop"` NumMobile FlexInt `json:"num_mobile"` NumHandheld FlexInt `json:"num_handheld"` // contains filtered or unexported fields }
USG represents all the data from the Ubiquiti Controller for a Unifi Security Gateway.
func (*USG) CancelMigrate ¶
CancelMigrate stops a security gateway migration in progress.
type USGStat ¶
type USGStat struct {
*Gw
}
USGStat holds the "stat" data for a gateway. This is split out because of a JSON data format change from 5.10 to 5.11.
func (*USGStat) UnmarshalJSON ¶
UnmarshalJSON unmarshalls 5.10 or 5.11 formatted Gateway Stat data.
type USW ¶
type USW struct { SourceName string `json:"-"` SiteName string `json:"-"` ID string `json:"_id"` Adopted FlexBool `json:"adopted"` BoardRev FlexInt `json:"board_rev"` Cfgversion string `json:"cfgversion"` ConfigNetwork *ConfigNetwork `json:"config_network"` Dot1XPortctrlEnabled FlexBool `json:"dot1x_portctrl_enabled"` EthernetTable []*EthernetTable `json:"ethernet_table"` FlowctrlEnabled FlexBool `json:"flowctrl_enabled"` FwCaps FlexInt `json:"fw_caps"` HasFan FlexBool `json:"has_fan"` HasTemperature FlexBool `json:"has_temperature"` InformIP string `json:"inform_ip"` InformURL string `json:"inform_url"` IP string `json:"ip"` JumboframeEnabled FlexBool `json:"jumboframe_enabled"` LedOverride string `json:"led_override"` LicenseState string `json:"license_state"` Mac string `json:"mac"` Model string `json:"model"` Name string `json:"name"` OutdoorModeOverride string `json:"outdoor_mode_override"` PortOverrides []struct { Name string `json:"name,omitempty"` PoeMode string `json:"poe_mode,omitempty"` PortIdx FlexInt `json:"port_idx"` PortconfID string `json:"portconf_id"` } `json:"port_overrides"` PortTable []Port `json:"port_table"` Serial string `json:"serial"` SiteID string `json:"site_id"` StpPriority FlexInt `json:"stp_priority"` StpVersion string `json:"stp_version"` Type string `json:"type"` Version string `json:"version"` RequiredVersion string `json:"required_version"` SwitchCaps *SwitchCaps `json:"switch_caps"` HwCaps FlexInt `json:"hw_caps"` Unsupported FlexBool `json:"unsupported"` UnsupportedReason FlexInt `json:"unsupported_reason"` SysErrorCaps FlexInt `json:"sys_error_caps"` DeviceID string `json:"device_id"` State FlexInt `json:"state"` LastSeen FlexInt `json:"last_seen"` Upgradable FlexBool `json:"upgradable,omitempty"` AdoptableWhenUpgraded FlexBool `json:"adoptable_when_upgraded,omitempty"` Rollupgrade FlexBool `json:"rollupgrade,omitempty"` KnownCfgversion string `json:"known_cfgversion"` Uptime FlexInt `json:"uptime"` Locating FlexBool `json:"locating"` ConnectRequestIP string `json:"connect_request_ip"` ConnectRequestPort string `json:"connect_request_port"` SysStats SysStats `json:"sys_stats"` SystemStats SystemStats `json:"system-stats"` FanLevel FlexInt `json:"fan_level"` GeneralTemperature FlexInt `json:"general_temperature"` Overheating FlexBool `json:"overheating"` TotalMaxPower FlexInt `json:"total_max_power"` DownlinkTable []*DownlinkTable `json:"downlink_table"` Uplink Uplink `json:"uplink"` LastUplink struct { UplinkMac string `json:"uplink_mac"` } `json:"last_uplink"` UplinkDepth FlexInt `json:"uplink_depth"` Stat USWStat `json:"stat"` TxBytes FlexInt `json:"tx_bytes"` RxBytes FlexInt `json:"rx_bytes"` Bytes FlexInt `json:"bytes"` NumSta FlexInt `json:"num_sta"` UserNumSta FlexInt `json:"user-num_sta"` GuestNumSta FlexInt `json:"guest-num_sta"` // contains filtered or unexported fields }
USW represents all the data from the Ubiquiti Controller for a Unifi Switch.
func (*USW) CancelMigrate ¶
CancelMigrate stops a switch migration in progress.
func (*USW) PowerCycle ¶
PowerCycle shuts off the PoE and turns it back on for a specific port. Get a USW from the device list to call this.
type USWStat ¶
type USWStat struct {
*Sw
}
USWStat holds the "stat" data for a switch. This is split out because of a JSON data format change from 5.10 to 5.11.
func (*USWStat) UnmarshalJSON ¶
UnmarshalJSON unmarshalls 5.10 or 5.11 formatted Switch Stat data.
type UXG ¶
type UXG struct { SourceName string `json:"-"` SiteName string `json:"-"` ID string `json:"_id"` IP string `json:"ip"` Mac string `json:"mac"` Model string `json:"model"` ModelInLts FlexBool `json:"model_in_lts"` ModelInEol FlexBool `json:"model_in_eol"` Type string `json:"type"` Version string `json:"version"` Adopted FlexBool `json:"adopted"` SiteID string `json:"site_id"` Cfgversion string `json:"cfgversion"` SyslogKey string `json:"syslog_key"` ConfigNetwork *ConfigNetwork `json:"config_network"` SetupID string `json:"setup_id"` LicenseState string `json:"license_state"` ConfigNetworkLan *ConfigNetworkLan `json:"config_network_lan"` InformURL string `json:"inform_url"` InformIP string `json:"inform_ip"` RequiredVersion string `json:"required_version"` KernelVersion string `json:"kernel_version"` Architecture string `json:"architecture"` BoardRev FlexInt `json:"board_rev"` ManufacturerID FlexInt `json:"manufacturer_id"` Internet FlexBool `json:"internet"` ModelIncompatible FlexBool `json:"model_incompatible"` EthernetTable []*EthernetTable `json:"ethernet_table"` PortTable []Port `json:"port_table"` EthernetOverrides []*EthernetOverrides `json:"ethernet_overrides"` UsgCaps FlexInt `json:"usg_caps"` HasSpeaker FlexBool `json:"has_speaker"` HasEth1 FlexBool `json:"has_eth1"` FwCaps FlexInt `json:"fw_caps"` HwCaps FlexInt `json:"hw_caps"` WifiCaps FlexInt `json:"wifi_caps"` SwitchCaps *SwitchCaps `json:"switch_caps"` HasFan FlexBool `json:"has_fan"` HasTemperature FlexBool `json:"has_temperature"` Temperatures []Temperature `json:"temperatures"` Storage []*Storage `json:"storage"` RulesetInterfaces interface{} `json:"ruleset_interfaces"` ConnectedAt FlexInt `json:"connected_at"` ProvisionedAt FlexInt `json:"provisioned_at"` LedOverride string `json:"led_override"` LedOverrideColor string `json:"led_override_color"` LedOverrideColorBrightness FlexInt `json:"led_override_color_brightness"` OutdoorModeOverride string `json:"outdoor_mode_override"` LcmBrightnessOverride FlexBool `json:"lcm_brightness_override"` LcmIdleTimeoutOverride FlexBool `json:"lcm_idle_timeout_override"` Name string `json:"name"` Unsupported FlexBool `json:"unsupported"` UnsupportedReason FlexInt `json:"unsupported_reason"` Serial string `json:"serial"` HashID string `json:"hash_id"` TwoPhaseAdopt FlexBool `json:"two_phase_adopt"` DeviceID string `json:"device_id"` State FlexInt `json:"state"` StartDisconnectedMillis FlexInt `json:"start_disconnected_millis"` UpgradeState FlexInt `json:"upgrade_state"` StartConnectedMillis FlexInt `json:"start_connected_millis"` LastSeen FlexInt `json:"last_seen"` Uptime FlexInt `json:"uptime"` UnderscoreUptime FlexInt `json:"_uptime"` Locating FlexBool `json:"locating"` SysStats SysStats `json:"sys_stats"` SystemStats SystemStats `json:"system-stats"` GuestKicks FlexInt `json:"guest_kicks"` GuestToken string `json:"guest_token"` UptimeStats map[string]*UptimeStats `json:"uptime_stats"` Overheating FlexBool `json:"overheating"` GeoInfo map[string]*GeoInfo `json:"geo_info"` LedState *LedState `json:"led_state"` SpeedtestStatus SpeedtestStatus `json:"speedtest-status"` SpeedtestStatusSaved FlexBool `json:"speedtest-status-saved"` Wan1 Wan `json:"wan1"` Wan2 Wan `json:"wan2"` Uplink Uplink `json:"uplink"` DownlinkTable []*DownlinkTable `json:"downlink_table"` NetworkTable NetworkTable `json:"network_table"` KnownCfgversion string `json:"known_cfgversion"` ConnectRequestIP string `json:"connect_request_ip"` ConnectRequestPort string `json:"connect_request_port"` NextInterval FlexInt `json:"next_interval"` NextHeartbeatAt FlexInt `json:"next_heartbeat_at"` ConsideredLostAt FlexInt `json:"considered_lost_at"` Stat *UXGStat `json:"stat"` TxBytes FlexInt `json:"tx_bytes"` RxBytes FlexInt `json:"rx_bytes"` Bytes FlexInt `json:"bytes"` NumSta FlexInt `json:"num_sta"` WlanNumSta FlexInt `json:"wlan-num_sta"` LanNumSta FlexInt `json:"lan-num_sta"` UserWlanNumSta FlexInt `json:"user-wlan-num_sta"` UserLanNumSta FlexInt `json:"user-lan-num_sta"` UserNumSta FlexInt `json:"user-num_sta"` GuestWlanNumSta FlexInt `json:"guest-wlan-num_sta"` GuestLanNumSta FlexInt `json:"guest-lan-num_sta"` GuestNumSta FlexInt `json:"guest-num_sta"` NumDesktop FlexInt `json:"num_desktop"` NumMobile FlexInt `json:"num_mobile"` NumHandheld FlexInt `json:"num_handheld"` // contains filtered or unexported fields }
UXG represents all the data from the Ubiquiti Controller for a UniFi 10Gb Gateway. The UDM shares several structs/type-data with USW and USG.
func (*UXG) CancelMigrate ¶
CancelMigrate stops 10Gb gateway a migration in progress.
type Unifi ¶
Unifi is what you get in return for providing a password! Unifi represents a controller that you can make authenticated requests to. Use this to make additional requests for devices, clients or other custom data. Do not set the loggers to nil. Set them to DiscardLogs if you want no logs.
func NewUnifi ¶
NewUnifi creates a http.Client with authenticated cookies. Used to make additional, authenticated requests to the APIs. Start here.
func (*Unifi) GetAlarmsSite ¶
GetAlarmsSite retreives the Alarms for a single Site.
func (*Unifi) GetAnomalies ¶
GetAnomalies returns Anomalies for a list of Sites.
func (*Unifi) GetAnomaliesSite ¶
GetAnomaliesSite retreives the Anomalies for a single Site.
func (*Unifi) GetClients ¶
GetClients returns a response full of clients' data from the UniFi Controller.
func (*Unifi) GetClientsDPI ¶
GetClientsDPI garners dpi data for clients.
func (*Unifi) GetData ¶
GetData makes a unifi request and unmarshals the response into a provided pointer.
func (*Unifi) GetDevices ¶
GetDevices returns a response full of devices' data from the UniFi Controller.
func (*Unifi) GetEvents ¶
GetEvents returns a response full of UniFi Events for the last 1 hour from multiple sites.
func (*Unifi) GetIDS ¶
GetIDS returns Intrusion Detection Systems events for a list of Sites. timeRange may have a length of 0, 1 or 2. The first time is Start, the second is End. Events between start and end are returned. End defaults to time.Now().
func (*Unifi) GetIDSSite ¶
GetIDSSite retreives the Intrusion Detection System Data for a single Site. timeRange may have a length of 0, 1 or 2. The first time is Start, the second is End. Events between start and end are returned. End defaults to time.Now().
func (*Unifi) GetNetworks ¶
GetNetworks returns a response full of network data from the UniFi Controller.
func (*Unifi) GetRogueAPs ¶
GetRogueAPs returns RogueAPs for a list of Sites. Use GetRogueAPsSite if you want more control.
func (*Unifi) GetRogueAPsSite ¶
GetRogueAPsSite returns RogueAPs for a single Site.
func (*Unifi) GetServerData ¶
GetServerData sets the controller's version and UUID. Only call this if you previously called Login and suspect the controller version has changed.
func (*Unifi) GetSiteDPI ¶
GetSiteDPI garners dpi data for sites.
func (*Unifi) GetSiteEvents ¶
GetSiteEvents retrieves the last 1 hour's worth of events from a single site.
func (*Unifi) GetUsers ¶
GetUsers returns a response full of clients that connected to the UDM within the provided amount of time using the insight historical connection data set.
func (*Unifi) Login ¶
Login is a helper method. It can be called to grab a new authentication cookie.
func (*Unifi) PostJSON ¶
PostJSON uses a POST call and returns the raw JSON in the same way as GetData Use this if you want to change data via the REST API.
func (*Unifi) PutData ¶
PutData makes a unifi request and unmarshals the response into a provided pointer.
func (*Unifi) PutJSON ¶
PutJSON uses a PUT call and returns the raw JSON in the same way as GetData Use this if you want to change data via the REST API.
func (*Unifi) UniReq ¶
UniReq is a small helper function that adds an Accept header. Use this if you're unmarshalling UniFi data into custom types. And if you're doing that... sumbut a pull request with your new struct. :) This is a helper method that is exposed for convenience.
func (*Unifi) UniReqPost ¶
UniReqPost is the Post call equivalent to UniReq.
type Uplink ¶
type Uplink struct { BytesR FlexInt `json:"bytes-r"` Drops FlexInt `json:"drops"` Enable FlexBool `json:"enable,omitempty"` FullDuplex FlexBool `json:"full_duplex"` Gateways []string `json:"gateways,omitempty"` IP string `json:"ip"` Latency FlexInt `json:"latency"` Mac string `json:"mac,omitempty"` MaxSpeed FlexInt `json:"max_speed"` Name string `json:"name"` Nameservers []string `json:"nameservers"` Netmask string `json:"netmask"` NumPort FlexInt `json:"num_port"` Media string `json:"media"` PortIdx FlexInt `json:"port_idx"` RxBytes FlexInt `json:"rx_bytes"` RxBytesR FlexInt `json:"rx_bytes-r"` RxDropped FlexInt `json:"rx_dropped"` RxErrors FlexInt `json:"rx_errors"` RxMulticast FlexInt `json:"rx_multicast"` RxPackets FlexInt `json:"rx_packets"` RxRate FlexInt `json:"rx_rate"` Speed FlexInt `json:"speed"` SpeedtestLastrun FlexInt `json:"speedtest_lastrun,omitempty"` SpeedtestPing FlexInt `json:"speedtest_ping,omitempty"` SpeedtestStatus string `json:"speedtest_status,omitempty"` TxBytes FlexInt `json:"tx_bytes"` TxBytesR FlexInt `json:"tx_bytes-r"` TxDropped FlexInt `json:"tx_dropped"` TxErrors FlexInt `json:"tx_errors"` TxPackets FlexInt `json:"tx_packets"` TxRate FlexInt `json:"tx_rate"` Type string `json:"type"` Up FlexBool `json:"up"` Uptime FlexInt `json:"uptime"` XputDown FlexInt `json:"xput_down,omitempty"` XputUp FlexInt `json:"xput_up,omitempty"` }
Uplink is the Internet connection (or uplink) on a UniFi device.
type UptimeStats ¶
type UptimeStats struct { Availability FlexInt `json:"availability"` LatencyAverage FlexInt `json:"latency_average"` TimePeriod FlexInt `json:"time_period"` }
UptimeStats is incuded with certain devices.
type User ¶
type User struct { SourceName string `json:"-"` SiteName string `json:"-"` ID string `json:"_id"` Mac string `json:"mac"` SiteID string `json:"site_id"` Oui string `json:"oui,omitempty"` IsGuest bool `json:"is_guest"` FirstSeen FlexInt `json:"first_seen,omitempty"` LastSeen FlexInt `json:"last_seen,omitempty"` IsWired bool `json:"is_wired,omitempty"` Hostname string `json:"hostname,omitempty"` Duration FlexInt `json:"duration,omitempty"` TxBytes FlexInt `json:"tx_bytes,omitempty"` TxPackets FlexInt `json:"tx_packets,omitempty"` RxBytes FlexInt `json:"rx_bytes,omitempty"` RxPackets FlexInt `json:"rx_packets,omitempty"` WifiTxAttempts FlexInt `json:"wifi_tx_attempts,omitempty"` TxRetries FlexInt `json:"tx_retries,omitempty"` UsergroupID string `json:"usergroup_id,omitempty"` Name string `json:"name,omitempty"` Note string `json:"note,omitempty"` Noted FlexBool `json:"noted,omitempty"` Blocked FlexBool `json:"blocked,omitempty"` DevIDOverride FlexInt `json:"dev_id_override,omitempty"` FingerprintOverride FlexBool `json:"fingerprint_override,omitempty"` UseFixedIp FlexBool `json:"use_fixedip,omitempty"` FixedIp string `json:"fixed_ip,omitempty"` }
User defines the metadata available for previously connected clients.
type VapTable ¶
type VapTable []struct { AnomaliesBarChart struct { HighDNSLatency FlexInt `json:"high_dns_latency"` HighTCPLatency FlexInt `json:"high_tcp_latency"` HighTCPPacketLoss FlexInt `json:"high_tcp_packet_loss"` HighWifiLatency FlexInt `json:"high_wifi_latency"` HighWifiRetries FlexInt `json:"high_wifi_retries"` LowPhyRate FlexInt `json:"low_phy_rate"` PoorStreamEff FlexInt `json:"poor_stream_eff"` SleepyClient FlexInt `json:"sleepy_client"` StaArpTimeout FlexInt `json:"sta_arp_timeout"` StaDNSTimeout FlexInt `json:"sta_dns_timeout"` StaIPTimeout FlexInt `json:"sta_ip_timeout"` WeakSignal FlexInt `json:"weak_signal"` } `json:"anomalies_bar_chart"` AnomaliesBarChartNow struct { HighDNSLatency FlexInt `json:"high_dns_latency"` HighTCPLatency FlexInt `json:"high_tcp_latency"` HighTCPPacketLoss FlexInt `json:"high_tcp_packet_loss"` HighWifiLatency FlexInt `json:"high_wifi_latency"` HighWifiRetries FlexInt `json:"high_wifi_retries"` LowPhyRate FlexInt `json:"low_phy_rate"` PoorStreamEff FlexInt `json:"poor_stream_eff"` SleepyClient FlexInt `json:"sleepy_client"` StaArpTimeout FlexInt `json:"sta_arp_timeout"` StaDNSTimeout FlexInt `json:"sta_dns_timeout"` StaIPTimeout FlexInt `json:"sta_ip_timeout"` WeakSignal FlexInt `json:"weak_signal"` } `json:"anomalies_bar_chart_now"` ReasonsBarChart struct { PhyRate FlexInt `json:"phy_rate"` Signal FlexInt `json:"signal"` SleepyClient FlexInt `json:"sleepy_client"` StaArpTimeout FlexInt `json:"sta_arp_timeout"` StaDNSLatency FlexInt `json:"sta_dns_latency"` StaDNSTimeout FlexInt `json:"sta_dns_timeout"` StaIPTimeout FlexInt `json:"sta_ip_timeout"` StreamEff FlexInt `json:"stream_eff"` TCPLatency FlexInt `json:"tcp_latency"` TCPPacketLoss FlexInt `json:"tcp_packet_loss"` WifiLatency FlexInt `json:"wifi_latency"` WifiRetries FlexInt `json:"wifi_retries"` } `json:"reasons_bar_chart"` ReasonsBarChartNow struct { PhyRate FlexInt `json:"phy_rate"` Signal FlexInt `json:"signal"` SleepyClient FlexInt `json:"sleepy_client"` StaArpTimeout FlexInt `json:"sta_arp_timeout"` StaDNSLatency FlexInt `json:"sta_dns_latency"` StaDNSTimeout FlexInt `json:"sta_dns_timeout"` StaIPTimeout FlexInt `json:"sta_ip_timeout"` StreamEff FlexInt `json:"stream_eff"` TCPLatency FlexInt `json:"tcp_latency"` TCPPacketLoss FlexInt `json:"tcp_packet_loss"` WifiLatency FlexInt `json:"wifi_latency"` WifiRetries FlexInt `json:"wifi_retries"` } `json:"reasons_bar_chart_now"` RxTCPStats struct { Goodbytes FlexInt `json:"goodbytes"` LatAvg FlexInt `json:"lat_avg"` LatMax FlexInt `json:"lat_max"` LatMin FlexInt `json:"lat_min"` Stalls FlexInt `json:"stalls"` } `json:"rx_tcp_stats"` TxTCPStats struct { Goodbytes FlexInt `json:"goodbytes"` LatAvg FlexInt `json:"lat_avg"` LatMax FlexInt `json:"lat_max"` LatMin FlexInt `json:"lat_min"` Stalls FlexInt `json:"stalls"` } `json:"tx_tcp_stats"` WifiTxLatencyMov struct { Avg FlexInt `json:"avg"` Max FlexInt `json:"max"` Min FlexInt `json:"min"` Total FlexInt `json:"total"` TotalCount FlexInt `json:"total_count"` } `json:"wifi_tx_latency_mov"` ApMac string `json:"ap_mac"` AvgClientSignal FlexInt `json:"avg_client_signal"` Bssid string `json:"bssid"` Ccq int `json:"ccq"` Channel FlexInt `json:"channel"` DNSAvgLatency FlexInt `json:"dns_avg_latency"` Essid string `json:"essid"` Extchannel int `json:"extchannel"` ID string `json:"id"` IsGuest FlexBool `json:"is_guest"` IsWep FlexBool `json:"is_wep"` MacFilterRejections int `json:"mac_filter_rejections"` MapID interface{} `json:"map_id"` Name string `json:"name"` NumSatisfactionSta FlexInt `json:"num_satisfaction_sta"` NumSta int `json:"num_sta"` Radio string `json:"radio"` RadioName string `json:"radio_name"` RxBytes FlexInt `json:"rx_bytes"` RxCrypts FlexInt `json:"rx_crypts"` RxDropped FlexInt `json:"rx_dropped"` RxErrors FlexInt `json:"rx_errors"` RxFrags FlexInt `json:"rx_frags"` RxNwids FlexInt `json:"rx_nwids"` RxPackets FlexInt `json:"rx_packets"` Satisfaction FlexInt `json:"satisfaction"` SatisfactionNow FlexInt `json:"satisfaction_now"` SiteID string `json:"site_id"` State string `json:"state"` T string `json:"t"` TxBytes FlexInt `json:"tx_bytes"` TxCombinedRetries FlexInt `json:"tx_combined_retries"` TxDataMpduBytes FlexInt `json:"tx_data_mpdu_bytes"` TxDropped FlexInt `json:"tx_dropped"` TxErrors FlexInt `json:"tx_errors"` TxPackets FlexInt `json:"tx_packets"` TxPower FlexInt `json:"tx_power"` TxRetries FlexInt `json:"tx_retries"` TxRtsRetries FlexInt `json:"tx_rts_retries"` TxSuccess FlexInt `json:"tx_success"` TxTotal FlexInt `json:"tx_total"` Up FlexBool `json:"up"` Usage string `json:"usage"` WifiTxAttempts FlexInt `json:"wifi_tx_attempts"` WifiTxDropped FlexInt `json:"wifi_tx_dropped"` WlanconfID string `json:"wlanconf_id"` }
VapTable holds much of the UAP wireless data. Shared by UDM.
type Wan ¶
type Wan struct { Autoneg FlexBool `json:"autoneg"` BytesR FlexInt `json:"bytes-r"` DNS []string `json:"dns"` // may be deprecated Enable FlexBool `json:"enable"` FlowctrlRx FlexBool `json:"flowctrl_rx"` FlowctrlTx FlexBool `json:"flowctrl_tx"` FullDuplex FlexBool `json:"full_duplex"` Gateway string `json:"gateway"` // may be deprecated IP string `json:"ip"` Ifname string `json:"ifname"` IsUplink FlexBool `json:"is_uplink"` Mac string `json:"mac"` MaxSpeed FlexInt `json:"max_speed"` Media string `json:"media"` Name string `json:"name"` Netmask string `json:"netmask"` // may be deprecated NumPort int `json:"num_port"` PortIdx int `json:"port_idx"` PortPoe FlexBool `json:"port_poe"` RxBroadcast FlexInt `json:"rx_broadcast"` RxBytes FlexInt `json:"rx_bytes"` RxBytesR FlexInt `json:"rx_bytes-r"` RxDropped FlexInt `json:"rx_dropped"` RxErrors FlexInt `json:"rx_errors"` RxMulticast FlexInt `json:"rx_multicast"` RxPackets FlexInt `json:"rx_packets"` RxRate FlexInt `json:"rx_rate"` Speed FlexInt `json:"speed"` SpeedCaps FlexInt `json:"speed_caps"` TxBroadcast FlexInt `json:"tx_broadcast"` TxBytes FlexInt `json:"tx_bytes"` TxBytesR FlexInt `json:"tx_bytes-r"` TxDropped FlexInt `json:"tx_dropped"` TxErrors FlexInt `json:"tx_errors"` TxMulticast FlexInt `json:"tx_multicast"` TxPackets FlexInt `json:"tx_packets"` TxRate FlexInt `json:"tx_rate"` Type string `json:"type"` Up FlexBool `json:"up"` }
Wan is a Wan interface on a USG or UDM.