140 lines
2.6 KiB
Go
140 lines
2.6 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"log"
|
|
"net"
|
|
"net/http"
|
|
"os"
|
|
"time"
|
|
|
|
"../cmd/httpclient"
|
|
"github.com/Unknwon/goconfig"
|
|
"github.com/fatih/structs"
|
|
)
|
|
|
|
func init() {
|
|
//
|
|
}
|
|
|
|
func getLocalIP() string {
|
|
addrs, err := net.InterfaceAddrs()
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
os.Exit(1)
|
|
}
|
|
for _, address := range addrs {
|
|
// 检查ip地址判断是否回环地址
|
|
if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
|
|
if ipnet.IP.To4() != nil {
|
|
//fmt.Println(ipnet.IP.String())
|
|
return ipnet.IP.String()
|
|
}
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func checkURL(list *httpclient.List) *httpclient.Status {
|
|
var s httpclient.Status
|
|
s.Area = list.Area
|
|
s.Id = list.Id
|
|
s.Ip = getLocalIP()
|
|
t1 := time.Now()
|
|
_, err := http.Get(list.Url)
|
|
if err != nil {
|
|
s.Status = false
|
|
fmt.Println(list.Url, err)
|
|
} else {
|
|
s.Status = true
|
|
}
|
|
|
|
//defer resp.Body.Close()
|
|
|
|
elapsed := time.Since(t1)
|
|
elapsedNan := elapsed.String()
|
|
s.Cost = elapsedNan
|
|
//s.Cost = strconv.FormatInt(int64(elapsedNan),10)
|
|
return &s
|
|
}
|
|
|
|
func main() {
|
|
var cfg *goconfig.ConfigFile
|
|
cpath, _ := os.Getwd()
|
|
config, err := goconfig.LoadConfigFile(cpath + "/config/client.ini") //加载配置文件
|
|
if err != nil {
|
|
log.Println("get config file error")
|
|
os.Exit(-1)
|
|
}
|
|
cfg = config
|
|
client, _ := cfg.GetSection("client")
|
|
u, _ := client["get_list_url"]
|
|
a, _ := client["area"]
|
|
|
|
//get list via get
|
|
resp, err := http.Get(u + a)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
defer resp.Body.Close()
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
|
|
var dat []httpclient.List
|
|
err = json.Unmarshal(body, &dat)
|
|
var vv []*httpclient.Status
|
|
|
|
if err != nil {
|
|
fmt.Println("error", err)
|
|
} else {
|
|
for _, v := range dat {
|
|
ss := checkURL(&v)
|
|
vv = append(vv, ss)
|
|
}
|
|
}
|
|
|
|
if vv != nil {
|
|
fmt.Printf("%+v", vv)
|
|
//postUrl := client["post_list_url"]
|
|
data := structs.Map(vv)
|
|
fmt.Println(data)
|
|
//bb := url.Values{data}
|
|
//
|
|
//body := strings.NewReader(bb.Encode())
|
|
//clt := http.Client{}
|
|
//resp, err := clt.Post(postUrl, "application/x-www-form-urlencoded", body)
|
|
//if err != nil {
|
|
// fmt.Println(err)
|
|
//} else {
|
|
// fmt.Println(resp)
|
|
//}
|
|
//b, err := json.Marshal(vv)
|
|
//if err != nil {
|
|
//log.Println("json format error:", err)
|
|
//return
|
|
//}
|
|
//
|
|
// body := bytes.NewBuffer(b)
|
|
// resp, err := http.Post(postUrl, contentType, body)
|
|
// if err != nil {
|
|
// log.Println("Post failed:", err)
|
|
// return
|
|
//}
|
|
//
|
|
// defer resp.Body.Close()
|
|
//
|
|
// content, err := ioutil.ReadAll(resp.Body)
|
|
// if err != nil {
|
|
// log.Println("Read failed:", err)
|
|
// return
|
|
//}
|
|
//
|
|
// log.Println("content:", string(content))
|
|
//}
|
|
}
|
|
}
|