|
@@ -4,10 +4,11 @@ import (
|
|
"encoding/json"
|
|
"encoding/json"
|
|
"errors"
|
|
"errors"
|
|
"io/ioutil"
|
|
"io/ioutil"
|
|
|
|
+ "log"
|
|
"net"
|
|
"net"
|
|
"net/http"
|
|
"net/http"
|
|
"strconv"
|
|
"strconv"
|
|
- "sync"
|
|
|
|
|
|
+ "strings"
|
|
"time"
|
|
"time"
|
|
)
|
|
)
|
|
|
|
|
|
@@ -18,7 +19,7 @@ func isJSON(s string) bool {
|
|
|
|
|
|
func tryGet(url string) (string, error) {
|
|
func tryGet(url string) (string, error) {
|
|
client := http.Client{
|
|
client := http.Client{
|
|
- Timeout: 5 * time.Second,
|
|
|
|
|
|
+ Timeout: 10 * time.Second,
|
|
}
|
|
}
|
|
|
|
|
|
resp, err := client.Get(url)
|
|
resp, err := client.Get(url)
|
|
@@ -39,16 +40,41 @@ func tryGet(url string) (string, error) {
|
|
}
|
|
}
|
|
|
|
|
|
//Check if the given ip address is HDS device, return its UUID if true
|
|
//Check if the given ip address is HDS device, return its UUID if true
|
|
-func tryGetHDSUUID(wg *sync.WaitGroup, ip string) (string, error) {
|
|
|
|
- defer wg.Done()
|
|
|
|
|
|
+func tryGetHDSUUID(ip string) (string, error) {
|
|
uuid, err := tryGet("http://" + ip + "/uuid")
|
|
uuid, err := tryGet("http://" + ip + "/uuid")
|
|
if err != nil {
|
|
if err != nil {
|
|
return "", err
|
|
return "", err
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ log.Println(ip, uuid)
|
|
return uuid, nil
|
|
return uuid, nil
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+//Get the HDS device info, return Device Name, Class and error if any
|
|
|
|
+func tryGetHDSInfo(ip string) (string, string, error) {
|
|
|
|
+ infoStatus, err := tryGet("http://" + ip + "/info")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return "", "", err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ infodata := strings.Split(infoStatus, "_")
|
|
|
|
+ if len(infodata) != 2 {
|
|
|
|
+ return "", "", errors.New("Invalid HDS info string")
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return infodata[0], infodata[1], nil
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//Get the HDS device status. Only use this when you are sure the device is an HDS device
|
|
|
|
+func getHDSStatus(ip string) (string, error) {
|
|
|
|
+ status, err := tryGet("http://" + ip + "/status")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return "", err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return status, nil
|
|
|
|
+}
|
|
|
|
+
|
|
func getLocalIP() string {
|
|
func getLocalIP() string {
|
|
addrs, err := net.InterfaceAddrs()
|
|
addrs, err := net.InterfaceAddrs()
|
|
if err != nil {
|
|
if err != nil {
|