diff --git a/main.go b/main.go index 786ade7..99457b9 100644 --- a/main.go +++ b/main.go @@ -25,7 +25,7 @@ const ( // flags var configPath = flag.String("configPath", "config.json", "Path to config.json") var version = "development" -var delay time.Duration = 60 * time.Second +var delay time.Duration = 5 * time.Second var conf = loadconfig(*configPath) var ucDev = getDevices(conf.Unifi.UCDevicesURL) @@ -124,7 +124,7 @@ func processUcAPIs() ([]node, []link) { Uptime: time.Now().Add(-1 * time.Second * time.Duration(currentDevice.Uptime)).Format(iso8601), GatewayNexthop: currentJSONDevice.GatewayNexthop, Gateway: currentJSONDevice.Gateway, - Location: currentJSONDevice.Location, + Location: ¤tJSONDevice.Location, NodeID: strings.ReplaceAll(currentDevice.Mac, ":", ""), MAC: currentDevice.Mac, Adresses: []string{currentDevice.IP}, @@ -212,7 +212,7 @@ func processUNMSAPI() ([]node, []link) { Uptime: dev.Identification.Started.Format(iso8601), GatewayNexthop: currentDevice.GatewayNexthop, Gateway: currentDevice.Gateway, - Location: currentDevice.Location, + Location: ¤tDevice.Location, NodeID: strings.ReplaceAll(dev.Identification.MAC, ":", ""), MAC: dev.Identification.MAC, Adresses: getAddresses(details.IPAddress), @@ -513,39 +513,76 @@ func addmvDevices(d mvDevices) ([]node, []link) { mvNode.ClientsWifi5 = 0 mvNode.ClientsOther = 0 } - nodes = append(nodes, node{ - Firstseen: mvNode.Firstseen, - Lastseen: mvNode.Lastseen, - IsOnline: mvNode.IsOnline, - IsGateway: mvNode.IsGateway, - Clients: mvNode.Clients, - ClientsWifi24: mvNode.ClientsWifi24, - ClientsWifi5: mvNode.ClientsWifi5, - ClientsOther: mvNode.ClientsOther, - RootFSUsage: int(mvNode.RootfsUsage), - LoadAVG: mvNode.Loadavg, - MemoryUsage: mvNode.MemoryUsage, - Uptime: mvNode.Uptime, - GatewayNexthop: mvNode.GatewayNexthop, - Gateway: mvNode.Gateway, - Location: mvNode.Location, - NodeID: mvNode.NodeID, - MAC: mvNode.Mac, - Adresses: mvNode.Addresses, - Domain: mvNode.Domain, - Hostname: mvNode.Hostname, - Owner: mvNode.Owner, - Firmware: firmware{ - Base: mvNode.Firmware.Base, - Release: mvNode.Firmware.Release, - }, - Autoupdater: autoupdater{ - Enabled: mvNode.Autoupdater.Enabled, - Branch: mvNode.Autoupdater.Branch, - }, - NProc: mvNode.Nproc, - Model: mvNode.Model, - }) + if mvNode.Location.Latitude == 0 { + nodes = append(nodes, node{ + Firstseen: mvNode.Firstseen, + Lastseen: mvNode.Lastseen, + IsOnline: mvNode.IsOnline, + IsGateway: mvNode.IsGateway, + Clients: mvNode.Clients, + ClientsWifi24: mvNode.ClientsWifi24, + ClientsWifi5: mvNode.ClientsWifi5, + ClientsOther: mvNode.ClientsOther, + RootFSUsage: int(mvNode.RootfsUsage), + LoadAVG: mvNode.Loadavg, + MemoryUsage: mvNode.MemoryUsage, + Uptime: mvNode.Uptime, + GatewayNexthop: mvNode.GatewayNexthop, + Gateway: mvNode.Gateway, + NodeID: mvNode.NodeID, + MAC: mvNode.Mac, + Adresses: mvNode.Addresses, + Domain: mvNode.Domain, + Hostname: mvNode.Hostname, + Owner: mvNode.Owner, + Firmware: firmware{ + Base: mvNode.Firmware.Base, + Release: mvNode.Firmware.Release, + }, + Autoupdater: autoupdater{ + Enabled: mvNode.Autoupdater.Enabled, + Branch: mvNode.Autoupdater.Branch, + }, + NProc: mvNode.Nproc, + Model: mvNode.Model, + }) + } else { + if mvNode.Location.Latitude == 0 { + nodes = append(nodes, node{ + Firstseen: mvNode.Firstseen, + Lastseen: mvNode.Lastseen, + IsOnline: mvNode.IsOnline, + IsGateway: mvNode.IsGateway, + Clients: mvNode.Clients, + ClientsWifi24: mvNode.ClientsWifi24, + ClientsWifi5: mvNode.ClientsWifi5, + ClientsOther: mvNode.ClientsOther, + RootFSUsage: int(mvNode.RootfsUsage), + LoadAVG: mvNode.Loadavg, + MemoryUsage: mvNode.MemoryUsage, + Uptime: mvNode.Uptime, + GatewayNexthop: mvNode.GatewayNexthop, + Gateway: mvNode.Gateway, + Location: &mvNode.Location, + NodeID: mvNode.NodeID, + MAC: mvNode.Mac, + Adresses: mvNode.Addresses, + Domain: mvNode.Domain, + Hostname: mvNode.Hostname, + Owner: mvNode.Owner, + Firmware: firmware{ + Base: mvNode.Firmware.Base, + Release: mvNode.Firmware.Release, + }, + Autoupdater: autoupdater{ + Enabled: mvNode.Autoupdater.Enabled, + Branch: mvNode.Autoupdater.Branch, + }, + NProc: mvNode.Nproc, + Model: mvNode.Model, + }) + } + } } for i := range d.Links { mvNode := d.Links[i] diff --git a/types.go b/types.go index 5180998..961f0c6 100644 --- a/types.go +++ b/types.go @@ -111,10 +111,10 @@ type node struct { Uptime string `json:"uptime"` GatewayNexthop string `json:"gateway_nexthop"` Gateway string `json:"gateway"` - Location struct { + Location *struct { Longitude float64 `json:"longitude"` Latitude float64 `json:"latitude"` - } `json:"location"` + } `json:"location,omitempty"` NodeID string `json:"node_id"` MAC string `json:"mac"` Adresses []string `json:"addresses"`