2020-11-26 15:48:30 +08:00

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))
//}
}
}